基于SpringMVC登录模块验证码的生成与校验
来源:互联网 发布:织梦cms模板更改首页 编辑:程序博客网 时间:2024/05/22 06:21
最近改了一下项目中的验证码部分,简单整理成了一个Demo。
主要流程:
1、 生成随机的验证码并放到session中
2、 生成图片(设置图片样式,写入验证码以及干扰内容)
3、 输出到页面
Controller中:
/** * 生成验证码 * @throws IOException */ @RequestMapping("/maskCode") public void maskCode(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 产生4位随机数字 Random random = new Random(); String sRand = ""; for (int i = 0; i < 4; i++) { String rand = String.valueOf(random.nextInt(10)); sRand += rand; } // 设定字体 String fontPath = request.getSession().getServletContext().getRealPath("/fonts"); PJAGraphicsManager graphicsManager; graphicsManager = PJAGraphicsManager.getDefaultGraphicsManager(); graphicsManager.loadFonts(fontPath); // 画图 Image localImage = new PJAImage(46, 20); Object localObject = localImage.getGraphics(); ((PJAGraphicsExtension) localObject).setFont("", 1, 14); ((Graphics) localObject).setColor(Color.gray); ((Graphics) localObject).draw3DRect(0, 0, 45, 19, false); ((Graphics) localObject).setColor(Color.black); ((Graphics) localObject).drawString(sRand, 5, 16); Random localRandom = new Random(System.currentTimeMillis()); for (int i = 0; i < 80; ++i) { int j = localRandom.nextInt(46); int k = localRandom.nextInt(20); ((Graphics) localObject).drawLine(j, k, j, k); } sendGIFImage(localImage, response); //将验证码存入session request.getSession().setAttribute("maskCode", sRand); } /** * 将图片输出到浏览器 * @param paramImage * @param response * @throws ServletException * @throws IOException */ public void sendGIFImage(Image paramImage, HttpServletResponse response) throws ServletException, IOException { // 禁止图像缓存。 response.setContentType("image/gif"); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Expires", "0"); ServletOutputStream localServletOutputStream = response.getOutputStream(); try { new GifEncoder(paramImage, localServletOutputStream).encode(); } catch (IOException localIOException) { new GifEncoder(new FilteredImageSource(paramImage.getSource(),new Web216ColorsFilter()), localServletOutputStream).encode(); } localServletOutputStream.flush(); }页面部分:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script type="text/javascript" src="../js/jquery-1.4.4.min.js"></script><script type="text/javascript" src="../js/jquery.form_utf8.js"></script><link rel="stylesheet" href="../css/rabb.css"><title>Insert title here</title></head><body><div id="mask"></div><div id="login"><span id="close_login">×</span><form name="loginForm" id="loginForm" action="../login/checkLogin"><ul><li class="tit">登录</li><li style="margin-top:40px;"><input name="username" id="username" type="text" placeholder="请输入用户名" class="input_username"></li><li><input name="password" id="password" type="password" placeholder="请输入密码" class="input_password"></li><li><input name="code" id="code" type="text" placeholder="请输入验证码" class="input_code"><img id="licenceImg" src="../login/maskCode" border="0" width="80px" height="30px" align="absmiddle" alt='验证码,看不清楚? 请点击刷新验证码' onClick="refreshImage();" style="cursor: pointer;"><a href="javascript:refreshImage();" style="font-size: 12px;color:#FF7F50;margin-left: 2px;">换一张</a></li><li style="margin-top:40px;"><input onclick="showRequest();" type="submit" class="input_submmit" onvalue="登录"/></li><li><span id="loginInfo" style="font-size: 14px;color:#FF7F50;margin-left: 2px;"></span></li></ul></div><div class="more"><div class="menudiv"><a href="javascript:;" id="btn">登录</a><a href="javascript:;" id="btn2">退出</a></div></div></body><script type="text/javascript">$(document).ready(function() {var options = {beforeSubmit : showRequest, // pre-submit callback success : showResponse, // post-submit callback dataType : 'xml',resetForm : false};$('#loginForm').ajaxForm(options);var user = "${username}";if(user!=''){$("#btn").html("当前用户:"+user);$("#btn2").show();$("#btn2").click(function(){$("#mask").show();$("#login").show();window.location.href = "../login/logout";});}else{$("#btn").click(function(){$("#mask").show();$("#login").show();$("#loginInfo").html("");});$("#close_login").click(function(){$("#mask").hide();$("#login").hide();});}});function showRequest() {if($("#username").val()==""){$("#loginInfo").html("请输入用户名!");return false;}else if($("#password").val()==""){$("#loginInfo").html("请输入密码!");return false;}else if($("#code").val()==""){$("#loginInfo").html("请输入验证码!");return false;}else{$("#loginInfo").html("正在登陆...");return true;}}function showResponse(responseXML){var result = $("result", responseXML).text();var status = $("status", responseXML).text();$("#loginInfo").html(result);if(status==6){window.location.href = "../hellorabbit/login";}}function refreshImage(img) {var imageUrl = '../login/maskCode'; //生成图片var imgs = document.getElementById("licenceImg");imgs.src = imageUrl + '?' + Math.random();}</script></html>
实现效果:
阅读全文
0 0
- 基于SpringMVC登录模块验证码的生成与校验
- SpringMVC验证码生成,点击刷新及验证--基于kaptcha
- 基于JSR-303与springMVC 4的自定义后台校验
- springMVC登录验证码
- springMVC登录验证码的问题
- .NET注册登录模块注意问题之验证码的生成及使用
- 带图形验证码的登录模块
- 基于python的验证码生成与识别1—生成简单的验证码
- SpringMvc生成验证码
- springmvc 生成验证码
- SPringMVC 生成验证码
- SpringMVC 生成验证码
- JavaWeb简单的单点登录、验证码校验功能实现
- 基于springMVC的验证码实现方法
- springmvc生成计算形式的验证码
- 登录页面的验证码的生成
- 基于验证码模拟登录的爬虫
- java生成登录验证码的方法
- ASM 汇编
- Ubuntu 16.04 安装 uTorrent
- 2017年6月javaweb实训笔记
- 惯性滚动及引发的问题整理
- C#使用itextsharp对pdf文件进行分割的几种方法
- 基于SpringMVC登录模块验证码的生成与校验
- windows ping 不通虚拟机
- 三向城(NOIP模拟题)
- AJAX, SUCCESS没有反应???
- Java线程(七):AbstractExecutorService、CompletionService、ExecutorCompletionService
- 欢迎使用CSDN-markdown编辑器
- python最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- hdu 1892 See you~(二维树状数组)
- chrome浏览器中的Timing详情说明