java验证码(采用struts2实现)
来源:互联网 发布:网络理财收益排行榜 编辑:程序博客网 时间:2024/06/14 20:18
第一步:编写验证码的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
- <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> </span><span style="font-size: 18px;"> </span>
第三步:编写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>
0 0
- java验证码(采用struts2实现)
- java验证码(采用struts2实现)
- java验证码(采用struts2实现)
- struts2实现验证码
- Struts2实现验证码
- struts2验证码实现
- Java乔晓松-Struts2用Action实现的验证码
- 【Java基础】采用Filter实现AOP完成统一登录验证
- Struts2中实现验证码
- struts2 实现图片验证码
- struts2 实现图片验证码
- 登陆验证码(struts2实现)
- Struts2 实现验证码 登陆
- 登陆验证码(struts2实现)
- struts2验证码登陆实现
- struts2实现验证码登陆
- Struts2实现验证码功能
- Ajax+Struts2实现验证码验证功能
- MFC中修改大部分控件的颜色
- POJ 2251
- hdu 1010
- OpenGL中gl,glu,glut的关系(扩展)
- T-SQL查询处理执行顺序(一)
- java验证码(采用struts2实现)
- 两种内容加载显示方式
- Fedora 16下让指定服务开机自动运行
- C语言编写可变函数
- YYUC输出联动select标签
- POJ 3678 深刻理解2SAT
- BNUOJ--29379 斩
- Get和Post请求的区别
- Struts2 -- 原理简述