java jsp实现登录验证码

工作中使用的java jsp实现的登录验证码。代码记录如下:

1.登录主页面(login.jsp)

pageEncoding="UTF-8"%>

登录

function refresh() {

//IE存在缓存,需要new Date()实现更换路径的作用

document.getElementById("image").src="../login/image.jsp?"+new Date();

}

用户名:

密码:

验证码:

2. 验证码生成jsp(image.jsp)

pageEncoding="UTF-8"%>

//获取随机颜色

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;

int 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(getRandColor(160, 200));

for (int i = 0; i < 100; 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[] codes = {"2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"};

String code = "";

for(int i=0;i<4;i++){

String str = codes[random.nextInt(codes.length)];

code += str;

// 将认证码显示到图象中

g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));

//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成

g.drawString(str, 13 * i + 6, 16);

}

// 将认证码存入SESSION

session.setAttribute("code", code);

// 图象生效

g.dispose();

// 输出图象到页面

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

//加上下面代码,运行时才不会出现java.lang.IllegalStateException: getOutputStream() has already been called ..........等异常

response.getOutputStream().flush();

response.getOutputStream().close();

response.flushBuffer();

out.clear();

out = pageContext.pushBody();

%>

3. 验证码检查页面(check.jsp:检查验证码是否输入正确)

pageEncoding="UTF-8"%>

验证

function same(){

loginForm.action = "login/login_login";

loginForm.submit();

}

function different(){

alert("请输入正确的验证码");

location.href = "login.jsp";

}

String userName = request.getParameter("userName");

String password = request.getParameter("userPwd");

%>

name="user.userName">

name="user.userPwd">

String rand = session.getAttribute("code").toString();

String input = request.getParameter("code");

if(rand.equals(input)){

out.println("");

}else{

out.print("");

}

%>

java 登录验证码_java jsp实现登录验证码相关推荐

  1. java 登陆短信验证码_Java实现短信验证码

    原标题:Java实现短信验证码 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 短信验证码 短信验证码都是调 ...

  2. java 验证码_java实现简单的验证码功能

    最近要做一个网站,要求实现验证码程序,经过不断调试,终于成功实现功能. 一.验证码生成类 生成验证码的话需要用到java的Graphics类库,画出一个验证码 废话不多说,直接上代码 package ...

  3. java加减法验证码_Java,Springboot 实现算法验证码加减法图形验证码,Kaptcha 实现加减法验证码...

    最近在做一个加减法验证码,记录下实现的过程. 通常Java实现验证码的工具会用到 kaptcha 这个工具包,但实现的验证码都是图形验证码,没有看到加法验证码,查询了相关资料,实现了加减法验证码,效果 ...

  4. java网页设计_java设计的登录页面

    package day01;//创建一个包 day01 import java.awt.Color; import java.awt.Component; import java.awt.Font; ...

  5. java 模拟登录微信_java 微信模拟登录错误,微信改版后不能使用

    这段代码是我java里面的代码 Map map = new HashMap(); //用户名 and 密码是正确的 map.put("username", username); / ...

  6. java邮箱发送验证码_java实现发送邮箱验证码——三步搞定java邮箱发送验证码

    工具:commons-email的jar包 第一步: 创建HtmlEmail实例对象 HtmlEmail email=new HtmlEmail();//创建一个HtmlEmail实例对象 设置邮箱的 ...

  7. java post 登陆_java HttpPost 密码登录和提交表单的案例

    记录java HttpPost 密码登录鉴权和提交表单的案例,使用的是httppost而不是HttpURLConnection httpost需要下面的依赖 org.apache.httpcompon ...

  8. java第一次上机_java第一次上机实验--验证码

    1 package javashiyan; 2 3 import java.awt.Color; 4 import java.awt.event.ActionEvent; 5 import java. ...

  9. java cookie实现登录状态_java无状态登录实现方式之ThreadLocal+Cookie

    注:本文提到的无状态指的是无需session完毕认证.取用户封装信息. 无状态的优点: 1.多应用单点登录:在多应用的时候仅仅需在登录server登录后.各子应用无需再次登录. 2.多server集群 ...

最新文章

  1. 手机如何看python代码_python如何绘制iPhone手机图案?(代码示例)
  2. Kotlin实战指南二:变量、常量、静态常量
  3. Java黑皮书课后题第4章:*4.7(顶点坐标)假设一个正五边形的中心位于(0,0),其中一个点位于0点位置。编写程序,提示用户输入正五边形外接圆的半径,显示p1到p5的5个坐标,保留两位小数
  4. 使用 010 Editor 分析二进制文件格式
  5. Javascript is based on signal thread
  6. vue设置html自动跳转路由器,vue2.0项目实现路由跳转的方法详解
  7. B8.软件工程与设计模式
  8. Java 并发编程之同步工具类 Exchanger
  9. 2.16_vertexgraph_顶点类和图类 (更新)
  10. 企业发展如何启动云的力量
  11. Wifi万能钥匙已经被淘汰了!Github这个开源工具太好用了!
  12. YOLOv4画PR曲线
  13. 怎么才能获取企业工商数据和企业联系方式?
  14. java web 登陆验证 弹窗_带你玩转JavaWeb开发之四 -如何用JS做登录注册页面校验
  15. vb msgbox各种图标样式及按钮样式
  16. Silvaco TCAD仿真学习Lesson1——Atlas仿真
  17. python 一元二次方程计算器
  18. 摸石头——NOde.js(四)
  19. 如何与ChatGPT交流,获得你想要的答案?正确提问是关键
  20. 如何在WPF中使用虚拟键盘

热门文章

  1. Procise使用举例
  2. 关于watch跟computed的基础用法
  3. Qualcomm messaging Interface(QMI)消息定义概述
  4. 图像质量评价及色彩处理
  5. 面向对象的六大原则之 —— 迪米特原则
  6. 0-1背包(贪心法)
  7. Quartus II 仿真
  8. 3、oauth2授权之自定义ClientDetailsService
  9. 用html做网站古诗春思,《春思》-五言古诗
  10. Linux下向GitHub 上传代码