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

  • 相关阅读:
    跑路了
    *CTF 2019 quicksort、babyshell、upxofcpp
    pyspark如何遍历broadcast
    pwn易忘操作原理笔记
    pwn学习之四
    pwn学习之三
    pwn学习之二
    pwn学习之一
    2017GCTF部分writeup
    OD使用教程12
  • 原文地址:https://www.cnblogs.com/rekent/p/7197869.html
Copyright © 2011-2022 走看看