栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

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

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

 

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

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);
        }


    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/918949.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号