JSP与java生成验证码
来源:互联网 发布:淘宝店打不开怎么回事 编辑:程序博客网 时间:2024/05/18 02:07
关于生成验证码方法五花八门,也是仁智各有所爱,此只是其之一
生成验证码
createImage.jsp
<%@ page contentType="image/jpeg"import="java.awt.*,java.awt.image.*,java.util.*,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);}%><%out.clear();//这句针对resin服务器,如果是tomacat可以不要这句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(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);}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);}// 将认证码存入SESSIONsession.setAttribute("rand", sRand);g.dispose();ImageIO.write(image, "JPEG", response.getOutputStream());out.clear();out = pageContext.pushBody();%>
使用:
login.html
<%@ page contentType="text/html;charset=gbk"%><%@ page language="java" import="java.sql.*" errorPage=""%><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>用户登录</title><script language="javascript">function loadimage() {document.getElementById("randImage").src = "../test/createImage.jsp?" + Math.random();}</script></head><body><table width="256" border="0" cellpadding="0" cellspacing="0"><!--DWLayoutTable--><form action="../test/validate.jsp" method="post" name="loginForm"><tr><td width="118" height="22" valign="middle" align="center"><inputtype="text" name="rand" size="15"></td><td width="138" valign="middle" align="center"><imgalt="code..." name="randImage" id="randImage" src="createImage.jsp"width="60" height="20" border="1" align="absmiddle"></td></tr><tr><td height="36" colspan="2" align="center" valign="middle"><ahref="javascript:loadimage();"><font class=pt95>看不清点我</font></a></td></tr><tr><td height="36" colspan="2" align="center" valign="middle"><inputtype="submit" name="login" value="提交"></td></tr></form></table></body></html>
验证:
<%String rand = (String) session.getAttribute("rand");String input = request.getParameter("rand");if (rand.equals(input)) {out.print("<script>alert('验证通过!');</script>");} else {out.print("<script>alert('请输入正确的验证码!');location.href='/login.jsp';</script>");}%>
- JSP与java生成验证码
- JSP生成验证码
- JSP生成验证码
- JSP生成验证码
- jsp 生成验证码
- jsp生成验证码
- jsp生成验证码
- jsp生成验证码
- jsp生成验证码
- jsp生成验证码
- jsp 生成验证码
- jsp生成验证码
- JSP生成验证码
- JSP生成验证码
- JSP生成验证码
- JSP生成验证码
- jsp 生成验证码
- JSP生成验证码
- 未来出版界,图书出版会缩水50%(转自好友子秋)
- 在eclipse中配置android ndk的自动编译环境builders
- linux下输出文件奇偶行小结
- ASP.net 页面间传对象
- HDOJ4011
- JSP与java生成验证码
- 循环之谜总结
- 快速失败(Java集合)
- 学习jquery validation总结
- java调用存储过程(摘抄)
- [Android开发]Android 重要组件 之 Intent
- platform设备添加流程
- 记录下callstack信息
- WinForm应用程序框架设计之WinAction(删除数据)