`
webcode
  • 浏览: 6080425 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

struts2中生成验证码

 
阅读更多

action:

package com.xy.action;

import java.awt.Color;

import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Map;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;


public class CodeGenAction extends ActionSupport implements SessionAware,ServletResponseAware,RequestAware
{

<wbr>private static int I_WIDTH = 60;<br><wbr>private static int I_HEIGHT = 18;<br><wbr>private static Font VALIDATECODE_FONT = new Font("Times<wbr><wbr> New<wbr><wbr> Roman ", Font.PLAIN, 18);<br><wbr>private Map&lt;String,Object&gt; session;<br><wbr>private HttpServletResponse response;<br><wbr>private Map&lt;String, Object&gt; request;<br><wbr><br><wbr>public String execute()<br><wbr>{<br><wbr><wbr>response.setHeader("Pragma", "No-cache");</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr>response.setHeader("Cache-Control", "no-cache");</wbr></wbr>

<wbr><wbr>response.setDateHeader("Expires", 0);</wbr></wbr>

<wbr><wbr>response.setContentType("image/jpeg");</wbr></wbr>

<wbr><wbr>// 在内存中创建图象<br><wbr><wbr>BufferedImage image = new BufferedImage(I_WIDTH, I_HEIGHT, BufferedImage.TYPE_INT_RGB);<br><wbr><wbr>// 获取图形上下文<br><wbr><wbr>Graphics g = image.getGraphics();<br><wbr><wbr>// 设定背景色<br><wbr><wbr>g.setColor(Color.white);<br><wbr><wbr>g.fillRect(0, 0, I_WIDTH, I_HEIGHT);<br><wbr><wbr>// 画边框<br><wbr><wbr>g.setColor(Color.blue);<br><wbr><wbr>g.drawRect(0, 0, I_WIDTH - 1, I_HEIGHT - 1);<br><wbr><wbr>Long validate = new Long(10000 + Math.round((Math.random() * 90000)));<br><wbr><wbr>String validateCode = validate.toString();<br><wbr><wbr>session.put("validateCode", validateCode);<br><wbr><wbr><br><wbr><wbr>// 将认证码显示到图象中<br><wbr><wbr>g.setColor(Color.black);<br><wbr><wbr>g.setFont(VALIDATECODE_FONT);<br><wbr><wbr>// g.drawString(rand,10,15);<br><wbr><wbr>g.drawString(validateCode.toString(), 7, 15);<br><wbr><wbr>// 随机产生88个干扰点,使图象中的认证码不易被其它程序探测到<br><wbr><wbr>Random random = new Random();<br><wbr><wbr>for (int iIndex = 0; iIndex &lt; 128; iIndex++)<br><wbr><wbr>{<br><wbr><wbr><wbr>int x = random.nextInt(I_WIDTH);<br><wbr><wbr><wbr>int y = random.nextInt(I_HEIGHT);<br><wbr><wbr><wbr>g.drawLine(x, y, x, y);<br><wbr><wbr>}<br><wbr><wbr>// 图象生效<br><wbr><wbr>g.dispose();<br><wbr><wbr><br><wbr><wbr>try<br><wbr><wbr>{<br><wbr><wbr><wbr>// 输出图象到页面<br><wbr><wbr><wbr>ServletOutputStream sos = response.getOutputStream();<br><wbr><wbr><wbr>ImageIO.write(image, "jpeg", sos);<br><wbr><wbr><wbr>sos.close();<br><wbr><wbr><wbr>return SUCCESS;<br><wbr><wbr>}<br><wbr><wbr>catch (Exception e)<br><wbr><wbr>{<br><wbr><wbr><wbr>return "error";<br><wbr><wbr>}<br><wbr>}<br><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr>public void setSession(Map&lt;String, Object&gt; session)<br><wbr>{<br><wbr><wbr>this.session = session;<br><wbr>}</wbr></wbr></wbr></wbr></wbr>

<wbr>public void setServletResponse(HttpServletResponse response)<br><wbr>{<br><wbr><wbr>this.response = response;<wbr><wbr><br><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr>public void setRequest(Map&lt;String, Object&gt; request)<br><wbr>{<br><wbr><wbr>this.request = request;<br><wbr>}</wbr></wbr></wbr></wbr></wbr>

}


struts.xml,值得注意的时,result type是stream类型

<package name="login" namespace="/" extends="struts-default">
<wbr>&lt;action name="toCode" class="com.xy.action.CodeGenAction"&gt;<br><wbr><wbr>&lt;result type="stream"&gt;<br><wbr><wbr><wbr>&lt;param name="contentType"&gt;image/jpeg&lt;/param&gt;<br><wbr><wbr>&lt;/result&gt;<br><wbr>&lt;/action&gt;<br> &lt;/package&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>


jsp:

<td align="left">
<input id="txtCode" type="text" style="width: 150px" />
<img id="imgCode" src="toCode" />
<a href="javascript:change()"> 看不清,换一张</a>
</td>

<wbr>function change()<br><wbr>{<br><wbr><wbr><wbr><wbr>var img=document.getElementByIdx_x("imgCode");<br><wbr>img.src="toCode?time="+new Date().getTime();<br><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

分享到:
评论

相关推荐

    Struts2的验证码生成

    在Struts2中生成验证码可以帮助提升网站的安全性,防止恶意注册、自动登录和其他攻击。 生成验证码主要涉及以下几个步骤: 1. **安装库**:首先,我们需要一个验证码生成库。例如,我们可以使用Apache Commons ...

    struts2 生成验证码

    3. **Action**:在Struts2中负责处理业务逻辑,并响应用户请求的类。 4. **配置文件**:Struts2使用配置文件来定义项目的结构和组件。 5. **Servlet API**:一组Java接口,用于处理HTTP请求和响应。 #### 三、技术...

    struts2生成中文验证码的Action

    这个类将包含生成验证码的方法,以及处理用户提交验证的逻辑。 3. **生成中文验证码**: 验证码生成通常涉及随机选择汉字并组合。你可以使用Java的`Random`类和预先准备的汉字字符数组来生成随机的中文字符串。确保...

    struts2-生成图片验证码

    在Struts2中实现这个功能,我们需要以下步骤: 1. **创建验证码类(CaptchaAction)**: 首先,我们需要创建一个Action类,负责生成和验证验证码。这个类将包含一个方法来生成随机字符串,并将其保存在session中,同时...

    struts中实现验证码

    在这个例子中,`get`方法可能被重写以生成验证码。它可能会创建一个`ByteArrayOutputStream`来存储图像数据,使用`ImageIO`和`ImageOutputStream`来绘制随机字符串到图像上,然后返回一个`ByteArrayInputStream`,这...

    struts2生成验证码

    生成验证码图片主要涉及到两个类: 1.SecurityCode.java --- 生成验证码 SecurityCode类中提供的验证码分三个难度,易(全数字)、中(数字+小写英文)、难(数字+大小写英文)。难度使用枚举SecurityCodeLevle表示...

    基于struts2的验证码生成

    5. **结果映射(Result Mapping)**:在Struts2的配置文件(struts.xml)中,我们需要定义Action类的不同结果,比如生成验证码成功后的页面跳转,或者验证失败后的提示信息。 6. **JSP页面**:前端展示部分,包括...

    struts2实现验证码

    在Struts2中实现验证码,我们通常会涉及以下几个关键步骤: 1. **生成验证码**:创建一个Java类,用于生成随机的字符串或数字。这个类可能包含一个方法,返回一个指定长度的字符串,例如包含4位数字。我们可以使用...

    struts2生成验证码_

    1.SecurityCode.java --- 生成验证码 SecurityCode类中提供的验证码分三个难度,易(全数字)、中(数字+小写英文)、难(数字+大小写英文)。难度使用枚举SecurityCodeLevle表示,避免使用1、2、3这样没有明确意义...

    Struts2验证码

    以下将详细讲解如何在Struts2中创建前端注册验证码。 首先,验证码的实现通常包括两个主要部分:后端生成验证码和前端展示及验证。 1. **后端生成验证码** 后端通常使用Java来生成随机的数字或字母组合。你可以...

    使用struts2.0实现的验证码功能

    Action可能包含一个方法,该方法生成验证码并将其设置到Session中。 - 同时,还需要配置一个结果(Result)类型,比如`stream`,用于将生成的验证码图片直接输出到浏览器。 3. **JSP页面**: - 登录页面的HTML或...

    struts2做的验证码(区分数字和字母)

    `CaptchaAction`类中,`generate`方法负责生成验证码并返回图像,而`validate`方法接收用户输入并进行验证。 总之,Struts2中的验证码实现涉及了Java图形处理、随机字符串生成以及HTTP请求处理等多个技术领域。这个...

    验证码生成工具类

    在Java中,生成验证码的步骤包括: 1. **设计验证码内容**:首先,我们需要创建一个包含随机字符或数字的字符串。可以使用`java.util.Random`类生成随机数,并结合字符数组生成随机字符串。为了增加难度,通常会...

    struts2_中的验证码

    在Struts2应用中,通常会将这个Servlet配置为一个Action,当用户请求验证码时,通过Action调用`service`方法生成验证码并显示。在用户提交表单时,服务器会检查用户输入的验证码是否与生成的验证码匹配,以此来确认...

    struts2 图片 验证码

    这个类可能包含一个`generate`方法,该方法将调用`RandomCode`类生成验证码,并将其存储在一个会话级的属性中,例如`session.setAttribute("captcha", code)`。 3. **创建结果类型**: Struts2使用结果类型来决定...

    Struts2验证码用户登录

    在Struts2框架中,我们可以创建一个Action类,该类负责处理生成验证码的请求,如`GenerateVerificationCodeAction`。这个Action将执行上述步骤,并返回生成的验证码图片。 JavaScript在其中的作用主要是在前端与...

    struts2验证码

    3. **结果类型(Result)**:生成验证码后,需要将生成的图像返回给客户端。你可以配置一个特定的结果类型,如“stream”,用于输出图像流到HTTP响应中。 4. **JSP/FreeMarker模板**:前端页面上需要有一个表单让...

    struts2+spring3验证码登录实例

    在Struts2中,你可以创建一个专门处理登录请求的Action类,这个类通常会注入Spring管理的业务服务。当用户提交登录表单时,Action会接收到请求,验证用户名、密码以及验证码的正确性。验证码通常会通过Session存储,...

    Struts2 图片验证码

    首先,我们需要创建一个Action类,这个类负责生成验证码。Action类会生成一串随机字符串,然后将其保存在session中,同时将字符串转化为图像。在生成图像的过程中,我们可以通过改变字体、颜色、角度、噪声点等元素...

    struts2 验证码----web界面生成几种常见的验证码

    在Struts2中,我们可以使用插件或自定义拦截器来实现这些功能。这里我们将主要讨论图像验证码的生成方法。 1. **图像验证码**:最常见的验证码类型,它显示一个随机生成的文本,用户需要输入他们看到的字符。Struts...

Global site tag (gtag.js) - Google Analytics