2019独角兽企业重金招聘Python工程师标准>>>

第一步:编写验证码的Action

package com;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.commons.lang.RandomStringUtils;
import org.apache.struts2.ServletActionContext;
public class AuthCodeAction {private HttpServletResponse response = ServletActionContext.getResponse();private HttpServletRequest request = ServletActionContext.getRequest();public String execute() {try {int width = 50;int height = 18;// 取得一个4位随机字母数字字符串String s = RandomStringUtils.random(4, true, true);// 保存入session,用于与用户的输入进行比较.// 注意比较完之后清除session.HttpSession session = request.getSession(true);session.setAttribute("authCode", s);response.setContentType("images/jpeg");response.setHeader("Pragma", "No-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);ServletOutputStream out = response.getOutputStream();BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);Graphics g = image.getGraphics();// 设定背景色g.setColor(getRandColor(200, 250));g.fillRect(0, 0, width, height);// 设定字体Font mFont = new Font("Times New Roman", Font.BOLD, 18);// 设置字体g.setFont(mFont);// 画边框// g.setColor(Color.BLACK);// g.drawRect(0, 0, width - 1, height - 1);// 随机产生干扰线,使图象中的认证码不易被其它程序探测到g.setColor(getRandColor(160, 200));// 生成随机类Random random = new Random();for (int i = 0; i < 155; i++) {int x2 = random.nextInt(width);int y2 = random.nextInt(height);int x3 = random.nextInt(12);int y3 = random.nextInt(12);g.drawLine(x2, y2, x2 + x3, y2 + y3);}// 将认证码显示到图象中g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));g.drawString(s, 2, 16);// 图象生效g.dispose();// 输出图象到页面ImageIO.write((BufferedImage) image, "JPEG", out);out.close();} catch (Exception e) {e.printStackTrace();}return null;}private Color getRandColor(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);}
}

第二步:配置action

<?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" onclick="changeImg()"> <a href="#" onclick="changeImg()">看不清,换一张!</a> </center></body>
</html>

转载于:https://my.oschina.net/java2010/blog/356492

java验证码(采用struts2实现)相关推荐

  1. java 验证码透明背景_Java中的证书透明度验证

    java 验证码透明背景 因此,我有一个幼稚的想法,即除了证书有效性检查(在Java中)之外,将证书透明性验证作为每个请求的一部分也很容易. 牺牲了整个周末的一半时间,我可以证明这并不是一件小事. 但 ...

  2. java 验证码生成和验证

    1.java 验证码生成与校验原理: 后台生辰验证码图片,将图片传到前台: 后台在session中保存验证码内容: 前台输入验证码后传到后台在后台取出session保存的验证码进行校验. 2.图片生成 ...

  3. java 验证码_java实现简单的验证码功能

    最近要做一个网站,要求实现验证码程序,经过不断调试,终于成功实现功能. 一.验证码生成类 生成验证码的话需要用到java的Graphics类库,画出一个验证码 废话不多说,直接上代码 package ...

  4. java 验证码旋转,java实现动态验证码

    java动态实现验证码,供大家参考,具体内容如下 [实现效果] 点击图片或者文字可以更换验证码 验证码随机生成,由大小写字母和数字组成 验证码字体颜色随机生成,字母角度有偏转 干扰线随机分布 在这里插 ...

  5. Java验证码jar包ValidateCode.jar的使用(附百度网盘下载)

    Java验证码jar包ValidateCode.jar的使用(附百度网盘下载地址) 在项目中我们会经常用写图片验证码这个功能.但是自己去封装也挺繁琐的,这里提供给各位小伙伴一个很好用的生成图片验证码的 ...

  6. java验证码识别库

    java验证码识别库 使用J4L识别验证码 使用 Tess4J 进行 OCR 识别 使用J4L识别验证码 将解压文件下bits64目录的三个文件 liblept168.dll tess3Wrapper ...

  7. java验证码效果,和图片缩略效果

    java验证码效果,和图片缩略效果 效果图:验证码 效果图:缩略 这两个效果我做在了一个类里面,可以进行调用,直接上代码 注:要是复制粘贴此代码,需要更改自己所使用的字体,也可以用我这个字体,记得更改 ...

  8. 【Java EE (Struts2 + Spring + Hibernate)开发】:Struts2(二)之【拦截器机制】

    [Java EE (Struts2 + Spring + Hibernate)开发]:Struts2(二)之[拦截器机制] 本文地址:http://blog.csdn.net/shanglianlm/ ...

  9. java验证码(采用struts2实现)转

    第一步:编写验证码的Action 1 package com; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt ...

  10. java 生成图片验证码结合struts2使用

    验证码生成器类 package com.itest.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

最新文章

  1. 互联网+”时代,如何实现高效协同移动办公?
  2. mysql触发器trigger
  3. (八)Eclipse创建Maven项目运行mvn命令
  4. 小爱音箱怎么装app_79元的Redmi小爱音箱怎么样?这里有一份体验报告
  5. 原来自己一直平凡着 2015-10-20
  6. 值从哪里来_Linux used内存到底去哪里了呢?
  7. 让你此生难成大器的七宗罪
  8. 关于mac下连接mysql和mysql workbench连接mysql的异常
  9. 遥感数字图像处理——第三章——空间域处理方法
  10. ubuntu live cd制作
  11. 五路循迹传感器的优点_用五路循迹传感器做循迹
  12. mongodb 基本操作:文档查询
  13. 动环监控系统的服务器配置,动环监控系统服务器维护
  14. 2020 年最具潜力 44 个顶级开源项目,涵盖 11 类 AI 学习框架、平台(值得收藏)...
  15. 计算机硬件与系统软件
  16. python登录面向对象_python基础 面向对象一
  17. DIJ(单源次短路) - Two Paths - HDU 6181
  18. python html模板引擎_flask入门2-模板引擎
  19. Vscode_00_安装Vscode和搭建C/C++开发环境
  20. 手动从注册表添加“从这打开CMD”命令

热门文章

  1. 写给自己,关于对纯技术的追求,以及为了金钱与前途的技术追求
  2. Win 下面配置 memcache
  3. 玩Elastix遇到的几个问题和解决办法。
  4. arm linux内核启动过程详解
  5. Android WiFi 扫描并选择网络进行连接
  6. freeswitch debug
  7. Linux文件系统(四)---三大缓冲区之inode缓冲区 (内存inode映像 )
  8. Activity launchMode
  9. mysql安装包设置本地yum源安装包_mysql 5.7.29 在centos7.6下超简单的本地yum源安装与配置...
  10. 同步升压与异步升压_单相220V转三相380V升压变频器