javaweb登录界面验证码自动生成,点击重新生成验证码,验证码与输入框的校验

javaweb登录界面验证码自动生成,点击重新生成验证码,验证码与输入框的校验,第1张

当进入登录界面时,验证码图片自动生成,验证码图片颜色随机,字母颜色随机,该代码只是随机生成小写英文字母,没有设置大写字母和数字

 点击验证码图片重新生成验证码

验证码输入错误时,提示出来

 验证码输入正确后才进行登录账号和密码的验证

中大型项目中用到的,现把关键代码展示如下

login.jsp界面(注意此时已经导入过jquery包了)


                                            

CheckCodeServlet类

package com.it.servlets;

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

@WebServlet("/CheckCodeServlet")
public class CheckCodeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//通过java中awt中提供的类绘制验证码图片
//        1.创建一张图片
        int height=90;//验证码高度
        int width=300;//验证码宽度
        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//实例化一个图片对象
//        2.绘制图片对象,从图片对象中获取绘制图片的笔
        Graphics2D pen = image.createGraphics();
        //a.绘制背景
        pen.setColor(getRandomColor());
        pen.fillRect(0,0,width,height);//绘制实心矩形

        //b.绘制验证码字符串
        int letterNum=4;//验证码图片上的字符的个数
        int space=20;//验证码图片上两个字母之间的空隙
        int letterWidth=(width-(letterNum+1)*space)/letterNum;//计算每个字母占据的宽度

//        for循环每循环一次,绘制一个字母(小写字母的ascii码:97-122)
        Random random = new Random();
        String code ="";
        for (int i=0;i

ManagerLoginServlet类

String checkCode = req.getParameter("checkCode");

        //先校验验证码,只有验证码正确时,才校验登录的账号和密码
        //首先获取session,再获取session中的code属性的值,与输入框的值进行比较
        if (req.getSession().getAttribute("code").equals(checkCode)){
//验证码正确时,执行登录名和登录密码的验证
 }else {
            //验证码错误
            req.setAttribute("tips","");
            req.getRequestDispatcher("login.jsp").forward(req,resp);
        }

下面是完整类中的代码

login.jsp界面(注意此时已经导入过jquery包了)

<%--
  Created by IntelliJ IDEA.
  User: lijianglin
  Date: 2022/5/19
  Time: 17:32
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    
    
    
    
    
    
    
    
    
    登录




    欢迎后台管理界面平台
    
        返回首页
        帮助
        关于
    


    
        
        

        
            
                
                    
                        
                            
                            管理员登录
                        

                        

                        

                        
                            通知
                        

                        
<%--    从ManagerLoginServlet类中获取过来提示信息,取属性的value--%>
                            提示 ${tips}
                        
                    

                    
                
            
        
    

版权所有 2021



CheckCodeServlet类

package com.it.servlets;

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

@WebServlet("/CheckCodeServlet")
public class CheckCodeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//通过java中awt中提供的类绘制验证码图片
//        1.创建一张图片
        int height=90;//验证码高度
        int width=300;//验证码宽度
        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//实例化一个图片对象
//        2.绘制图片对象,从图片对象中获取绘制图片的笔
        Graphics2D pen = image.createGraphics();
        //a.绘制背景
        pen.setColor(getRandomColor());
        pen.fillRect(0,0,width,height);//绘制实心矩形

        //b.绘制验证码字符串
        int letterNum=4;//验证码图片上的字符的个数
        int space=20;//验证码图片上两个字母之间的空隙
        int letterWidth=(width-(letterNum+1)*space)/letterNum;//计算每个字母占据的宽度

//        for循环每循环一次,绘制一个字母(小写字母的ascii码:97-122)
        Random random = new Random();
        String code ="";
        for (int i=0;i

ManagerLoginServlet类

package com.it.servlets;

import com.it.entity.Manager;
import com.it.service.ManagerService;

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.sql.SQLException;

//用于管理员登录验证的servlet
@WebServlet("/ManagerLoginServlet")
public class ManagerLoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// doGet中写了doPost方法,可以所有方法都在doPost方法,这样不管传过来是get还是post都可以成功调用方法
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//      1.接收账号、密码、验证码
        req.setCharacterEncoding("utf-8");
//        从输入框中获取输入的内容,参数是输入框的名字。
        String loginName = req.getParameter("loginName");
        String loginPwd = req.getParameter("loginPwd");
        String checkCode = req.getParameter("checkCode");

        //先校验验证码,只有验证码正确时,才校验登录的账号和密码
        //首先获取session,再获取session中的code属性的值,与输入框的值进行比较
        if (req.getSession().getAttribute("code").equals(checkCode)){
//验证码正确时,执行登录名和登录密码的验证
//      2.调用ManagerService进行校验
            ManagerService managerService = new ManagerService();
            try {
                Manager manager = managerService.checkManagerLogin(loginName, loginPwd);
//            3.判断验证结果
                if (manager==null){
//                登录失败,跳转到登录界面并进行错误提示
                    req.setAttribute("tips","");
                    req.getRequestDispatcher("login.jsp").forward(req,resp);
                }else {
//                登录成功,跳转到index.jsp界面
                    resp.sendRedirect("index.jsp");
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }else {
            //验证码错误
            req.setAttribute("tips","");
            req.getRequestDispatcher("login.jsp").forward(req,resp);
        }


    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1321307.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)