【Servlet】实现简单的验证码生成与验证
来源:互联网 发布:leetcode面试题js 编辑:程序博客网 时间:2024/05/20 08:24
简单的四位数字验证码生成,带看不清刷新验证密码的功能
登陆界面:
验证码:<input type="text" name="loginCode" id="loginCode" />
<img src="code.do" id="codeImage" style="width:80px;height:20px">
<input type="button" id = "getCode" value="看不清" onclick="button_onclick()" />
<br/>
//设置了图片大小,添加了刷新图片的button
JavaScript:
<script type="text/javascript">
function button_onclick(){
var src = "code.do/" + Math.random();
document.getElementById("codeImage").src = src;
}
</script>
//实现图片刷新功能,通过添加随机数生成不同的请求
web.xml:servlet-mapping这样设置
<servlet-mapping>
<servlet-name>code</servlet-name>
<url-pattern>/code.do/*</url-pattern>
</servlet-mapping>
生成验证码的Servlet:
public class Code extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/jpeg");
BufferedImage image = new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.BLACK);
int h = 20;
int w = 80;
g.fillRect(0, 0, w, h);
g.setColor(Color.BLUE);
g.drawRect(1, 1, 78, 18);
String code = "";
Random r = new Random();
for(int i = 0; i < 4; i++){
int a = r.nextInt(9);
code += a;
}
HttpSession hs = request.getSession();
hs.setAttribute("code", code);//将随机生成的4位验证码存入会话
g.setColor(RandomColor.randomColor());
g.drawString(code, 25, 15);
//随机十条线
for(int i = 0; i < 10; i++){
int x = r.nextInt(w);
int y = r.nextInt(h);
int x1 = r.nextInt(12);
int y1 = r.nextInt(12);
g.setColor(RandomColor.randomColor());
g.drawLine(x, y, x + x1, y + y1);
}
//设置网页立刻过期
response.setDateHeader( "expries" , -1 );
response.setHeader("cache-control" , "no-cache");
response.setHeader("Pragma" , "no-cache");
//将image写给浏览器
ImageIO.write( image , "jpg" , response.getOutputStream() );
}
}
生成随机颜色的辅助类:
public class RandomColor {
public static Color randomColor(){
int r = 0;
int b = 0;
int g = 0;
Random random = new Random();
r = random.nextInt(255);
g = random.nextInt(255);
b = random.nextInt(255);
Color c = new Color(r,g,b);
return c;
}
}
进行验证的Servlet:
String code = request.getParameter("loginCode");//取JSP中的 code
code.equals(request.getSession().getAttribute("code"))//与session中的code比较
- 【Servlet】实现简单的验证码生成与验证
- servlet生成验证码验证的实现
- 利用servlet生成简单的验证码
- 利用servlet生成简单的验证码
- 简单的验证码生成servlet
- 最简单的Servlet实现验证码
- 最简单的servlet实现验证码
- Servlet实现简单的验证码
- 使用servlet 实现简单的验证码
- 简单验证码实现[servlet]
- PHP 用session与gd库实现简单验证码生成与验证的类
- 生成验证码的Servlet
- servlet简单的验证码登录验证
- 一个简单的基于Servlet的验证码生成程序
- 一个简单的验证码生成工具--servlet版本
- servlet实现随即生成验证码图片
- servlet生成验证码
- servlet生成验证码
- 汽车租赁系统
- mysql与PHP交互
- 使用Sax和Pull方法 解析XML文件
- Ubuntu下的DNS服务器客户端
- 何如在ADT中使用genymotion进行测试
- 【Servlet】实现简单的验证码生成与验证
- Android 开发环境下载地址
- 站在巨人的肩膀上学习
- 错误Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1
- ubuntu下用命令行安装Qt
- java(1)--集合框架
- poj3608Bridge Across Islands【旋转卡壳】
- Dijkstra
- 设计模式3之工厂模式