博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用相关的Aware接口
阅读量:4497 次
发布时间:2019-06-08

本文共 1922 字,大约阅读时间需要 6 分钟。

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相关接口

  

 

 

转载于:https://www.cnblogs.com/brucetie/p/4146870.html

你可能感兴趣的文章
kill -9杀掉nginx主进程、reload失败解决办法
查看>>
objdump 用法
查看>>
前端js模糊搜索(模糊查询)
查看>>
Chrome的hack写法以及CSS的支持程度图示
查看>>
苹果端手机微信页面长按图片无法保存的解决方案
查看>>
SVN、GIT比较
查看>>
asp后台读id设置样式
查看>>
POJ 3744 Scout YYF I 概率DP+矩阵快速幂 好题
查看>>
Training Logisches Denken
查看>>
谁分配谁释放
查看>>
正则表达式
查看>>
Java集合之LinkedHashSet源码分析
查看>>
David Silver强化学习Lecture1:强化学习简介
查看>>
开源项目
查看>>
unix系统内核优点
查看>>
协议(五)-从电报机到智能手机
查看>>
Solr学习
查看>>
HDU-4628 Pieces 搜索 | DP
查看>>
动态代理
查看>>
蓝瘦香菇
查看>>