2019独角兽企业重金招聘Python工程师标准>>>

一个生成验证码的Jsp页面

------------------------------------------------

页面 image.jsp

<%@ page contentType="image/jpeg" pageEncoding="gb2312"%>

<%@ page import="java.awt.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.awt.image.*"%>
<%@ page import="javax.imageio.*"%>

<%!Color getRandColor(int fc, int bc) {//给定范围获得随机颜色
  Random random = new Random();
  if (fc > 255)
   fc = 255;
  if (bc > 255)
   bc = 255;
  int r = fc + random.nextInt(bc - fc);
  int g = fc + random.nextInt(bc - fc);
  int b = fc + random.nextInt(bc - fc);
  return new Color(r, g, b);
 }%>
<%
 //设置页面不缓存
 response.setHeader("Pragma", "No-cache");
 response.setHeader("Cache-Control", "no-cache");
 response.setDateHeader("Expires", 0);

// 在内存中创建图象
 int width = 60, height = 20;
 BufferedImage image = new BufferedImage(width, height,
   BufferedImage.TYPE_INT_RGB);

// 获取图形上下文
 Graphics g = image.getGraphics();

//生成随机类
 Random random = new Random();

// 设定背景色
 g.setColor(getRandColor(200, 250));
 g.fillRect(0, 0, width, height);

//设定字体
 g.setFont(new Font("Times New Roman", Font.PLAIN, 18));

//画边框
 //g.setColor(new Color());
 //g.drawRect(0,0,width-1,height-1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
 g.setColor(getRandColor(160, 200));
 for (int i = 0; i < 155; i++) {
  int x = random.nextInt(width);
  int y = random.nextInt(height);
  int xl = random.nextInt(12);
  int yl = random.nextInt(12);
  g.drawLine(x, y, x + xl, y + yl);
 }

// 取随机产生的认证码(4位数字)
 String sRand = "";
 for (int i = 0; i < 4; i++) {
  String rand = String.valueOf(random.nextInt(10));
  sRand += rand;
  // 将认证码显示到图象中
  g.setColor(new Color(20 + random.nextInt(110), 20 + random
  .nextInt(110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
  g.drawString(rand, 13 * i + 6, 16);
 }

// 将认证码存入SESSION
 session.setAttribute("rand", sRand);

// 图象生效
 g.dispose();

// 输出图象到页面

ImageIO.write(image, "JPEG", response.getOutputStream());

out.clear();
 out = pageContext.pushBody();
%>

response.setHeader("Cache-Control", "no-cache");
 response.setDateHeader("Expires", 0);

// 在内存中创建图象
 int width = 60, height = 20;
 BufferedImage image = new BufferedImage(width, height,
   BufferedImage.TYPE_INT_RGB);

// 获取图形上下文
 Graphics g = image.getGraphics();

//生成随机类
 Random random = new Random();

// 设定背景色
 g.setColor(getRandColor(200, 250));
 g.fillRect(0, 0, width, height);

//设定字体
 g.setFont(new Font("Times New Roman", Font.PLAIN, 18));

//画边框
 //g.setColor(new Color());
 //g.drawRect(0,0,width-1,height-1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
 g.setColor(getRandColor(160, 200));
 for (int i = 0; i < 155; i++) {
  int x = random.nextInt(width);
  int y = random.nextInt(height);
  int xl = random.nextInt(12);
  int yl = random.nextInt(12);
  g.drawLine(x, y, x + xl, y + yl);
 }

// 取随机产生的认证码(4位数字)
 String sRand = "";
 for (int i = 0; i < 4; i++) {
  String rand = String.valueOf(random.nextInt(10));
  sRand += rand;
  // 将认证码显示到图象中
  g.setColor(new Color(20 + random.nextInt(110), 20 + random
  .nextInt(110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
  g.drawString(rand, 13 * i + 6, 16);
 }

// 将认证码存入SESSION
 session.setAttribute("rand", sRand);

// 图象生效
 g.dispose();

// 输出图象到页面

ImageIO.write(image, "JPEG", response.getOutputStream());

out.clear();
 out = pageContext.pushBody();
>

Random random = new Random();
  if (fc > 255)
   fc = 255;
  if (bc > 255)
   bc = 255;
  int r = fc + random.nextInt(bc - fc);
  int g = fc + random.nextInt(bc - fc);
  int b = fc + random.nextInt(bc - fc);
  return new Color(r, g, b);
 >
 //设置页面不缓存
 response.setHeader("Pragma", "No-cache");
 response.setHeader("Cache-Control", "no-cache");
 response.setDateHeader("Expires", 0);

// 在内存中创建图象
 int width = 60, height = 20;
 BufferedImage image = new BufferedImage(width, height,
   BufferedImage.TYPE_INT_RGB);

// 获取图形上下文
 Graphics g = image.getGraphics();

//生成随机类
 Random random = new Random();

// 设定背景色
 g.setColor(getRandColor(200, 250));
 g.fillRect(0, 0, width, height);

//设定字体
 g.setFont(new Font("Times New Roman", Font.PLAIN, 18));

//画边框
 //g.setColor(new Color());
 //g.drawRect(0,0,width-1,height-1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
 g.setColor(getRandColor(160, 200));
 for (int i = 0; i < 155; i++) {
  int x = random.nextInt(width);
  int y = random.nextInt(height);
  int xl = random.nextInt(12);
  int yl = random.nextInt(12);
  g.drawLine(x, y, x + xl, y + yl);
 }

// 取随机产生的认证码(4位数字)
 String sRand = "";
 for (int i = 0; i < 4; i++) {
  String rand = String.valueOf(random.nextInt(10));
  sRand += rand;
  // 将认证码显示到图象中
  g.setColor(new Color(20 + random.nextInt(110), 20 + random
  .nextInt(110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
  g.drawString(rand, 13 * i + 6, 16);
 }

// 将认证码存入SESSION
 session.setAttribute("rand", sRand);

// 图象生效
 g.dispose();

// 输出图象到页面

ImageIO.write(image, "JPEG", response.getOutputStream());

out.clear();
 out = pageContext.pushBody();
>
----------------------------------------

在需要加入验证码的页面使用Img标签将此页面导入 例:

-----------------------------------------

页面 login.jsp

用户名:

密  码:

验证码://注意这里的路径 是image.jsp页面的路径

-----------------------------------

Action中获取 验证码信息

例:

HttpSession session = request.getSession();
  String rand = session.getAttribute("rand").toString();//获取image.jsp页面生成的验证码

String validate= request.getParameter("validate");//获取用户输入的验证码信息

之后就可以进行比较了........

原文链接: http://www.dlog.cn/nicholascoder/diary/8724

转载于:https://my.oschina.net/moroseyu/blog/51466

一个生成验证码的Jsp页面相关推荐

  1. captcha.js一个生成验证码的插件,使用js和canvas生成

    一.captcha`captcha.js`是一个生成验证码的插件,使用js和canvas生成的,确保后端服务被暴力攻击,简单判断人机以及系统的安全性,体积小,功能多,支持配置. 验证码插件内容,包含1 ...

  2. java实现动态验证码源代码——jsp页面

    我们通常在其他网站注册或者登陆的时候会发现一个很高大上的验证码,那么怎么用java代码实现呢?下面我给大家贴一下我写的方法: 此文章是写的前台jsp页面的代码: <%@ page languag ...

  3. php怎么构造一个验证码,PHP封装一个生成验证码的函数

    整体的思路: 1.准备画布 2.生成颜色 3.生成的字符范围 4.开始写字 5.插入干扰线(点) 6.指定输出的类型 7.准备输出图片 8.销毁 // 生成随机验证码的方法 function veri ...

  4. java实现动态验证码源代码——绘制验证码的jsp

    接着上一篇的前台jsp页面,我们单独写一个绘制验证码的jsp页面: <%@ page contentType="image/jpeg"import="java.aw ...

  5. htmlunit+quartz定时抓取博文并生成jsp页面

    前言 分析网页 页码分析 文章链接分析 文章内容分析 io流生成jsp页面 squarz设置定时抓取 前言 看视频看的累了 写写博文~ 很久以前就想有个自己的博客.csdn很好,可是我不是专家啊,还是 ...

  6. 最基本的JSP页面的生成方法-Eclipse

    文章目录 前言 一.JSP是什么? 二.创建步骤 1.创建动态Web项目 2.创建Jsp文件 3.启动服务器并部署项目 总结 前言 晚生初识Javaee,拙作记录eclipse生成最基本jsp页面的方 ...

  7. java生成验证码登录,生成验证码

    这里写了一个生成验证码的demo 前台可以访问该servlet页面显示验证码 验证码 后台存的session名称为vCode 判断验证码是否正确时可以直接调用 前台通过 这里你就自己引入jq吧 < ...

  8. 使用jfreechart在jsp页面柱状图统计

    最近做项目,做了一个报表统计柱状图.觉得挺好的,记录一下. 项目使用的strus1+spring+ibatis 具体代码如下: 以下Java代码被注释掉的是绘制柱形图.另一种是折线图,具体思路一样. ...

  9. 小白教你用Java生成验证码

    验证码生成 效果 一,生成验证码 二,页面收到验证码 三,验证验证码是否填写正确 效果 点击验证码可切换 给出提示 一,生成验证码 package servlet;import java.io.IOE ...

最新文章

  1. Codeforces 338D 对线性同余方程组的一点理解
  2. python之模块base64
  3. LeetCode实战:字符串转换整数 (atoi)
  4. 不属于JAVA类中的变量_在Java中,不属于整数类型变量的是( )。_学小易找答案...
  5. 定制安装操作系统(二)
  6. python抓取中文网页乱码
  7. 带着canvas去流浪系列之四 绘制散点图
  8. SpringBoot-拦截器、过滤器、监听器
  9. 多出去面试,好处多多!
  10. 倍福TwinCAT软件安装及注意事项
  11. 小米升鸿蒙系统,小米11升级鸿蒙系统
  12. python实现读取并显示图片的两种方法
  13. 10种受欢迎的前后端相关开发工具
  14. xp启用计算机共享打印机,xp系统怎么共享打印机|win7怎么连接xp共享打印机
  15. PHP下载远程图片的几种方法总结
  16. WAP中利用截取手机号码达到自动登入的一段源码(转)
  17. 频域串联滞后校正matlab,基于MATLAB的串联超前校正、滞后校正和串联滞后-超前校正设计.pdf...
  18. 软件定义网络(PART 3)
  19. CFD冲蚀模拟的一些理论
  20. NIT 股市风云 按位与运算 F. 休赛季的引援#2

热门文章

  1. python顺序查找的递归算法_Python实现查找算法
  2. java在底层捕获异常_Java正确捕获异常的真实类
  3. rust怎么造双层_DIY双层电路板 制作详解
  4. java如何写ajax,java,jq,ajax写分页
  5. Hessian Matrix
  6. 徐州工程学院计算机报名,2019年3月江苏徐州工程学院计算机等级考试报名时间...
  7. 关于NLP相关技术全部在这里:预训练模型、信息抽取、文本生成、知识图谱、对话系统...
  8. Unet实现文档图像去噪、去水印
  9. mysql数据库的笔试题_MySQL数据库常见面试题
  10. 全志JAVA_android 全志a10(2.3.4)开发1(编译环境搭建)