java result 跳转_Struts2 Result详解

1,Result原理

1) Result组件是Struts2中用于输出的组件,实际上就是Java代码。

2)Struts2中预制了10中类型的Result,这些Result什么在struts-default.xml中。

这些类实际上都事先了统一的接口:Result.

Java代码  icon_star.png

3)重点讲解一下类型的Result

--dispatcher(默认类型,转发到一个页面)

当一个请求到来,服务器直接转发到另一个页面,不能是另一个action。由于这个过程在服务器内部完成,客户端(浏览器)并不知道,所以在地址栏不会显示真实访问的页面,而显示都是所请求的action的地址。在servlet中相当与forword转发。

--redirect  (重定向到一个页面)。

当一个请求到来,服务端将实际地址response给浏览器,然后浏览器重新发起请求,这个过程,浏览器是知道访问的页面的实际地址的,所以在浏览器的地址栏显示的是实际访问的jsp页面地址。但是这种类型不能重定向到一个action.

--chain  转发到一个action,而不是页面

--redirectAction 重定向到一个action

跳转到其他包的action:

Java代码  icon_star.png

dashboard

/secure

使用redirectAction 带参数

Java代码  icon_star.png

test.action

${name}

--stream

--json

4)使用方式

2、Stream类型的Result详解

1)Stream是用于向页面直接输出二进制数据,比如登陆页面的验证码图片,就可以在服务端生成,然后由这种类型的Result输出

2) 使用

输出属性名

--在struts.xml中,我们可以使用param来给组件的属性注入默认值

--,这里inputName对应的是StreamResult的inputName属性,这样配置相当于会调用StreamResult的setInputName方法给它注入属性值。

--注入的属性值,是Action中的某个属性的名称,如下图,inputName是StreamResult中的一个属性。在Action中作二进制输出的属性要求其类型为InputStream。

d588b724-4a61-3747-939a-a371ada91270.jpg

-- Result会创建一个输出流,接到Action中的输入流,向页面输出。

3) 验证码案例:

struts.xml中配置:

Java代码  icon_star.png

class="com.netctoss.action.CreateImageAction">

p_w_picpathStream

CreateImageAction.java

Java代码  icon_star.pngpublic class CreateImageAction

extends BaseAction {

//ouput

private InputStream p_w_picpathStream;

public String execute() {

//生成验证码图片

Map map =

ImageUtil.createImage();

//通过遍历得到唯一生成的验证码

String p_w_picpathCode =

map.keySet().iterator().next();

//将验证码记录到session,在登录验证时使用

session.put("p_w_picpathCode", p_w_picpathCode);

//根据验证码,得到图片

BufferedImage p_w_picpath = map.get(p_w_picpathCode);

//将图片转换为输入流,由result作输出

try {

p_w_picpathStream =

ImageUtil.getInputStream(p_w_picpath);

} catch (IOException e) {

e.printStackTrace();

return "error";

}

return "success";

}

public InputStream getImageStream() {

return p_w_picpathStream;

}

public void setImageStream(InputStream p_w_picpathStream) {

this.p_w_picpathStream = p_w_picpathStream;

}

}

Java代码  icon_star.png

function change(p_w_picpathObj) {

p_w_picpathObj.src = "createImage?date=" + new Date().getTime();

}

验证码:

BaseAction.java 实现接口SessionAware

Java代码  icon_star.png/**

*  所有Action的父类,可以将通用的代码

*  提取出来放到父类中。

*  这里,我们让BaseAction实现接口SessionAware,

*  那么继承与BaseAction的Action就相当于实现了

*  这个接口。在实例化Action之后,Struts2会自动

*  调用setSession方法把session注入给Action,

* 这里我们利用全局变量session来接收,Action

* 可以在调用业务方法时使用它来调用session。

*/

public class BaseAction implements SessionAware {

protected Map session;

public void setSession(Map session) {

this.session = session;

}

}

3、Json类型的Result详解

1) 向页面输出json格式的字符串

2) struts2 并没有预制这种类型的Result,但是他非常常用,往往用于页面的异步校验。

3) 使用步骤

a,导包:struts2-json-plugin-2.1.8.1.jar

b,struts.xml中将要使用json类型Result的package继承json-default

c,在struts.xml中配置result

--最常用,只是输出单个属性

Java代码  icon_star.png

指定Action的一个属性名

注意: name="root"是固定用法;

如指定的属性是boolean类型,那么Result会把这个属性做成字符串"true";

如指定的属性是JavaBean,那么Result会把这个属性做成字符串{"code":"12"}

--输出多个属性

Java代码  icon_star.png

属性名1,属性名2,...

注意:Result会将这一组属性做成一个json输出,

如Action中有属性code="aaa",name="zs"

可以将这2个属性做成一个json

{"code":"aaa","name":"zs"}

--输出Action中的所有属性

Java代码  icon_star.png

注意:Result会将Action中所有的属性做成一个

json输出{"":"","":""}

d588b724-4a61-3747-939a-a371ada91270-thumb.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值