java 登录验证码_java jsp实现登录验证码
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实现登录验证码相关推荐
- java 登陆短信验证码_Java实现短信验证码
原标题:Java实现短信验证码 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 短信验证码 短信验证码都是调 ...
- java 验证码_java实现简单的验证码功能
最近要做一个网站,要求实现验证码程序,经过不断调试,终于成功实现功能. 一.验证码生成类 生成验证码的话需要用到java的Graphics类库,画出一个验证码 废话不多说,直接上代码 package ...
- java加减法验证码_Java,Springboot 实现算法验证码加减法图形验证码,Kaptcha 实现加减法验证码...
最近在做一个加减法验证码,记录下实现的过程. 通常Java实现验证码的工具会用到 kaptcha 这个工具包,但实现的验证码都是图形验证码,没有看到加法验证码,查询了相关资料,实现了加减法验证码,效果 ...
- java网页设计_java设计的登录页面
package day01;//创建一个包 day01 import java.awt.Color; import java.awt.Component; import java.awt.Font; ...
- java 模拟登录微信_java 微信模拟登录错误,微信改版后不能使用
这段代码是我java里面的代码 Map map = new HashMap(); //用户名 and 密码是正确的 map.put("username", username); / ...
- java邮箱发送验证码_java实现发送邮箱验证码——三步搞定java邮箱发送验证码
工具:commons-email的jar包 第一步: 创建HtmlEmail实例对象 HtmlEmail email=new HtmlEmail();//创建一个HtmlEmail实例对象 设置邮箱的 ...
- java post 登陆_java HttpPost 密码登录和提交表单的案例
记录java HttpPost 密码登录鉴权和提交表单的案例,使用的是httppost而不是HttpURLConnection httpost需要下面的依赖 org.apache.httpcompon ...
- java第一次上机_java第一次上机实验--验证码
1 package javashiyan; 2 3 import java.awt.Color; 4 import java.awt.event.ActionEvent; 5 import java. ...
- java cookie实现登录状态_java无状态登录实现方式之ThreadLocal+Cookie
注:本文提到的无状态指的是无需session完毕认证.取用户封装信息. 无状态的优点: 1.多应用单点登录:在多应用的时候仅仅需在登录server登录后.各子应用无需再次登录. 2.多server集群 ...
最新文章
- 手机如何看python代码_python如何绘制iPhone手机图案?(代码示例)
- Kotlin实战指南二:变量、常量、静态常量
- Java黑皮书课后题第4章:*4.7(顶点坐标)假设一个正五边形的中心位于(0,0),其中一个点位于0点位置。编写程序,提示用户输入正五边形外接圆的半径,显示p1到p5的5个坐标,保留两位小数
- 使用 010 Editor 分析二进制文件格式
- Javascript is based on signal thread
- vue设置html自动跳转路由器,vue2.0项目实现路由跳转的方法详解
- B8.软件工程与设计模式
- Java 并发编程之同步工具类 Exchanger
- 2.16_vertexgraph_顶点类和图类 (更新)
- 企业发展如何启动云的力量
- Wifi万能钥匙已经被淘汰了!Github这个开源工具太好用了!
- YOLOv4画PR曲线
- 怎么才能获取企业工商数据和企业联系方式?
- java web 登陆验证 弹窗_带你玩转JavaWeb开发之四 -如何用JS做登录注册页面校验
- vb msgbox各种图标样式及按钮样式
- Silvaco TCAD仿真学习Lesson1——Atlas仿真
- python 一元二次方程计算器
- 摸石头——NOde.js(四)
- 如何与ChatGPT交流,获得你想要的答案?正确提问是关键
- 如何在WPF中使用虚拟键盘