您的位置:首页 > 编程语言 > Java开发

Java EE SSH框架之Struts2(3)—— 结果跳转方式和访问ServletAPI方式

2018-03-28 21:17 405 查看

一、结果跳转方式

《1》转发(地址栏不会变)
ServletDispatcherResult类

例:
ActionDemo1.java
package com.zl.action;

import com.opensymphony.xwork2.ActionSupport;

public class ActionDemo1 extends ActionSupport{

@Override
public String execute() throws Exception {
return SUCCESS;
}
}struts.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="result" namespace="/" extends="struts-default">
<action name="ActionDemo1" class="com.zl.action.ActionDemo1" method="execute">
<result name="success" type="dispatcher">/index.jsp</result>
</action>
</package>
</struts>
《2》重定向(地址栏会发生变化)
ServletRedirectResult类

ActionDemo2.java同ActionDemo1.java,不再重复。
struts.xml中将上述struts.xml中的result元素的type属性值改为redirect即可。

《3》转发到Action(地址栏不会变)
<action name="ActionDemo3" class="com.zl.action.ActionDemo3" method="execute">
<result name="success" type="chain">
<param name="actionName">ActionDemo1</param> <!--跳转到ActionDemo1-->
<param name="namespace">/</param>
</result>
</action>

《4》重定向到Action(地址栏会发生变化)(常用)

<action name="ActionDemo4" class="com.zl.action.ActionDemo4" method="execute">
<result name="success" type="redirectAction">
<param name="actionName">ActionDemo1</param> <!--跳转到ActionDemo1-->
<param name="namespace">/</param>
</result>
</action>

二、Struts2访问ServletAPI

原理:



有以下三种方式:

《1》通过ActionContext(重点)//request域=>map(Struts2并不推荐使用原生request域)
Map<String,Object> requestScope = ActionContext.getContext().getRequest();
ActionContext.getContext().put("name","requestTom");//推荐

//session域=>map
Map<String,Object> sessionScope = ActionContext.getContext().getSession();
sessionScope.put("name","sessionTom");

//application域=>map
Map<String,Object> applicationScope = ActionContext.getContext().getApplication()
applicationScope.put("name","applicationTom");

《2》通过ServletActionContext(不推荐,因为Struts的理念就是要脱离Servlet)//原生的request
HttpServletRequest request = ServletActionContext.getRequest();

//原生的session
HttpSession session = request.getSession();

//原生的response
HttpServletResponse response = ServletActionContext.getResponse();

//原生的ServletContext
ServletContext servletContext = ServletActionContext.getServletContext();
《3》实现接口...Aware
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: