• 利用相关的Aware接口


    Struts 2提供了Aware接口。Aware为"感知"的意思,实现了相关Aware接口的Action能够感知相应的资源。Struts在实例化一个Action实例时,如果发现它实现了相应的Aware接口,会把相应的资源通过Aware接口方法注射进去。这种方式也可以叫做注射方式(IoC方式)。

    Servlet API中常用对象application、request、response、Session对应的Aware接口分别为ServletContextAware、ServletRequestAware、ServletResponseAware、SessionAware。例如,下面的Action实现了这4种接口,能够感知到这些对象。代码如下:

    package com.helloweenvsfei.struts2.action;  
    import org.apache.struts2.interceptor.ServletRequestAware;  
    import org.apache.struts2.interceptor.ServletResponseAware;  
    import org.apache.struts2.interceptor.SessionAware;  
    import org.apache.struts2.util.ServletContextAware;  
    public class ServletAwareAction extends ActionSupport implements 
            ServletRequestAware, ServletResponseAware, 
    SessionAware, Servlet            ContextAware {  
     
        private ServletContext application;         // Servlet上下文  
        private HttpServletRequest request;         // request对象  
        private HttpServletResponse response;           // response对象  
        private Map session;                            // session对象  
     
        public void setServletRequest(HttpServletRequest request) {  
                                                        
    // request的setter方法  
            this.request = request;  
        }  
        public void setServletResponse(HttpServletResponse response) {  
                                                        
    // request的setter方法  
            this.response = response;  
        }  
        public void setSession(Map sessionValues) { // 
    session的setter方法  
            this.session = sessionValues;  
        }  
        public void setServletContext(ServletContext application) {  
                                                // 
    servletContext的setter方法  
            this.application = application;  
        }  
     
        public String execute() {               // 主方法  
            String upload = application.getRealPath("upload");  
                                                // 使用application  
            request.getRemoteAddr();            // 使用request  
            response.getContentType();          // 使用response  
            session.get("account");             // 使用Session  
            return Action.SUCCESS;  
        }  

     实现了ServletRequestAware接口便会有一个setServletRequest()方法获取request对象。实现了ServletResponseAware接口便会有一个setServletResponse()方法获取response对象。不同的是SessionAware接口的setter方法是setSession()方法的参数是Map类型。该Map代表Session内存储的各种数据。

    Aware接口其实是一种拦截器,拦截器代码会在执行Action之前执行,将相关的Servlet对象设置进来

    Spring aware相关接口

      
     

  • 相关阅读:
    WF 学习笔记 (1) 浅谈 WF 和 MVC 架构
    从HelloWorld看iphone程序的生命周期
    android开发我的新浪微博客户端阅读微博UI篇(6.1)
    关于微博服务端API的OAuth认证实现
    iphone开发我的新浪微博客户端开篇
    一个完整的新浪微博客户端android版OAuth认证示例
    android开发我的新浪微博客户端OAuth认证过程中用WebView代替原来的系统自带浏览器
    iphone开发我的新浪微博客户端用户登录准备篇(1.1)
    android开发我的新浪微博客户端登录页面功能篇(4.2)
    android开发我的新浪微博客户端登录页面UI篇(4.1)
  • 原文地址:https://www.cnblogs.com/brucetie/p/4146870.html
Copyright © 2020-2023  润新知