zoukankan      html  css  js  c++  java
  • 在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也可以实现,这里就不一一呈现了。

  • 相关阅读:
    HDU 5642 King's Order 动态规划
    HDU 5640 King's Cake GCD
    HDU 5641 King's Phone 模拟
    HDU 5299 Circles Game 博弈论 暴力
    HDU 5294 Tricks Device 网络流 最短路
    HDU 5289 Assignment rmq
    HDU 5288 OO’s Sequence 水题
    星际争霸 虚空之遗 人族5BB 操作流程
    Codeforces Beta Round #3 D. Least Cost Bracket Sequence 优先队列
    Codeforces Beta Round #3 C. Tic-tac-toe 模拟题
  • 原文地址:https://www.cnblogs.com/rekent/p/7197869.html
Copyright © 2011-2022 走看看