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对象设置进来

转载于:https://www.cnblogs.com/ydymz/p/8330190.html

struct2利用相关的Aware接口相关推荐

  1. python 接入百度地图数据包下载_Python爬虫-利用百度地图API接口爬取数据并保存至MySQL数据库...

    首先,我这里有一份相关城市以及该城市的公园数量的txt文件: 分析-02.png 其次,利用百度地图API提供的接口爬取城市公园的相关信息. 所利用的API接口有两个: 1.http://api.ma ...

  2. Spring 各种 Aware 接口回调注入

    Spring bean 实现了如下 Aware 接口,可以注入相关对象: BeanFactoryAware, //获取 IoC 容器 BeanFactory 的能力 ApplicationContex ...

  3. 手写Spring-第八章-感受波动!用Aware接口来实现感知

    前言 感知,是一个很玄乎的词.其实我们可以这样理解.正常情况下,我们的bean,是不应该意识到Spring框架的存在的,它虽然被Spring所管理,但是它本身意识不到管理者的存在.从初始化,到销毁,在 ...

  4. spring中的Aware接口原来是这么回事

    一.介绍   使用spring开发的同学,或多或少都使用过形如XxxAware这样的接口.spring文档中是这样解释Aware接口的: Spring提供了广泛的Aware回调接口,让bean向容器表 ...

  5. aware java_spring中一些aware接口

    Spring中提供一些Aware相关接口,像是BeanFactoryAware. ApplicationContextAware.ResourceLoaderAware.ServletContextA ...

  6. 利用微信网页录音接口实现语音搜索

    微信网页接口有3个录音相关接口 开始录音接口 wx.startRecord(); 停止录音接口 wx.stopRecord({ success: function (res) { var localI ...

  7. 利用python3 调用zabbix接口完成批量加聚合图形(screens)

    在上一篇博客中,我们完成的利用python3 调用zabbix接口批量增加主机,增加主机的item,增加主机的图形! 接下来我们完成批量增加主机的screen 首先我们要增加screen需要哪些参数呢 ...

  8. Bean装配之Aware接口

    Spring提供了一些以Aware结尾的接口,实现了Aware接口的bean,在被初始化之后,可以获取相应的资源. ApplicationContextAware:实现该接口的bean提供了appli ...

  9. spring中最重要的一些Aware接口

    附上关于这节的spring官方文档: ApplicationContextAware and BeanNameAware aware接口在spring中无处不在,它是用来感知spring的ioc co ...

最新文章

  1. Java中的String、StringBuilder、StringBuffer
  2. leetcode 349. 两个数组的交集 两种方案,c语言实现
  3. 网页title上面添加图片
  4. 设计模式---接口隔离模式之门面模式(Façade)
  5. SQL UNION 和 UNION ALL 操作符(mysql)
  6. MVC2中Area的路由注册实现
  7. 命名空间不能直接包含字段或方法之类的成员是什么意思_Python 学习笔记之类与实例...
  8. 【BZOJ 2301】[HAOI2011]Problem b
  9. QT禁用“最大化按钮“和“禁止调节窗口大小“
  10. chinese-ocr自然场景下不定长文字识别(ctpn + densenet)
  11. 【物理应用】基于matlab GUI三相配电网实时仿真【含Matlab源码 1047期】
  12. matlab最优化函数
  13. Matlab读取excel文件绘制折线图
  14. 大数据分析师的报考条件是什么?
  15. MySQL 子查询之 单行子查询及多行子查询
  16. 即时通讯IM,是时代进步的逆流?看看JNPF怎么说
  17. OpenLayers 3实践与原理探究1-ol2 VS ol3
  18. 没人带宝宝,所以才要送去托育园?
  19. React Native-6.React Native Text组件,多组件封装实战之凤凰资讯页面
  20. 入职阿里一周年,我能谈点什么 | 可惜主语不是我~

热门文章

  1. Android截屏方法总结
  2. EVM反编译软件Porosity的使用-mac
  3. 一种实现(无须root)手机截屏方案
  4. 新一代开源Android渠道包生成工具Walle
  5. java控制一次传10条数据_java 定时同步数据的任务优化
  6. JZOJ 4061. 【JSOI2015】字符串树
  7. 计算机网络基础与信息安全,大学计算机基础计算机网络基础与信息安全计算机网络概述教案.doc...
  8. php好玩的源码_github上比较有趣的PHP开源项目
  9. 详细设计 存储分配_万字长文:云架构设计原则(一)
  10. 运维开发学go还是python_运维工程师是要学python还是学go那?