• JavaWeb简单的验证码登入


    前端login.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <span>欢迎登录XXX管理系统</span>
    <form action='./loginControler' method='post'>
        登录名称:
        <input type='text' name='Name' value='' /><br>
        登录密码:<input type='password' name='nPwd' value='' /><br>
        验证码:<input type='text' name='loginCode' value='' />
        <img src='./captcha' width=80 height=30/>
        <input type='submit' value='提交' /></form>
    </body>
    </html>
    

    后端

    LoginController.java

    package cn.edu.mju.project2.comtroller;
    import cn.edu.mju.project2.Util.StrUtil;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    @WebServlet("/loginControler")
    public class LoginController extends HttpServlet {
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            String Name = req.getParameter("Name");
            String Pwd = req.getParameter("Pwd");
            String loginCode = req.getParameter("loginCode");
            String msg = null;
    
            String Code = (String) req.getSession().getAttribute("Code");
    
            if(StrUtil.isBank(loginCode)){
                msg = "请输入验证码";
    
            }else if (loginCode.equals(Code)){
                if("admin".equals(Name) && "admin".equals(Pwd)) {
                    msg = "<font size='20'>hello " + Name + "</font>";
                }else{
                    msg = "<font size='20'>账号或密码错误!</font>";
                }
    
            }else  {
                msg = "验证码错误
    ";
            }
            showMsg(resp, msg);
        }
    
        private void showMsg(HttpServletResponse resp, String msg){
            resp.setCharacterEncoding("utf-8");
            try{
                PrintWriter out = resp.getWriter();
                out.println("<html>");
                out.println("<header>");
                out.println("<title>test</title>");
                out.println("<meta charset="utf-8">");
                out.println("</header");
                out.println("<body>");
                out.println(msg);
                out.println("</body>");
                out.println("</html>");
                out.close();
            }catch (Exception ex){
                System.out.println(ex.getMessage());
            }
    
        }
    }

    CaptcheController.java

    package cn.edu.mju.project2.comtroller;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Random;
    
    @WebServlet("/captcha")
    public class CaptcheController extends HttpServlet {
        private final int WIDTH = 130;
        private final int HEIGHT = 50;
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
            resp.setDateHeader("Expires", 0);
            resp.setHeader("Cache-Control", "no-cache");
            resp.setHeader("Pragma", "no-cache");
    
    
            BufferedImage img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
            Graphics g = img.getGraphics();
            g.setColor(Color.white);
            g.fillRect(0,0, WIDTH, HEIGHT);
    
            String Code = getRandomString(4);
    
            req.getSession().setAttribute("Code",Code);
    
            g.setFont(new Font("宋体",Font.BOLD,30));
            g.setColor(Color.RED);
            g.drawString(Code,30,35);
    
            g.dispose();
    
            ServletOutputStream out = resp.getOutputStream();
            ImageIO.write(img, "PNG", out);
            try {
                out.flush();
            }catch (Exception ignored){}
            finally {
                out.close();
            }
    
    }
    
        //length用户要求产生字符串的长度
        public static String getRandomString(int length){
            String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            Random random=new Random();
            StringBuffer sb=new StringBuffer();
            for(int i=0;i<length;i++){
                int number=random.nextInt(62);
                sb.append(str.charAt(number));
            }
            return sb.toString();
        }
    
    
    }

    StrUtil.java

    package cn.edu.mju.project2.Util;
    
    public class StrUtil {
        public static boolean isBank(String src){
            if(src == null || src.equals("")){
                return true;
            }else {
                return false;
            }
        }
    
    }

    效果:

  • 相关阅读:
    内存管理3 Win32汇编语言056
    高级强制类型转换 C++快速入门37
    内存管理3 Win32汇编语言056
    密码学基础
    危险API的禁用列表
    危险API的禁用列表
    《那些年啊,那些事——一个程序员的奋斗史》——68
    《那些年啊,那些事——一个程序员的奋斗史》——68
    《那些年啊,那些事——一个程序员的奋斗史》——68
    春节期间停止更新
  • 原文地址:https://www.cnblogs.com/hlikex/p/12653227.html
Copyright © 2020-2023  润新知