`
bill600
  • 浏览: 5908 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

一个简单的struts2验证码

阅读更多

项目中要用验证码,在网上找到的struts2验证码是把返回结果配置成文件流,通过类似于下载来实现的,不太理想。于是把孙修鹏网友的代码稍作修改,自己实现了一个。struts2也是遵循请求响应的模式,如果把响应直接写到response里面,则返回结果不做配置就可以了。

代码如下

action

其中makeImage方法的返回结果是void

 

package com.image;

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

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Image extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void makeImage() throws Exception{
		Map<String, Object> session = ActionContext.getContext().getSession();
		HttpServletResponse res = ServletActionContext.getResponse();
		BufferedImage img = new BufferedImage(68, 22,
				BufferedImage.TYPE_INT_RGB);

		// 得到该图片的绘图对象

		Graphics g = img.getGraphics();

		Random r = new Random();

		Color c = new Color(200, 150, 255);

		g.setColor(c);
		// 填充整个图片的颜色
		g.fillRect(0, 0, 68, 22);
		// 向图片中输出数字和字母

		StringBuffer sb = new StringBuffer();

		char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();

		int index, len = ch.length;

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

			index = r.nextInt(len);

			g.setColor(new Color(r.nextInt(88), r.nextInt(188), r.nextInt(255)));
					
			g.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 22));// 输出的字体和大小

			g.drawString("" + ch[index], (i * 15) + 3, 18);// 写什么数字,在图片的什么位置画

			sb.append(ch[index]);

		}

		session.put("piccode", sb.toString());
		

		ImageIO.write(img, "JPG", res.getOutputStream());

	}

}

 

 

配置文件,这里是关键

<action name="image" class="com.image.Image" method="makeImage"></action>

 

大家看到了,返回的结果是空的,返回的内容已经写到response中了,这里就没必要再配置了。

其实框架只是让我们用起来更方便更有效率,但是原理的东西永远不过过时的。

分享到:
评论
1 楼 niuqiang2008 2011-08-28  
谢谢分享 ...

相关推荐

    Struts2验证码

    通过设置`src`属性为一个Struts2的Action,该Action会返回验证码的图片流。 ```html ``` 4. **JavaScript交互** 前端通常需要提供一个刷新验证码的功能,这可以通过JavaScript实现。添加一个按钮,当点击时...

    Struts2的验证码生成

    2. **配置Struts2**:在Struts2的配置文件(struts.xml)中,我们需要定义一个Action,这个Action将负责生成验证码。Action应该有一个结果类型,指向一个JSP页面或者FreeMarker模板,用于显示验证码图片。 3. **...

    struts2 生成验证码

    2. **Struts2**:一个开源的Java EE框架,用于构建企业级Web应用程序。 3. **Action**:在Struts2中负责处理业务逻辑,并响应用户请求的类。 4. **配置文件**:Struts2使用配置文件来定义项目的结构和组件。 5. **...

    最新的struts2验证码.rar

    "最新的struts2验证码.rar"很可能包含了有关如何在Struts2框架下实现验证码功能的示例代码或配置文件。 Struts2验证码的实现通常涉及到以下几个关键知识点: 1. **验证码生成**:验证码通常由随机生成的一串字符或...

    基于struts1.x的验证码实现

    Struts1.x是一个经典的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在Web开发中,验证码(CAPTCHA)是一种重要的安全机制,它用于防止自动化的机器人或恶意软件进行非法操作,如批量注册、垃圾...

    基于Java的实例源码-Struts验证码插件 JCaptcha4Struts2.zip

    Struts验证码插件...总的来说,Struts验证码插件JCaptcha4Struts2是Java Web开发者应对自动化攻击的一个有力工具,它通过简单的集成和配置,即可为Struts2应用提供强大的验证码保护功能,有效提升了系统的安全性。

    Struts2实现的6位数字的验证码程序

    Struts2是一个流行的Java ...总结来说,这个Struts2验证码程序的实现涉及到前端JavaScript交互、后台Java类的图像生成和Struts2的Action处理。它展示了如何结合多种技术来提供安全的用户体验,防止自动化的恶意活动。

    struts2下实现了图片验证码

    通过以上步骤,可以在Struts2框架下实现一个完整的图片验证码功能。这种方法不仅简单高效,而且易于集成到现有的项目中。此外,还可以根据实际需求进一步优化验证码的复杂度和安全性,例如增加扭曲效果、使用更复杂...

    Struts验证码简单实用的小demo

    Struts验证码简单实用的小demo是基于Struts框架实现的一个用于网页身份验证的示例项目。在Web开发中,验证码是一种防止恶意自动程序(如机器人)滥用服务的有效手段,它要求用户在提交表单时输入显示在页面上的随机...

    jcaptcha4struts2-demo-2.0.1.zip_DEMO_JCaptcha4Struts2.jar_jcaptc

    首先,"jcaptcha4struts2-demo-2.0.1.zip"是一个包含Jcaptcha4Struts2验证码插件示例的压缩包,版本为2.0.1。这个DEMO旨在帮助开发者快速理解和应用Jcaptcha4Struts2,为初学者提供了一个基础入门级的学习资源。 ...

    成功的验证码案例-----struts验证码demo

    在本案例中,“成功的验证码案例-----struts验证码demo”是一个基于Struts框架实现的简单易懂的验证码应用。Struts是Java EE平台上的一款开源MVC框架,它为构建Web应用程序提供了强大的结构支持。 首先,我们来理解...

    仿CSDN样式(Struts2中文验证码源代码)

    Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,主要用于构建企业级Web应用。在本项目中,“仿CSDN样式(Struts2中文验证码源代码)”是为了实现类似CSDN登录页面的中文...

    将验证码代码应用于struts2框架

    在IT行业中,Struts2是一个非常流行的Java Web开发框架,它基于MVC(Model-View-Controller)设计模式,提供了一种结构化的方式来构建应用程序。验证码(Verification Code)是网络应用中常用的一种安全机制,用于...

    java web加法验证码实例

    在Spring中,我们可以配置一个Bean来代表验证码服务,然后在Struts2 Action中注入这个服务,以便获取和验证验证码。在Hibernate中,虽然通常不需要直接与验证码交互,但如果有存储用户验证历史需求,我们可以利用...

    基于Struts2的个人信息管理系统

    Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、易于维护的MVC(模型-视图-控制器)架构的应用程序。基于Struts2的个人信息管理系统是使用这一框架来设计和实现的一个典型示例,它涵盖了用户管理...

    JCaptcha4Struts2快速使用指南

    JCaptcha4Struts2 是一个专门为Struts2框架集成JCaptcha验证码服务的插件。JCaptcha本身是一种强大的、可自定义的图像验证码库,旨在防止自动机器人和恶意软件对网站进行非法操作。在Struts2项目中添加JCaptcha验证...

    struts2简单登录

    本项目"struts2简单登录"是基于Struts2框架实现的一个基础登录系统,它采用DAO(数据访问对象)模式来处理数据持久层操作。 在Struts2中,核心概念包括Action、Result和Interceptor。Action是业务逻辑的载体,它...

    struts2 实现登录实例

    本实例将详细讲解如何使用Struts2实现一个简单的登录功能。 一、Struts2基础 Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并改进了其不足,如更灵活的配置、更强的拦截器机制等。Struts2的核心是...

    双鱼林struts2_hibernate人事工资管理系统

    【双鱼林struts2_hibernate人事工资管理系统】是一个基于Java技术栈的开源项目,主要应用于企业的人事管理和工资计算。系统集成了Struts2框架和Hibernate持久化框架,为企业的日常人力资源管理提供了便捷的数据处理...

Global site tag (gtag.js) - Google Analytics