zoukankan      html  css  js  c++  java
  • 登录验证码的实现

    jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@page import="org.apache.commons.lang.StringUtils"%>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <link rel="stylesheet" href="scripts/login/css/supersized.css">
        <link rel="stylesheet" href="scripts/login/css/bootstrap.min.css" >
        <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
        <!--[if lt IE 9]>
        <script src="js/html5.js"></script>
      <![endif]-->
      <script src="scripts/login/js/jquery-1.8.2.min.js"></script>
      <script type="text/javascript" src="scripts/login/js/jquery.form.js"></script>
      <script type="text/javascript" src="scripts/login/js/supersized.3.2.7.min.js"></script>
      <script type="text/javascript" src="scripts/login/js/supersized-init.js"></script>
      <script type="text/javascript" src="scripts/login/js/tooltips.js"></script>
      <script type="text/javascript" src="scripts/login/js/login.js"></script>
      <!--<script type="text/javascript" src="scripts/login/js/scripts.js"></script>-->
      <script type="text/javascript"> if(self!=top){top.location=self.location;} // 重载验证码 function reloadVerifyCode(){ var timenow = new Date().getTime(); document.getElementById("captcha_img").src="<%=request.getContextPath()%>/servlet/validateCode?d="+timenow; }   </script>   <style type="text/css">     .main_box {     position: absolute; top:50%; left:50%; margin-top:-260px; margin-left: -300px; padding: 30px; width:600px; height:460px;     background:url(scripts/login/images/1.png);     border-radius: 10px;     }     .main_box .setting {position: absolute; top: 5px; right: 10px; width: 10px; height: 10px;}     .main_box .setting a {color: #FF6600;}     .main_box .setting a:hover {color: #555;}     .login_logo {margin-bottom: 20px; height: 45px; text-align: center;}     .login_logo img {height: 45px;}     .login_msg {text-align: center; font-size: 16px;}     .login_form {padding-top: 20px; font-size: 16px;}     .login_box .form-control {display: inline-block; *display: inline; zoom: 1; width: auto; font-size: 18px;}     .login_box .form-control.x319 {width: 319px;}     .login_box .form-control.x164 {width: 164px;}     .login_box .form-group {margin-bottom: 20px;}     .login_box .form-group label.t {width: 120px; text-align: right; cursor: pointer;}     .login_box .form-group.space {padding-top: 15px; border-top: 1px #FFF dotted;}     .login_box .form-group img {margin-top: 1px; height: 32px; vertical-align: top;}     .login_box .m {cursor: pointer;}     .bottom {text-align: center; font-size: 12px;}   </style> </head> <body> <div class="page-container"> <div class="main_box"> <div class="login_box"> <div class="login_logo"> <img src="scripts/login/images/logo.png" > </div> <div class="login_form"> <form id="login_form" method="post" action="<%=request.getContextPath() %>/loginpro.action"> <div class="form-group"> <label for="j_username" class="t">用 户:</label> <input id="username" value="" name="username" type="text" class="form-control x319 in" autocomplete="off"> </div> <div class="form-group"> <label for="j_password" class="t">密 码:</label> <input id="password" value="" name="password" type="password" class="password form-control x319 in"> </div> <div class="form-group"> <label for="j_captcha" class="t">验证码:</label> <input id="captcha" name="captcha" type="text" class="form-control x164 in"> <img name="captcha_img" id="captcha_img" alt="点击更换" title="点击更换" src="<%=request.getContextPath()%>/servlet/validateCode" onclick="javascript:reloadVerifyCode();" class="m"> </div> <div class="form-group space"> <label class="t"></label>  <button type="button" id="submit_btn" class="btn btn-primary btn-lg"> 登 录  </button> <input type="reset" value=" 重 置 " class=" btn-default btn-lg"> </div> </form> </div> </div> <div class="bottom"> <%String msg=(String)request.getAttribute("errormsg")==null?"": (String)request.getAttribute("errormsg");%> <font style="color: blue; font-size: 12px;"><%= msg%></font> <% String msg2=(String)session.getAttribute("timeouterrormsg")==null?"": (String)session.getAttribute("timeouterrormsg"); if(StringUtils.isEmpty(msg)){ %> <font style="color: blue; font-size: 12px;"><%= msg2%></font> <%} %> </div> </div> </div> <div style="text-align:center;"> <p></p> </div> </body> </html>

    Java action处理登录方法

        /**
         * 登录
         * 
         * @return
         */
        @SuppressWarnings("unchecked")
        public String login() {
            username = sRequest.getParameter("username");
            password = sRequest.getParameter("password");
            String checkcode = sRequest.getParameter("captcha");
            if (!checkcode.toLowerCase().equals(
                    ((String) session.get("piccode")).toLowerCase())) {
                request.put("errormsg", "对不起,验证码错误,登录失败!");
                return ERROR;
            }
            User user = null;
            try {
                user = userService.findUserByNamePsd(username, password);
            } catch (Exception e) {
                user = null;
                e.printStackTrace();
            }
            if (user != null) {// login success
                if (user.getEnable().intValue() == 0) {
                    request.put("errormsg", "对不起,该用户当前已经被禁用,请联系管理员!");
                    return ERROR;
                }
                session.put("user", user);
                List<Module> moduleList = moduleService.getModuleList();
                if (moduleList != null && moduleList.size() > 0) {
                    session.put("modules", moduleList);
                }
                // 登陆用户拥有的角色
                List<Role> initRoles = roleService.findRolesByUserId(user.getId());
                if (initRoles == null || initRoles.size() < 1) {
                    request.put("errormsg", "对不起,您还没有授权,请联系管理员!");
                    return ERROR;
                }
                // 获得可以访问的模块列表
                List<Module> initModulesList = new ArrayList<Module>();
                for (Role role : initRoles) {
                    List<Module> temp = moduleService.findModulesByRoleId(role
                            .getId());
                    if (temp != null && temp.size() > 0) {
                        initModulesList.addAll(temp);
                    }
                }
                List<Module> result = null;
                if (initModulesList != null && initModulesList.size() > 0) {
                    // 补充完整模块对象并放到session中
                    result = new ArrayList<Module>();
                    for (Module m : initModulesList) {
                        for (Module mm : moduleList) {
                            if (m.getId().intValue() == mm.getId().intValue()) {
                                result.add(mm);
                            }
                        }
                    }
                    session.put("result", result);
                    Log log = new Log();
                    log.setUserId(user.getId());
                    log.setOprate("登录系统");
                    log.setIp(sRequest.getRemoteAddr());
                    logService.addLog(log);
                } else {
                    request.put("errormsg", "对不起,您还没有授权,请联系管理员!");
                    return ERROR;
                }
                return SUCCESS;
            } else {// login failed
                request.put("errormsg", "对不起,用户名或密码不正确,登录失败!");
                return ERROR;
            }
        }

    java 验证码servlet

    package com.xxxxx.util;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class ValidateCode extends HttpServlet {
        private static final long serialVersionUID = 3110081721876882107L;
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            this.doPost(request, response);
        }
    
        // 生成数字和字母的验证码
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            BufferedImage img = new BufferedImage(68, 22,
                    BufferedImage.TYPE_3BYTE_BGR);// TYPE_INT_RGB
            // 得到该图片的绘图对象
            Graphics g = img.getGraphics();
            Random r = new Random();
            Color c = new Color(200, 150, 255);
            g.setColor(c);
            // 填充整个图片的颜色
            g.fillRect(0, 0, 68, 22);
            // 向图片中输出数字和字母
            StringBuffer sb = new StringBuffer();
            char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
            int index, len = ch.length;
            for (int i = 0; i < 4; i++) {
                index = r.nextInt(len);
                g
                        .setColor(new Color(r.nextInt(88), r.nextInt(188), r
                                .nextInt(255)));
                g.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 22));// 输出的字体和大小
                g.drawString("" + ch[index], (i * 15) + 3, 18);// 写什么数字,在图片的什么位置画
                sb.append(ch[index]);
            }
            request.getSession().setAttribute("piccode", sb.toString());
            ImageIO.write(img, "JPG", response.getOutputStream());
        }
    }

    web.xml

    <!-- 验证码begin -->
    <servlet>
        <servlet-name>validateCode</servlet-name>
        <servlet-class>com.xxxxx.util.ValidateCode</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>validateCode</servlet-name>
        <url-pattern>/servlet/validateCode</url-pattern>
    </servlet-mapping>
    <!-- 验证码end -->
  • 相关阅读:
    DEDECMS里面DEDE函数解析
    dede数据库类使用方法 $dsql
    DEDE数据库语句 DEDESQL命令批量替换 SQL执行语句
    织梦DedeCms网站更换域名后文章图片路径批量修改
    DSP using MATLAB 示例 Example3.12
    DSP using MATLAB 示例 Example3.11
    DSP using MATLAB 示例 Example3.10
    DSP using MATLAB 示例Example3.9
    DSP using MATLAB 示例Example3.8
    DSP using MATLAB 示例Example3.7
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/6813525.html
Copyright © 2011-2022 走看看