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也可以实现,这里就不一一呈现了。

  • 相关阅读:
    例题3-6 环状序列UVa1584
    习题3-1 Score UVa1585
    Sublime Text3 Python虚拟环境(补充)——解决控制台中文乱码情况
    Cookie保存在本地方法介绍
    Multisim仿真
    小米手机安装charles证书
    【转】缓存
    【转】5种网络IO模型
    【转】分布式锁的几种使用方式(redis、zookeeper、数据库)
    【转】白话解析:一致性哈希算法(consistent hashing)
  • 原文地址:https://www.cnblogs.com/rekent/p/7197869.html
Copyright © 2011-2022 走看看