JSP如何实现页面验证码
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要为大家展示了"JSP如何实现页面验证码",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JSP如何实现页面验证码"这篇文章吧。JSP页面验证码实现
千家信息网最后更新 2025年01月17日JSP如何实现页面验证码
这篇文章主要为大家展示了"JSP如何实现页面验证码",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JSP如何实现页面验证码"这篇文章吧。
JSP页面验证码实现
首先在JSP页面加上生成图片的链接
,src需要我们自己实现,实现逻辑如下
运行后,jsp页面会发出"auth/code"请求生成验证码,并将验证码放置于session中用于验证,运行效果如下
我们在jsp页面上加上输入验证码的输入框及提交按钮,点击按钮后进行验证码判断
后台会比将收入的验证码与放置于session中的验证码进行比对,并输出结果给JSP页面进行相应处理,当判断为失败,则刷新验证码
最后,相对完整的页面和逻辑都已实现,代码如下
JSP页面代码
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %><%@ page import="java.util.*" %>后台代码Title <%----%>
package com.founderit.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.*;import javax.imageio.ImageIO;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;@Controller@RequestMapping("auth")public class Auth { private char[] codeSequence = { 'A', '1','B', 'C', '2','D','3', 'E','4', 'F', '5','G','6', 'H', '7','I', '8','J', 'K', '9' ,'L', '1','M', '2','N', 'P', '3', 'Q', '4', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; @RequestMapping("authCode") public void getCode(HttpServletResponse response, HttpSession session) throws IOException { int width = 63; int height = 37; Random random = new Random(); //设置response头信息 //禁止缓存 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); //生成缓冲区image类 BufferedImage image = new BufferedImage(width, height, 1); //产生image类的Graphics用于绘制操作 Graphics g = image.getGraphics(); //Graphics类的样式 g.setColor(this.getColor(200, 250)); g.setFont(new Font("Times New Roman",0,28)); g.fillRect(0, 0, width, height); //绘制干扰线 for(int i=0;i<40;i++){ g.setColor(this.getColor(130, 200)); int x = random.nextInt(width); int y = random.nextInt(height); int x1 = random.nextInt(12); int y1 = random.nextInt(12); g.drawLine(x, y, x + x1, y + y1); } //绘制字符 String strCode = ""; for(int i=0;i<4;i++){ String rand = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]); strCode = strCode + rand; g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110))); g.drawString(rand, 13*i+6, 28); } //将字符保存到session中用于前端的验证 session.setAttribute("authCode", strCode.toLowerCase()); g.dispose(); ImageIO.write(image, "JPEG", response.getOutputStream()); response.getOutputStream().flush(); } public Color getColor(int fc,int bc){ Random random = new Random(); if(fc>255) fc = 255; if(bc>255) bc = 255; int r = fc + random.nextInt(bc - fc); int g = fc + random.nextInt(bc - fc); int b = fc + random.nextInt(bc - fc); return new Color(r,g,b); } @RequestMapping(value = "checkCode",method = RequestMethod.POST) @ResponseBody public String checkAuthCode(@RequestParam(value = "inputCode") String inputCode, HttpServletRequest request){ String checkCode=(String) request.getSession().getAttribute("authCode"); //返回1 代表判断通过,0代表失败 String isCode=checkCode.equals(inputCode)?"1":"0"; return isCode; }}
以上是"JSP如何实现页面验证码"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
验证
页面
代码
内容
篇文章
生成
代表
信息
后台
字符
按钮
逻辑
学习
帮助
输入
运行
成功
图片
地址
媒体
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
福建通用软件开发价目表
民用软件开发通用要求
公安dna数据库比对要多长时间
电源管理系统 服务器
数据库 爆破
cpu天梯图 服务器
海沧区网络安全领导小组
汇纳科技工业互联网
故宫博物院平面图软件开发
维护网络安全五百字作文
车载网络技术 精品课程
数据库原理及应用思政元素
游戏服务器多久备份一次
dns服务器一般用在哪里
视图 远程sql数据库
服务器做游戏服务器
常见发生的网络安全问题
安全牛网络安全培训
嵌入式软件开发 学什么
软件开发公司项目定位
民用软件开发通用要求
组态王构建数据库的地址
电脑数据库文件存在哪
代理服务器电视
无法连接华为云服务器
清华大学高级数据库技术
网络安全防止泄漏
优似腾软件开发公司
闲置电脑做服务器练习
数据库管理系统如何解决数据安全