ServletContextAware、ServletRequestAware、ServletResponseAware、SessionAware
2024-10-01 05:41:31
转自:ServletContextAware、ServletRequestAware、ServletResponseAware、SessionAware
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相关接口
最新文章
- java基础知识(二)字符串处理
- VBA Excel 对比两列数据
- 【python】实践中的总结——列表『持续更新中』
- PBcR - 纠错及组装算法
- 转:电子取证中AVI文件的文件雕复
- codeforces #Round354-div2-D(BFS)
- FireBug 调试JS入门
- php Laravel 框架 介绍及安装
- jemalloc/jemalloc.h: No such file or directory
- HDU4681 String(dp)
- MongoDB C++ 2.4.5 driver 编译安装问题
- Linux开发工具之gcc
- nisi 脚本示例
- 基于C++11的线程池,简洁且可以带任意多的参数
- 微信小程序-滚动消息通知效果
- Java正则表达式语法
- [转]【安卓笔记】AsyncTask源码剖析
- Windows下安装Python3和Django
- [Project] Simulate HTTP Post Request to obtain data from Web Page by using Python Scrapy Framework
- [leetcode]23. Merge k Sorted Lists归并k个有序链表