在Struts2访问 HttpServletRequest、HttpSession、ServletContext三个域对象

Struts2如何访问 HttpServletRequest、HttpSession、ServletContext三个域对象

	1,方法一:与Servlet API解耦的访问方式
		通过 ActionContext 访问域对象对应的 Map 对象

			public class MyAction 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);
					
					ac.put("p", "request_p");//相当于ServletRequest.setAttribute(key,obj);
					return super.execute();
				}
			}
			
	2,方法二:Servlet API耦合的访问方式
		通过 ServletActionContext 直接获取 Servlet API 对象
			ServletContext servletContext = ServletActionContext.getServletContext();
			ServletRequest servletRequest = ServletActionContext.getRequest();
			HttpServletRequest httpServletRequest = (HttpServletRequest)ServletActionContext.getRequest();
			HttpSession session = httpServletRequest.getSession();
			
		通过实现 ServletXxxAware 接口的方式使 Struts2 注入对应的对象
		
			public class MyAction extends ActionSupport implements Serializable,ServletContextAware,ServletRequestAware,ServletResponseAware,SessionAware {
			
				private ServletContext context;
				private HttpServletRequest request;
				private HttpServletResponse response;
				private Map sessionMap;

				// 如果Action类实现了ServletContextAware接口,就会自动调用该方法
				public void setServletContext(ServletContext context) {
					this.context = context;
				}
				public void setServletRequest(HttpServletRequest request) {
					this.request = request;
				}
				public void setServletResponse(HttpServletResponse response) {
					this.response = response;
				}
				public void setSession(Map<String, Object> session) {
					this.sessionMap = session;
				}
				
				public String execute(){
					System.out.println(context);
					System.out.println(request);
					System.out.println(response);
					System.out.println(sessionMap);
					return SUCCESS;
				}
			}

	
	

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值