Struts2的结果视图

一 result元素

1.作用

为动作类指定结果视图

2.属性

name:逻辑视图名称,对应的是动作类的返回值,默认是success

type:结果类型,表示以什么方式返回到定义的页面,默认是dispatcher

3.type详解

type类型定义在struts-default.xml文件中

常用的有两种,一种是dispatcher,请求转发,另一种是redirect,重定向


redirectaction:重定向到相同名称空间的动作名称

 <action name="hello" class="com.yu.web.action.HelloAction" method="sayHello">
  <result name="success" type="redirectAction">error</result>
  </action>
  <action name="error" class="com.yu.web.action.ActionImpl" method="execute">
  <result name="error">/error.jsp</result>
  </action>

重定向不同名称空间的动作名称

通过配置result属性的param参数来实现

<package name="p1" extends="struts-default" namespace="/struts">
<action name="hello" class="com.yu.web.action.HelloAction" method="sayHello"> <result name="success" type="redirectAction"> <param name="namespace">/struts2</param> <param name="actionName">error</param> </result> </action></package><package name="p2" extends="struts-default" namespace="/struts2"> <action name="error" class="com.yu.web.action.ActionImpl" method="execute"> <result name="error">/error.jsp</result> </action> </package>


chain:请求转发到相同名称空间的动作

<action name="hello" class="com.yu.web.action.HelloAction" method="sayHello">
  <result name="success" type="chain">error</result>
  </action>
  <action name="error" class="com.yu.web.action.ActionImpl" method="execute">
  <result name="error">/error.jsp</result>
  </action>

请求到不同名称空间的动作

<package name="p1" extends="struts-default" namespace="/struts">

<action name="hello" class="com.yu.web.action.HelloAction" method="sayHello">
  <result name="success" type="chain">
  <param name="namespace">/struts2</param>
  <param name="actionName">error</param>
  </result>
  </action>
</package>


<package name="p2" extends="struts-default" namespace="/struts2">
   <action name="error" class="com.yu.web.action.ActionImpl" method="execute">
  <result name="error">/error.jsp</result>
  </action>
  </package>

4.param参数

该参数用来定义重定向或请求转发的名称空间和动作名称,通过其注入的方式实现其功能,相当于set其类的属性值

二.局部视图和全局视图

局部视图,只有当前的动作类可以访问

全局视图,所有的动作类都可以访问


三 在struts2中访问servet的api

第一种,使用其servletActionContext

public class HelloAction extends ActionSupport{
public String sayHello(){
	HttpServletRequest request=ServletActionContext.getRequest();
	System.out.println(request.getSession());
	System.out.println(request.getServletContext());
	HttpServletResponse response = ServletActionContext.getResponse();
	System.out.println(response);
	System.out.println("访问完成");
	return SUCCESS;
}
}

第二种,使用依赖注入的方式,实现ServletRequestAware,ServletResponseAware,ServletContextAware

public class HelloAction extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware{
	
	private HttpServletRequest request;
	private HttpServletResponse response;
	private ServletContext application;

	public String execute(){
		HttpSession session = request.getSession();
		System.out.println(request);
		System.out.println(response);
		System.out.println(application);
		System.out.println(session);
		
		return SUCCESS;
	}

	@Override
	public void setServletContext(ServletContext application) {
		this.application = application;
	}

	@Override
	public void setServletResponse(HttpServletResponse response) {
		this.response = response;
	}

	@Override
	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
	}
}

在执行action,以及返回结果视图之前都会执行一些过滤器,上述获取request以及response就是这时候执行的



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值