Struts2返回验证码

配置struts.xml文件

<constant name="struts.enable.DynamicMethodInvocation" value="true" /> 将value改成true 当访问action的时候调用Action类默认不执行execute方法

如果是false的话哪么调用action执行execute方法

<package name="default" namespace="/" extends="struts-default"> namespace:是访问action的前缀  extends:可以继承其他包  name:包的名字

<action name="ValidateBar" class="net.dbet.action.ValidateBarAction"method="download">

name:action的名字 class:当访问action的时候默认执行一个Action类 method:调用这个类中执行的方法

<result name="down" type="stream"> action调用的Action类中的方法默认返回的值 自动匹配对应相同的result name type:以流的方式返回

指定下载文件的格式为jpg:<param name="contentType">image/jpg</param>

<param name="contentType"> application/octet-stream </param>   无论上传什么文件都下载对应的格式文件

<param name="inputName">downloadfile</param>    downloadfile对应的net.dbet.action.FileOploadAction中的sownload方法中的downloadfile对象

</result>

</action>

</package>

创建Jsp页面

<body>

<image src="ValidateBar"></image>  //路径是一个action

</body>

创建Action类

package net.dbet.action;

 

import java.io.FileInputStream;

import net.dbet.util.ValidateBarUtil;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;

public class ValidateBarAction {

private InputStream downloadfile;   与<param name="inputName">downloadfile</param>中的downloadfile一致

public InputStream getDownloadfile() {

return downloadfile;

}

public String download(){

try {

this.downloadfile=ValidateBarUtil.createAsStream(ActionContext.getContext().getSession());

//调用ValidateBarUtil类中的createAsStream方法传递过去当前的session会话

} catch (Exception e) {

e.printStackTrace();

}

return "down";

}

}

创建ValidateBarUtil类

package net.dbet.util;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.Map;

import java.util.Random;

import javax.imageio.ImageIO;

public class ValidateBarUtil {

public static InputStream createAsStream(Map session)

{

return new ByteArrayInputStream(create(session));

}

public static byte[] create(Map session) {// 在内存中创建图象

int width = 60, height = 20;   //定义图像宽度高度

BufferedImage image = new BufferedImage(width, height,

BufferedImage.TYPE_INT_RGB);  //将生成的图片存到BufferedImage里

// 获取图形上下文

Graphics g = image.getGraphics();  //获得画笔

// 生成随机类

Random random = new Random();

// 设定背景色

g.setColor(getRandColor(200, 250));  //画笔的颜色

g.fillRect(0, 0, width, height);  //画一个矩形

// 设定字体

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

// 画边框

// g.setColor(new Color());

// g.drawRect(0,0,width-1,height-1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到

g.setColor(getRandColor(160, 200));  //随即设置画笔颜色

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

int x = random.nextInt(width);

int y = random.nextInt(height);

int xl = random.nextInt(12);

int yl = random.nextInt(12);

g.drawLine(x, y, x + xl, y + yl);

}

// 取随机产生的认证码(4位数字)

String sRand = "";

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

String rand = String.valueOf(random.nextInt(10));

sRand += rand;

// 将认证码显示到图象中

g.setColor(new Color(20 + random.nextInt(110), 20 + random

.nextInt(110), 20 + random.nextInt(110))); // 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成

g.drawString(rand, 13 * i + 6, 16);

}

// 将认证码存入SESSION

session.put("ValidateBar",sRand);

// 图象生效

g.dispose();

// 输出图象到页面

ByteArrayOutputStream baos=new ByteArrayOutputStream(); //创建一个字节数组

try {

ImageIO.write(image, "JPEG",baos);  //将画出的图像写到byte数组中

} catch (IOException e) {

e.printStackTrace();

}

return baos.toByteArray();

}

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

}

}

Struts2返回验证码

时间: 2024-11-07 20:34:50

Struts2返回验证码的相关文章

struts2中验证码的生成和使用

第一步生产字符串: package com.yancode.demo; import java.util.Arrays; /* * 一步一步来,要生成验证码图片,首先要有验证码,然后才能在画在图片上.为了能够灵活控制验证码, * 特别编写了SecurityCode类,它向外提供随机字符串.并且可以控制字符串的长度和难度. * SecurityCode类中提供的验证码分三个难度,易(全数字).中(数字+小写英文).难(数字+大小写英文). * 难度使用枚举SecurityCodeLevle表示,避

Struts2返回JSON对象的方法总结

一.为什么struts2要返回json       如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择.而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好的支持.但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况.本人碰到需要用开发基于Struts2的HTTP+JSON返回类型接口就是基于既定框架结构下进行的. struts2和json的集成,是为了适应在action 处理完后需要向对端输

(转)Struts2返回JSON对象的方法总结

转自:http://kingxss.iteye.com/blog/1622455 如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择.而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好的支持.但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况.本人碰到需要用开发基于Struts2的HTTP+JSON返回类型接口就是基于既定框架结构下进行的. Struts2返回JSON有两种方式:1.使用S

转载:深入了解Struts2返回JSON数据的原理及具体应用范例

早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一直忙于工作难以抽身, 渐渐的也淡忘了此事.直到前两天有同事在工作中遇到这个问题,来找我询问,我又细细地给他讲了一遍之后,才觉得无论如何要抽一个小时的时间来写这篇文章, 从头到尾将Struts2与JSON的关系说清楚. 其实网络中,关于这个问题的答案已是海量,我当初也是从这海量的答案中吸收精华,才将“Struts2返回JSON数据”这个问题搞清楚的.但 是这些海量的答案,有一个共同

struts2返回json格式的数据

描述:当前端使用ajax发送请求到action时,如果需要返回json格式的数据,如对象集合.具体做法如下: 前端代码: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"

struts2返回json数据类型

项目需要jar包 项目结构 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocati

Servlet返回验证码

Web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="htt

Struts2返回Json数据(使用Struts2插件)

这篇我将介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据. 一.其中主要步骤有: 1.将struts2-json-plugin.jar插件拷贝到项目的"/WEB-INF/lib"文件夹下: 2.编写Action类文件: 3.在struts.xml文件中配置这个Action,这个Action所在的"<package.../>"必须继承”json-default“,Action的Result类型为json,即ty

Struts2返回json数据xml中配置

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <!-- 登陆配置