`

jsp java 生成中文验证码

阅读更多

这里是用struts2 ,继承了struts2 里的Rrsult类,使用时自定义一个返回结果即可:

       <result-types>

          <result-type name="imageResult" class="生成验证码的类" />

       </result-types>

 

 

action方法里面什么都不需要写,直接返回success即可

    <action name="image" class="com.hzdracom.action.AdminManagerAction" method="createRand">

        <result type="imageResult" name="success"></result>

    </action>

 

 

当然,也可以用其它方法调用该类,使其把生成的验证码图片显示到页面上即可,

验证码生成类:

 

 

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.http.HttpServletResponse;

 

import org.apache.struts2.ServletActionContext;

 

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.Result;

 

public class ImageResult implements Result {

 

 

 

    public void execute(ActionInvocation invocation) throws Exception {

       HttpServletResponse response = ServletActionContext.getResponse();

 

       // 设置页面不缓存

       response.setHeader("Pragma", "No-cache");

       response.setHeader("Cache-Control", "no-cache");

       response.setDateHeader("Expires", 0);

       // 设置图片的长宽

       int width = 176, height = 30;

       // 设置备选汉字,剔除一些不雅的汉字 这里只说明,省略具体汉字

       String base = "\u7684\u4e00\u4e86\u662f\u6211 。。。省略汉字。。。;

       // 备选汉字的长度

       int length = base.length();

 

       // 创建内存图像

       BufferedImage image = new BufferedImage(width, height,

              BufferedImage.TYPE_INT_RGB);

       // 获取图形上下文

       Graphics g = image.getGraphics();

 

       // 创建随机类的实例

       Random random = new Random();

 

       // 设定图像背景色(因为是做背景,所以偏淡)

       g.setColor(getRandColor(random, 200, 250));

       g.fillRect(0, 0, width, height);

 

       // 备选字体

       String[] fontTypes = { "\u5b8b\u4f53", "\u65b0\u5b8b\u4f53",

              "\u9ed1\u4f53", "\u6977\u4f53", "\u96b6\u4e66" };

       int fontTypesLength = fontTypes.length;

 

       // 在图片背景上增加噪点

       g.setColor(getRandColor(random, 160, 200));

       g.setFont(new Font("Times New Roman", Font.PLAIN, 14));

       for (int i = 0; i < 6; i++) {

           g.drawString("*********************************************", 0,

                  5 * (i + 2));

       }

 

       // 取随机产生的认证码(6个汉字)

 

       // 保存生成的汉字字符串

       String sRand = "";

       for (int i = 0; i < 6; i++) {

           int start = random.nextInt(length);

           String rand = base.substring(start, start + 1);

           sRand += rand;

 

           // 设置字体的颜色

           g.setColor(getRandColor(random, 10, 150));

           // 设置字体

           g.setFont(new Font(fontTypes[random.nextInt(fontTypesLength)],

                  Font.BOLD, 18 + random.nextInt(6)));

           // 将此汉字画到图片上

           g.drawString(rand, 24 * i + 10 + random.nextInt(8), 24);

       }

 

       // 将认证码存入session

       // 将认证码存入SESSION

       ServletActionContext.getRequest().getSession().setAttribute("rand",

              sRand);

 

       g.dispose();

 

       // 输出图象到页面

       ImageIO.write(image, "JPEG", response.getOutputStream());

 

    }

 

    // 生成随机颜色

    Color getRandColor(Random random, int fc, int bc) {

       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);

    }

 

}

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    java生成验证码源码包括彩色验证码

    java生成验证码源码包括彩色验证码 包括jsp生成验证码和彩色验证码

    JSP自动生成彩色验证码

    彩色验证码的实现是在生成验证码的基础上增加了颜色元素,使得验证码更难以被自动化工具识别,增强了安全性。 JSP是一种基于Java的服务器端脚本语言,用于创建动态网页。在本项目中,`code.jsp`是核心页面,它负责...

    利用jsp生成图片验证码

    1. **随机生成验证码**:首先,我们需要创建一个包含随机字符的字符串作为验证码。这些字符可以是字母、数字或者是两者混合。通常,验证码的长度为4到6个字符。在JSP中,我们可以使用`java.util.Random`类来生成...

    java 生成动态gif 验证码

    - **安全性**:可以考虑使用更复杂的算法生成验证码,如汉字、自定义图形等,提高机器识别的难度。 - **用户体验**:减少动画帧数,避免过于复杂的干扰元素,确保验证码清晰易读。 - **可配置性**:允许开发者...

    java jsp 生成彩色验证码+验证功能代码,可直接运行,没有数据库

    - **使用`&lt;jsp:include&gt;`标签**:将生成验证码的Java代码包含到JSP页面中。 - **`&lt;img&gt;`标签**:生成的验证码图片以HTTP响应的方式返回,通过`&lt;img&gt;`标签显示在网页上。 - **session管理**:使用`session....

    java自动生成验证码

    本代码用了JAVA JSP,是一个简间的自动生成验证码,很适合初学者学

    jsp随机生成验证码

    // 生成验证码逻辑 String captchaCode = generateCaptchaCode(); session.setAttribute("captcha", captchaCode); // 将验证码绘制为图像并输出 byte[] imageBytes = drawCaptchaImage(captchaCode); ...

    JSP生成数字验证码程序例子

    5. **存储验证码**:在生成验证码后,我们需要将其值存储在服务器的会话(session)中,以便稍后验证用户输入时进行比较。 6. **输出图像**:最后,JSP将生成的图像作为HTTP响应的一部分发送给客户端浏览器,同时在...

    java生成图片验证码

    生成四种样式的图片验证码 部署在web容器内,将web.xml,及index.jsp放入指定位置,启动后,即可看到效果。

    java登录验证码生成代码

    一个登录验证生成验证码用struts 后台生成验证码在jsp页面输出生成图片

    JSP 随机验证码

    本话题将深入探讨如何使用Java Server Pages (JSP)来生成数字形式的随机验证码,并实现图片化显示及刷新功能。 首先,我们需要理解JSP的基本原理。JSP是一种动态网页技术,它允许开发人员在HTML页面中嵌入Java代码...

    JSP 生成随机验证码图片(经典老代码)

    JSP 生成随机验证码图片(经典老代码)

    使用jsp生成彩色汉字验证码

    本篇内容主要介绍了如何使用Java Server Pages (JSP)来生成彩色的汉字验证码。通过自定义颜色、字体以及添加干扰线等技术手段,可以有效提升验证码的安全性和用户体验。 #### 三、关键技术点解析 ##### 1. 设置...

    java,jsp 生成验证码

    采用jsp 生成验证码,我自己使用过的。使用方法: &lt;img src="./../function/imagejsp.jsp" style="float: left"&gt;

    java完美的验证码生成

    - 创建一个Servlet,处理HTTP请求,生成验证码,将其保存在session中,并返回验证码图片的二进制数据。 - 验证用户输入时,从session中获取原始验证码字符串进行比较。 5. **ajax无刷新验证码**: - 使用...

    java生成验证码代码

    验证码是Web应用中常用的一种安全机制,用于防止自动化的机器人或者恶意软件进行非法操作,...这就是"java生成验证码代码"的基本原理和实现流程。通过这种方式,我们可以为Web应用提供一个简单但有效的安全防护措施。

    Jsp-color-code.rar_java 验证码_jsp_汉字验证码_随机验证码_验证码

    本项目“Jsp-color-code.rar”关注的是使用Java和JSP技术生成彩色汉字验证码,这涉及到多个关键知识点,下面将详细阐述。 首先,Java验证码的实现通常基于Servlet和JSP技术。Servlet是Java服务器端编程的基础,可以...

    jsp生成验证码很好的例子

    "jsp生成验证码很好的例子"这个标题暗示我们将探讨如何使用JavaServer Pages(JSP)技术来创建一个有效的验证码系统。 首先,验证码的生成过程包括以下几个步骤: 1. **随机字符生成**:验证码通常由一组随机的...

    生成验证码 jsp 图片验证码

    1. **随机生成验证码**:首先,我们需要创建一个函数,它能生成一个随机的字符串,长度通常为4-6位。这个字符串可以包含大小写字母和数字。可以使用Java的`Random`类和`StringBuilder`来实现。 2. **绘制图片**:...

Global site tag (gtag.js) - Google Analytics