尚学堂马士兵struts2 课堂笔记(四)

27 结果类型

主要就四种种 dispatch和rediret chain和drdirectaction

<package name="resultTypes" namespace="/r" extends="struts-default">
	    <action name="r1">
	    	<result type="dispatcher">/r1.jsp</result>
	    </action>
	    
	    <action name="r2">
	    	<result type="redirect">/r2.jsp</result>
	    </action>
	    
	    <action name="r3">
	    	<result type="chain">r1</result>
	    </action>
	    
	    <action name="r4">
	    	<result type="redirectAction">r2</result>
	    </action>
	    
    </package>

第一个只能跳转到视图jsp/html 不能跳转到action

后三个可以跳转到action

redirect也可以跳转到action

不过redirect与redirectaction底层都是重定向,换句话说,之前的参数都丢失了

r1.jsp里面就是写了个"r1"字符串

r2.jsp类似


当用dispatch时 浏览器地址栏上是localhost:8900/webname/r/r1
当用redirect时  浏览器地址栏上是localhost:8900/webname/r2.jsp

当用chain时     浏览器地址栏上是localhost:8900/webname/r/r3

当用redirectAction  浏览器地址栏上是localhost:8900/webname/r2.jsp


//

//

2015年11月14日 修改

关于后两种的差异,请大家移步

拙作 Struts Chain ClassCastException Aop
2015年11月14日 修改

//

//




30 全局结果集

struts如下

 <package name="user" namespace="/user" extends="struts-default"> 	
    	<global-results>
    		<result name="mainpage">/main.jsp</result>
    	</global-results>
    	
    	<action name="index">
    		<result>/index.jsp</result>
    	</action>
    	
	    <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
	    	<result>/user_success.jsp</result>
	    	<result name="error">/user_error.jsp</result>
	    </action>	    
    </package>
    
    <package name="admin" namespace="/admin" extends="user">
    	<action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">
    		<result>/admin.jsp</result>
    	</action>
    </package>
注意 admin这个package里面的action想要用定义在user里面的全局结果集就得让它继承user

响应的类如下

package com.bjsxt.struts2.user.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
	private int type;

	//省略get/set方法

	@Override
	public String execute() throws Exception {
		if(type == 1) 
                     return "success";
		else if (type == 2)
                     return "error";
		else 
                    return "mainpage";
	}
}
index.jsp如下

<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>

<% String context = request.getContextPath(); %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
Result类型
<ol>
	<li><a href="user/user?type=1">返回success</a></li>
	<li><a href="user/user?type=2">返回error</a></li>
	<li><a href="user/user?type=3">返回global result</a></li>
	<li><a href="admin/admin">admin,继承user包</a></li>
</ol>
	
</body>
</html>

31 动态结果集

 <package name="user" namespace="/user" extends="struts-default">
	    <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
	    	<result>${r}</result>
	    </action>	    
  </package>
这里面的${}是什么? 别急 往下看 

package com.bjsxt.struts2.user.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
	private int type;
	
	private String r;

	//省略get/set方法

	@Override
	public String execute() throws Exception {
		if(type == 1) r="/user_success.jsp";
		else if (type == 2) r="/user_error.jsp";
		return "success";
	}

}
大家看到了 struts.xm里面的r是useraction里面的一个属性 而在值栈里面 会把action里面的属性都保存下来

通过$就可以访问值栈里面的内容了

不过 这个动态结果 似乎不常用

另外 刚才写博客的时候脑子忽然抽了一下

返回值后 result就是下面这个呀 没有success呀

<result>/user_success.jsp</result>
如果你也忽然脑子抽了 没想明白这个问题 就自己去查资料!!!







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值