struts2中如何设置四大域对象
2015-10-26 16:57
489 查看
问题!struts2中如何设置四大域对象
我们以案例来说明:
struts.xml文件
cn.itcast.action.ScopeAction在这个类中写域对象的设置值
scope.jsp
到这里基本就设置完成,接下来我们就需要看看运行效果了。
![](http://img.blog.csdn.net/20151026170255695)
问题1?如果我们运行完后,直接再访问该jsp而不通过action。又会是什么结果呢?
只有application和session的结果值,因为request只对当前页面有效。
问题2?关闭浏览器,而不关闭服务,然后再次访问scope.jsp,又会是什么结果呢
只有application,因为session缓存没有了,request也只对当前页面有效。
问题3?如果试行在action中试行转发的方式,然后运行action,结果由会是什么呢?
没有request的结果,转发的对象是不一样的。
我们以案例来说明:
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 { //向各大域范围存放点数据 @Override public String execute() throws Exception { ActionContext ac = ActionContext.getContext(); Map<String,Object> applicationMap = ac.getApplication();//这个就是ServletContext对象中维护的那个Map applicationMap.put("p", "application_p");// ServletContext.setAttribute(key,object); Map<String,Object> sessionMap = ac.getSession();//这个就是HttpSession对象中维护的那个Map sessionMap.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的结果,转发的对象是不一样的。
相关文章推荐
- Spring知识点总结大全
- 深入理解 Java 内存模型(一)- 内存模型介绍
- Java总结--线程基础
- org.springframework.dao.InvalidDataAccessApiUsageException错误
- int 转 string
- java服务器知识
- JAVA--单例模式
- java.sql.SQLException: ORA-02291: 违反完整约束条件 (BOOK.FK_USERNAME) - 未找到父项关键字
- SolrCloud之zookeeper中使用java代码创建集合
- 转:Java中abstract和interface的区别
- java/jsp获取当前路径的几种方法
- java基础知识-意想不到的结果
- Java多线程详解
- assert的使用
- Spring IOC设计原理解析
- java 适配器模式 详解(带电源插座适配 例子)
- this与super使用总结(java)
- java list 与map有什么区别??
- Java代码优化(转)
- 从头认识java-4.6 成员的初始化