zoukankan      html  css  js  c++  java
  • 带验证码的登录练习

    package com.hopetesting.servlet;

    import javax.imageio.ImageIO;
    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.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Random;

    /**
    * @author newcityman
    * @date 2019/9/1 - 20:42
    */
    @WebServlet("/checkCodeServlet")
    public class CheckCodeServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 1、创建一个对象,在内存中存放图片(验证码图片对象)
    int width = 100;
    int height = 50;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    // 2、美化图片
    // 2.1、填充背景色
    Graphics g = image.getGraphics();
    g.setColor(Color.PINK);
    g.fillRect(0, 0, width, height);

    // 2.2、画矩形边框
    g.setColor(Color.blue);
    g.drawRect(0, 0, width - 1, height - 1);

    // 2.3、随机生成角标
    String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    Random ran = new Random();

    // 获取字符
    g.setColor(Color.RED);
    StringBuilder sb = new StringBuilder();
    for (int i = 1; i <= 4; i++) {
    int index = ran.nextInt(str.length());
    char c = str.charAt(index);
    sb.append(c);
    g.drawString(c + "", width / 5 * i, height / 2);
    }
    String checkcode_session = sb.toString();
    request.getSession().setAttribute("checkcode_session",checkcode_session);
    // 2.4 设置干扰线
    g.setColor(Color.BLACK);

    for (int i = 0; i < 8; i++) {
    int x1 = ran.nextInt(width);
    int x2 = ran.nextInt(width);
    int y1 = ran.nextInt(height);
    int y2 = ran.nextInt(height);
    g.drawLine(x1, y1, x2, y2);
    }


    // 3、将图片输送到页面显示
    ImageIO.write(image, "jpg", response.getOutputStream());


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doPost(request, response);
    }
    }


    package com.hopetesting.servlet;

    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 javax.servlet.http.HttpSession;
    import java.io.IOException;

    /**
    * @author newcityman
    * @date 2019/9/4 - 23:22
    */
    @WebServlet("/loginServlet")
    public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 1、 设置request编码
    request.setCharacterEncoding("utf-8");
    // 2、获取参数
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    String checkCode = request.getParameter("checkCode");
    // 3、 获取生成的验证码
    HttpSession session = request.getSession();
    String checkcode_session = (String) session.getAttribute("checkcode_session");
    // 删除session中存储的验证码
    session.removeAttribute("checkcode_session");
    // 4、判断验证码是否正确
    if (checkcode_session!=null && checkcode_session.equalsIgnoreCase(checkCode)) {
    //正确
    if ("zmy".equals(username) && "123".equals(password)) {
    // 登陆成功
    // 存储用户信息
    session.setAttribute("username", username);
    // 重定向到success.jsp
    response.sendRedirect(request.getContextPath() + "/success.jsp");
    } else {
    //登陆失败
    request.setAttribute("login_error", "用户名或密码错误");
    request.getRequestDispatcher("/login.jsp").forward(request, response);
    }
    } else {
    //错误
    request.setAttribute("cc_error", "验证码错误,请重试");
    request.getRequestDispatcher("/login.jsp").forward(request, response);
    }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doPost(request, response);
    }
    }


    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>login</title>
    <script>
    window.onload = function () {
    document.getElementById("img").onclick = function () {
    this.src = "/day16/checkCodeServlet?time=" + new Date().getTime();
    }
    }
    </script>

    <style>
    div{
    color: red;
    }
    </style>
    </head>
    <body>
    <form action="/day16/loginServlet" method="post">
    <table>
    <tr>
    <td>用戶名</td>
    <td>
    <input type="text" name="username">
    </td>
    </tr>
    <tr>
    <td>密码</td>
    <td>
    <input type="password" name="password">
    </td>
    </tr>
    <tr>
    <td>验证码</td>
    <td>
    <input type="text" name="checkCode">
    </td>
    </tr>
    <tr>
    <td colspan="2">
    <img src="/day16/checkCodeServlet" id="img" alt="验证码">
    </td>
    </tr>
    <tr>
    <td colspan="2">
    <input type="submit" value="登录">
    </td>
    </tr>
    </table>
    </form>
    <div><%=request.getAttribute("cc_error")==null?"":request.getAttribute("cc_error")%>
    </div>
    <div><%=request.getAttribute("login_error")==null?"":request.getAttribute("login_error")%>
    </div>
    </body>
    </html>


    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>Title</title>
    </head>
    <body>
    <h1><%=request.getSession().getAttribute("username")%>,恭喜您成功登陆</h1>
    </body>
    </html>
  • 相关阅读:
    自学it18大数据笔记-第三阶段Scala-day03——会持续更新……
    自学it18大数据笔记-第三阶段Scala-day01+~day02——会持续更新……
    自学it18掌大数据笔记-第三阶段Scala-day00-day01——会持续更新……
    自学it18大数据笔记-第三阶段Storm-day5——会持续更新……
    自学it18大数据笔记-第三阶段Storm-day4——会持续更新……
    自学it18大数据笔记-第三阶段Storm-day2-day3——会持续更新……
    自学it18大数据笔记-第三阶段Storm-day1——会持续更新……
    自学it18大数据笔记-第二阶段Sqoop-day1——会持续更新……
    自学it18大数据笔记-第二阶段Pig-day1——会持续更新……
    自学it18大数据笔记-第二阶段Kafka-day2——会持续更新……
  • 原文地址:https://www.cnblogs.com/newcityboy/p/11462686.html
Copyright © 2011-2022 走看看