• 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="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
  • 相关阅读:
    c#4.0泛型接口和泛型委托的协变和逆变
    编码解析
    SQL入门(2)
    SQL入门(1)补充
    ADO两种连接方式
    SQL入门(3)
    ADO中SqlCommand的三种执行
    Huffman编码
    IE8单独样式错乱
    从 button列表中获得 commandrgument值
  • 原文地址:https://www.cnblogs.com/qiyebao/p/3718053.html
Copyright © 2020-2023  润新知