struts2中如何设置四大域对象

问题!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 {
	//向各大域范围存放点数据
	@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的结果,转发的对象是不一样的。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值