首页 > 代码库 > 在Struts2 Action中快速简便的访问Request、Session等变量
在Struts2 Action中快速简便的访问Request、Session等变量
前言——正常情况下如何在Action中获取到这些变量
全部方法(共四种)可以参考:http://blog.csdn.net/itmyhome1990/article/details/7019476
这里采用其中一种作为示例,即利用ServletActionContext上下文来完成:
1 public class LoginAction { 2 private HttpServletRequest request; 3 private HttpSession session; 4 private ServletContext application; 5 public String execute() { 6 7 request = ServletActionContext.getRequest(); 8 session = request.getSession(); 9 application = session.getServletContext(); 10 11 //application = ServletActionContext.getRequest().getSession().getServletContext(); 12 13 request.setAttribute("aaa", "aaa"); 14 session.setAttribute("bbb", "bbb"); 15 application.setAttribute("ccc", "ccc"); 16 17 return "success"; 18 } 19 }
但是呢,在我之前的学习过程中,在每个Action中都要重复这三部,显得过于繁琐。
在这样的情况下,我们可以通过继承一个BaseAction来解决这些问题。
1 public class BaseAction extends ActionSupport{ 2 3 protected HttpServletRequest getRequest(){ 4 return ServletActionContext.getRequest(); 5 } 6 7 protected HttpServletResponse getResponse(){ 8 return ServletActionContext.getResponse(); 9 }10 protected HttpSession getSession(){11 return getRequest().getSession();12 }13 14 //快速执行标签15 public void addActionErrorsFromResult(ExecuteResult<?> result) {16 for (String error : result.getErrorMessages()) {17 this.addActionError(error);18 }19 }20 public void addFieldErrorsFromResult(ExecuteResult<?> result) {21 for (String field : result.getFieldErrors().keySet()) {22 this.addFieldError(field, result.getFieldErrors().get(field));23 }24 }25 }
这样,我们在写新的Action的时候,就只用extends BaseAction。
即可实现在Action中像在Servlet中一样直接获取Session、Request、Respose了,当然Application也可以实现,这里就不一一呈现了。
在Struts2 Action中快速简便的访问Request、Session等变量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。