前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Struts2 Action中快速简便的访问Request、Session等变量

在Struts2 Action中快速简便的访问Request、Session等变量

作者头像
Rekent
发布2018-09-04 15:18:25
6080
发布2018-09-04 15:18:25
举报
文章被收录于专栏:日常分享日常分享

前言——正常情况下如何在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也可以实现,这里就不一一呈现了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-07-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言——正常情况下如何在Action中获取到这些变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档