java验证码(采用struts2实现)转
第一步:编写验证码的Action
1 package com; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.Graphics; 6 import java.awt.image.BufferedImage; 7 import java.util.Random; 8 9 import javax.imageio.ImageIO; 10 import javax.servlet.ServletOutputStream; 11 import javax.servlet.http.HttpServletRequest; 12 import javax.servlet.http.HttpServletResponse; 13 import javax.servlet.http.HttpSession; 14 15 import org.apache.commons.lang.RandomStringUtils; 16 import org.apache.struts2.ServletActionContext; 17 public class AuthCodeAction { 18 private HttpServletResponse response = ServletActionContext.getResponse(); 19 private HttpServletRequest request = ServletActionContext.getRequest(); 20 21 public String execute() { 22 try { 23 int width = 50; 24 int height = 18; 25 // 取得一个4位随机字母数字字符串 26 String s = RandomStringUtils.random(4, true, true); 27 28 // 保存入session,用于与用户的输入进行比较. 29 // 注意比较完之后清除session. 30 HttpSession session = request.getSession(true); 31 session.setAttribute("authCode", s); 32 33 response.setContentType("images/jpeg"); 34 response.setHeader("Pragma", "No-cache"); 35 response.setHeader("Cache-Control", "no-cache"); 36 response.setDateHeader("Expires", 0); 37 38 ServletOutputStream out = response.getOutputStream(); 39 BufferedImage image = new BufferedImage(width, height, 40 BufferedImage.TYPE_INT_RGB); 41 Graphics g = image.getGraphics(); 42 // 设定背景色 43 g.setColor(getRandColor(200, 250)); 44 g.fillRect(0, 0, width, height); 45 46 // 设定字体 47 Font mFont = new Font("Times New Roman", Font.BOLD, 18);// 设置字体 48 g.setFont(mFont); 49 50 // 画边框 51 // g.setColor(Color.BLACK); 52 // g.drawRect(0, 0, width - 1, height - 1); 53 54 // 随机产生干扰线,使图象中的认证码不易被其它程序探测到 55 g.setColor(getRandColor(160, 200)); 56 // 生成随机类 57 Random random = new Random(); 58 for (int i = 0; i < 155; i++) { 59 int x2 = random.nextInt(width); 60 int y2 = random.nextInt(height); 61 int x3 = random.nextInt(12); 62 int y3 = random.nextInt(12); 63 g.drawLine(x2, y2, x2 + x3, y2 + y3); 64 } 65 66 // 将认证码显示到图象中 67 g.setColor(new Color(20 + random.nextInt(110), 20 + random 68 .nextInt(110), 20 + random.nextInt(110))); 69 70 g.drawString(s, 2, 16); 71 72 // 图象生效 73 g.dispose(); 74 // 输出图象到页面 75 ImageIO.write((BufferedImage) image, "JPEG", out); 76 out.close(); 77 } catch (Exception e) { 78 e.printStackTrace(); 79 } 80 return null; 81 } 82 83 private Color getRandColor(int fc, int bc) { // 给定范围获得随机颜色 84 Random random = new Random(); 85 if (fc > 255) 86 fc = 255; 87 if (bc > 255) 88 bc = 255; 89 int r = fc + random.nextInt(bc - fc); 90 int g = fc + random.nextInt(bc - fc); 91 int b = fc + random.nextInt(bc - fc); 92 return new Color(r, g, b); 93 } 94 }
第二步:配置action
<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts><package name="test" namespace="/test" extends="struts-default"><action name="authCode" class="com.AuthCodeAction" method="execute"></action></package> </struts>
第三步:编写jsp页面(采用jquery实现动态刷新)
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><base href="<%=basePath%>"><title>验证码</title><script type="text/javascript" src="js/jquery-1.6.2.min.js"></script><script type="text/javascript">function changeImg(){ $("#authCode").attr("src","test/authCode.action?d="+new Date().valueOf()); } </script></head><body><center><br><img src="test/authCode.action" alt="验证码" id="authCode" οnclick="changeImg()"> <a href="#" οnclick="changeImg()">看不清,换一张!</a> </center></body> </html>
java验证码(采用struts2实现)转相关推荐
- java 验证码透明背景_Java中的证书透明度验证
java 验证码透明背景 因此,我有一个幼稚的想法,即除了证书有效性检查(在Java中)之外,将证书透明性验证作为每个请求的一部分也很容易. 牺牲了整个周末的一半时间,我可以证明这并不是一件小事. 但 ...
- java 验证码生成和验证
1.java 验证码生成与校验原理: 后台生辰验证码图片,将图片传到前台: 后台在session中保存验证码内容: 前台输入验证码后传到后台在后台取出session保存的验证码进行校验. 2.图片生成 ...
- java 验证码_java实现简单的验证码功能
最近要做一个网站,要求实现验证码程序,经过不断调试,终于成功实现功能. 一.验证码生成类 生成验证码的话需要用到java的Graphics类库,画出一个验证码 废话不多说,直接上代码 package ...
- java 验证码旋转,java实现动态验证码
java动态实现验证码,供大家参考,具体内容如下 [实现效果] 点击图片或者文字可以更换验证码 验证码随机生成,由大小写字母和数字组成 验证码字体颜色随机生成,字母角度有偏转 干扰线随机分布 在这里插 ...
- Java验证码jar包ValidateCode.jar的使用(附百度网盘下载)
Java验证码jar包ValidateCode.jar的使用(附百度网盘下载地址) 在项目中我们会经常用写图片验证码这个功能.但是自己去封装也挺繁琐的,这里提供给各位小伙伴一个很好用的生成图片验证码的 ...
- java验证码识别库
java验证码识别库 使用J4L识别验证码 使用 Tess4J 进行 OCR 识别 使用J4L识别验证码 将解压文件下bits64目录的三个文件 liblept168.dll tess3Wrapper ...
- java验证码效果,和图片缩略效果
java验证码效果,和图片缩略效果 效果图:验证码 效果图:缩略 这两个效果我做在了一个类里面,可以进行调用,直接上代码 注:要是复制粘贴此代码,需要更改自己所使用的字体,也可以用我这个字体,记得更改 ...
- 【Java EE (Struts2 + Spring + Hibernate)开发】:Struts2(二)之【拦截器机制】
[Java EE (Struts2 + Spring + Hibernate)开发]:Struts2(二)之[拦截器机制] 本文地址:http://blog.csdn.net/shanglianlm/ ...
- java 生成图片验证码结合struts2使用
验证码生成器类 package com.itest.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...
最新文章
- Python使用matplotlib可视化散点图、使用seaborn中的lmplot函数使用多子图可视化不同分组的散点图最优拟合线性回归曲线
- 脑电图伪迹去除方法汇总
- 解决python安装第三方库速度很慢的问题(opencv为例)
- Linux 命令之 tail -- 在屏幕上显示指定文件的末尾若干行/显示文件尾部内容/查看文件尾部内容
- Android堆栈分析
- 标记三维点_便携式3D扫描仪全自动三坐标测量机三维扫描设计扫描测量摄影
- javascript中定时器interval的使用
- 常见移动机器人运动学模型总结(图片版)
- java 编译开关_Java开关盒字符串
- Win10技巧:如何确定电脑是否适用Hyper-V虚拟机?
- 理解Linux高性能网络架构的那些事
- halcon手眼标定
- vdbench数据校验翻译
- IDA Pro、OllyDbg、LordPE和UltraEdit简单实用实验
- 热血传奇GOM引擎问题集锦
- 基于ArcScene简单实验操作
- Animated之基础篇-概述
- 【渲染管线】关于透明度混合blend
- iOS 支付 [支付宝 银联 微信]
- jmeter之取样器(HTTP请求、调试取样器)