struts2中如何设置四大域对象

来源:互联网 发布:广州java培训哪家好 编辑:程序博客网 时间:2024/05/16 23:58

问题!struts2中如何设置四大域对象

我们以案例来说明:

struts.xml文件

<package name="mypackage" extends="struts-default"><!-- 配置全局错误结果 :范围只是本包--><global-results><result type="dispatcher" name="error">/customer/error.jsp</result></global-results></package><package name="scope" namespace="/scope" extends="mypackage"><!--主要在这个action包中--><action name="scopeAction" class="cn.itcast.action.ScopeAction" method="execute"><result type="redirect" name="success">/scope.jsp</result></action></package>


cn.itcast.action.ScopeAction在这个类中写域对象的设置值

/** *  */package cn.itcast.action;import java.io.Serializable;import java.util.Map;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;/** * @author wzhting * *///域范围public class ScopeAction extends ActionSupport implements Serializable {//向各大域范围存放点数据@Overridepublic String execute() throws Exception {ActionContext ac = ActionContext.getContext();Map<String,Object> applicationMap = ac.getApplication();//这个就是ServletContext对象中维护的那个MapapplicationMap.put("p", "application_p");// ServletContext.setAttribute(key,object);Map<String,Object> sessionMap = ac.getSession();//这个就是HttpSession对象中维护的那个MapsessionMap.put("p", "session_p");// HttpSession.setAttribute(key,object);//我们在写购物车、登录的时候就需要使用session这个域对象了。ac.put("p", "request_p");//相当于ServletRequest.setAttribute(key,obj);return super.execute();}}

scope.jsp

 <body>    应用范围:${applicationScope.p}<br/>    会话范围:${sessionScope.p}<br/>    请求范围:${requestScope.p}<br/>  </body>

到这里基本就设置完成,接下来我们就需要看看运行效果了。

            


问题1?如果我们运行完后,直接再访问该jsp而不通过action。又会是什么结果呢?

只有application和session的结果值,因为request只对当前页面有效。

问题2?关闭浏览器,而不关闭服务,然后再次访问scope.jsp,又会是什么结果呢

        只有application,因为session缓存没有了,request也只对当前页面有效。

问题3?如果试行在action中试行转发的方式,然后运行action,结果由会是什么呢?

<package name="scope" namespace="/scope" extends="mypackage"><action name="scopeAction" class="cn.itcast.action.ScopeAction" method="execute"><result type="redirect" name="success">/scope.jsp</result></action></package>


没有request的结果,转发的对象是不一样的。

0 0