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

用Java简单实现验证码功能以及校验

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

流程图

LoginServlet
package com.itheima.web.servlet.session;

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.*;


@WebServlet(urlPatterns = "/LoginServlet")
public class LoginServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
            IOException {
        // 处理响应中文乱码    
        response.setContentType("text/html;charset=utf-8");

        String vc = request.getParameter("verifyCode");
        String code_session = (String) request.getSession().getAttribute("code_session");

        if(code_session.equalsIgnoreCase(vc)){

            //response.getWriter().write("

验证码校验成功!"); String username = request.getParameter("username"); String password = request.getParameter("password"); boolean flag=false; BufferedReader br = new BufferedReader(new FileReader("d:/stu.txt")); String line; while((line=br.readLine())!=null){ System.out.println(line); String uname = line.split("\,")[0]; System.out.println(uname); String pword = line.split("\,")[1]; System.out.println(pword); if(username.equals(uname)&&pword.equals(password)){ flag=true; } } if(flag){ request.getSession().setAttribute("username",username); response.sendRedirect(request.getContextPath()+"/success.html"); } else{ response.sendRedirect(request.getContextPath()+"/fail.html"); } }else{ response.getWriter().write("

验证码校验失败!"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理请求的中文乱码 request.setCharacterEncoding("utf-8"); doGet(request, response); } }

CheckcodeServlet(生成验证码)
package com.itheima.web.servlet.session;

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.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/checkcodeServlet")
public class CheckcodeServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//  创建画布
		int width = 120;
		int height = 40;
		BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		//  获得画笔
		Graphics g = bufferedImage.getGraphics();
		//  填充背景颜色
		g.setColor(Color.white);
		g.fillRect(0, 0, width, height);
		//  绘制边框
		g.setColor(Color.red);
		g.drawRect(0, 0, width - 1, height - 1);
		//  生成随机字符
		//  准备数据
		String data = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
		//  准备随机对象
		Random r = new Random();
		//  声明一个变量 保存验证码
		String code = "";
		//  书写4个随机字符
		for (int i = 0; i < 4; i++) {
			//  设置字体
			g.setFont(new Font("宋体", Font.BOLD, 28));
			//  设置随机颜色
			g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));

			String str = data.charAt(r.nextInt(data.length())) + "";
			g.drawString(str, 10 + i * 28, 30);

			//  将新的字符 保存到验证码中
			code = code + str;
		}
		//  绘制干扰线
		for (int i = 0; i < 6; i++) {
			//  设置随机颜色
			g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));

			g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height));
		}

		//  将验证码 打印到控制台
		System.out.println(code);

		//  将验证码放到session中
		request.getSession().setAttribute("code_session", code);

		//  将画布显示在浏览器中
		ImageIO.write(bufferedImage, "jpg", response.getOutputStream());
	}

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

}
ShowPriServlet(用来校验用户是否是在登陆的时候进入的success.html界面中,并且查看已有的权限)
package com.itheima.web.servlet.session;

import javax.servlet.RequestDispatcher;
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;


@WebServlet(urlPatterns = "/ShowPriServlet")
public class ShowPriServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
            IOException {
        // 处理响应中文乱码    
        response.setContentType("text/html;charset=utf-8");

        String username = (String)request.getSession().getAttribute("username");

        if(username!=null){
            request.getRequestDispatcher("/WEB-INF/pri.html").forward(request,response);
        }else{
            response.getWriter().write("

你还未登陆,无法查看已有权限,请先登录 "); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理请求的中文乱码 request.setCharacterEncoding("utf-8"); doGet(request, response); } }

https://blog.csdn.net/qq_45881167/article/details/login.html


    
        
        用户登录
        
    
    
        
用户名:
密 码:
验证码:
success.html


    
        
        登录成功页面
    
    
        

恭喜您,登陆成功!

查看我的权限
fail.html


    
        
        失败提示页
    
    
        

用户名或密码错误

重新登陆
查看已有权限功能没有实现。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/866463.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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