产生随机数action:
package com.cetc.struts.action.t00hy;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.cetc.util.BaseAction;
import com.cetc.util.MyDebug;
public class RandomAction extends BaseAction {
private static final long serialVersionUID = -2269414914034390741L;
private Random random;
private BufferedImage image;
private Font font;
private int distance;
public String getCheckCodeImage(String str,int show,OutputStream output) throws IOException{
random = new Random();
image = new BufferedImage(70,25,BufferedImage.TYPE_3BYTE_BGR);
font = new Font("Arial",Font.PLAIN,20);
this.distance = 15;
Graphics d = image.getGraphics();
d.setColor(Color.WHITE);
d.fillRect(0,0,image.getWidth(),image.getHeight());
d.setColor(new Color(random.nextInt(100)+100,random.nextInt(100)+100,random.nextInt(100)+100));
for (int i = 0; i < 10; i++) {
d.drawLine(random.nextInt(image.getWidth()),random.nextInt(image.getHeight()),random.nextInt(image.getWidth()),random.nextInt(image.getHeight()));
}
d.setColor(Color.BLACK);
d.setFont(font);
String checkCode = "";
char tmp = 0;
int x = -distance;
for (int i = 0; i < show; i++) {
tmp = str.charAt(random.nextInt(str.length()-1));
checkCode = checkCode + tmp;
x = x + distance;
d.setColor(new Color(random.nextInt(100)+50,random.nextInt(100)+50,random.nextInt(100)+50));
d.drawString(tmp+"",x,random.nextInt(image.getHeight()-(font.getSize()))+(font.getSize()));
}
d.dispose();
ImageIO.write(image,"jpeg",output);
return checkCode;
}
public String execute() throws Exception {
MyDebug.println("-------RandomAction-----------");
HttpServletResponse response = ServletActionContext.getResponse();
getSession().put("random",this.getCheckCodeImage("ABCDEFGHJKLMNPQRSTUVWXYZ123456789",4,response.getOutputStream()));
return SUCCESS;
}
}
struts配置文件中加入:
<package name="random" extends="struts-default">
<action name="random" class="com.cetc.struts.action.t00hy.RandomAction">
<result name="success">/pages/home/random.jsp</result>
</action>
</package>
random.jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
out.clear();
out = pageContext.pushBody();
%>
register.jsp页面加入:
<tr>
<td class='labeltable_middle_td_01' align=right>验证码</td>
<td colspan="5" >
<s:textfield name="num" maxlength="4" cssClass="input" theme="simple" cssStyle="ime-mode:disabled;"/> <a title="看不清吗?换一张吧!" href='javascript:show(document.getElementById("random"))'><img src="<%=basePath%>random.action" id="random" border="0" /></a>
</td>
</tr>
js:
function show(o){
//重载验证码
var timenow = new Date().getTime();
o.src="<%=basePath%>random.action?d="+timenow;
/*
//超时执行;
setTimeout(function(){o.src="<%=basePath%>random.action?d="+timenow;},20);
*/
}
分享到:
相关推荐
5. **易于集成**:Jcaptcha可以轻松地集成到各种Java Web框架中,如Spring、Struts等。 6. **安全性**:Jcaptcha采用安全的哈希算法来存储和验证验证码,确保每次请求的验证码都是唯一的,并且在使用后立即失效。 ...
2. **图文验证码模块**:通过生成随机的图形验证码来增加安全性,防止恶意攻击。 3. **用户注册和登录模块**:实现用户的注册和登录功能,确保每个用户都有唯一的账户信息。 4. **会员密码找回模块**:当用户忘记...
- 自定义标签实现特定功能,如图形验证码。 #### 系统需求与设计 - **需求分析**:明确网站的具体功能和性能要求,确保能够满足不同用户的需求。 - **概要设计**: - 设计目标:明确设计的目的和原则。 - 总体...
10. **图形验证码**:为了防止机器人或恶意攻击,管理员登录界面通常会使用图形验证码,而用户登录界面可能省略,以提高用户体验。 11. **分页技术**:在大型数据列表展示时,分页技术用于将数据分成多个部分,让...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...