首页 > 代码库 > jsp验证码

jsp验证码

1、validimg.jsp

 1 <%@ page contentType="image/JPEG"
 2     import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"
 3     pageEncoding="UTF-8"%>
 4 <%!    
 5     //给定范围获得随机颜色
 6     private Color getRandColor(int fc, int bc) {   
 7         Random random = new Random();
 8         if (fc > 255)
 9             fc = 255;
10         if (bc > 255)
11             bc = 255;
12         int r = fc + random.nextInt(bc - fc);
13         int g = fc + random.nextInt(bc - fc);
14         int b = fc + random.nextInt(bc - fc);
15         return new Color(r, g, b);
16     }
17 %>
18 <%
19     //设置页面不缓存   
20     response.setHeader("Pragma", "No-cache");
21     response.setHeader("Cache-Control", "no-cache");
22     response.setDateHeader("Expires", 0);
23 
24     // 在内存中创建图象   
25     int width = 60, height = 20;
26     BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
27 
28     // 获取图形上下文   
29     Graphics g = image.getGraphics();
30 
31     // 设定背景色   
32     g.setColor(this.getRandColor(200, 250));
33     g.fillRect(0, 0, width, height);
34 
35     //设定字体   
36     g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
37 
38     //生成随机类   
39     Random random = new Random();
40 
41     // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到   
42     g.setColor(this.getRandColor(160, 200));
43     for (int i = 0; i < 100; i++) {
44         int x = random.nextInt(width);
45         int y = random.nextInt(height);
46         int xl = random.nextInt(12);
47         int yl = random.nextInt(12);
48         g.drawLine(x, y, x + xl, y + yl);
49     }
50 
51     // 取随机产生的认证码(4位数字)   
52     String validCode = "";
53     for (int i = 0; i < 4; i++) {
54         String rand = String.valueOf(random.nextInt(10));
55         validCode += rand;
56         // 将认证码显示到图象中   
57         g.setColor(new Color(20 + random.nextInt(110), 20 + random
58                 .nextInt(110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成   
59         g.drawString(rand, 13 * i + 6, 16);
60     }
61 
62     // 将认证码存入SESSION   
63     session.setAttribute("validCode", validCode);
64 
65     // 图象生效   
66     g.dispose();
67 
68     // 输出图象到页面   
69     ImageIO.write(image, "JPEG", response.getOutputStream());
70 %>
validimg.jsp

2、login.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3 <html>
 4   <head>
 5     <title>登录页面</title>
 6     
 7   </head>
 8   
 9   <body>
10     <h1>登录页面</h1>
11     <form action="logindo.jsp" method="post">
12     <table>
13         <tr>
14             <td><label for="loginName">登录姓名:</label></td>
15             <td><input type="text" name="loginName" id="loginName"/></td>
16         </tr>
17         <tr>
18             <td><label for="loginPwd">登录密码:</label></td>
19             <td><input type="password" name="loginPwd" id="loginPwd"/></td>
20         </tr>
21         <tr>
22             <td><label for="validCode">验证码:</label></td>
23             <td><input type="text" maxlength="4" style="width:60px" name="validCode" id="validCode"/><img src="validimg.jsp" alt="验证码"/></td>
24         </tr>
25         <tr>
26             <td colspan="2" align="center">
27                 <input type="submit" value="登录"/>
28                 <input type="reset" value="重填"/>
29             </td>
30         </tr>
31     </table>
32     </form>
33   </body>
34 </html>
login.jsp

3、logindo.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@page import="entity.UserInfo"%>
 3 <%@page import="dao.UserInfoDao"%>
 4 <%
 5     //获取表单内容
 6     String validCode = request.getParameter("validCode");
 7     String sValidCode = (String) session.getAttribute("validCode");
 8     if (validCode.equals(sValidCode)) {
 9         String loginName = request.getParameter("loginName");
10         String loginPwd = request.getParameter("loginPwd");
11 
12         UserInfo userInfo = UserInfoDao.instance().Login(loginName,loginPwd);
13 
14         if (userInfo != null) {
15             if (loginName.equals(userInfo.getLoginName())) {
16                 session.setAttribute("login",userInfo);
17                 response.sendRedirect("manager.jsp");
18             } else {
19                 out.print("登录失败!");
20             }
21         } else {
22             out.print("登录失败!");
23         }
24     } else {
25         out.print("验证码失败!");
26     }
27 %>
logindo.jsp