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

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

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

你可能感兴趣的文章
cpno在数据库里面是什么意思??
查看>>
hdu1420(C++)
查看>>
自定义注解
查看>>
公积金
查看>>
server farm
查看>>
clone github报Permission denied (publickey) 解决方案
查看>>
(转载)利用C#读取excel
查看>>
利用Zabbix监控Nginx
查看>>
jQuery测试
查看>>
[UWP]如何使用代码创建DataTemplate(或者ControlTemplate)
查看>>
Spring in Action --- 第三章 高级装配
查看>>
项目管理小记
查看>>
python 循环
查看>>
搭建一个入门springboot工程(Spring Initializr创建方式)
查看>>
初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
查看>>
网络知识
查看>>
Linux 压缩解压
查看>>
[leetcode] Remove Duplicates from Sorted Array II
查看>>
MVC 读取指定视图HTML 代码结构
查看>>
JAVA 中 getMethod()和invoke()方法应用
查看>>