request包装替换的思想
StrutsRequestWrapper包装了HttpServletRequestWrapper,所以在struts中用的request是StrutsRequestWrapper
想这种要包装原有的:
1,覆盖,重写
2,重写包装,在后面这个之前传入重写的类(用多态的方式)
传入时机是使用前即可,对于request就在最前面的过滤器
一进来第一个过滤器就这样设置(顺序最前的)
(一)(自己实现requset包装)
* <p>拦截http请求</p>
* @author houzhanshan
* @version $Id: SessionFilter.java, v 0.1 2017年5月26日 下午11:55:26 houzhanshan Exp $
*/
@WebFilter("/*")
public class SessionFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//包装入口
chain.doFilter(new RemoteSessionRequest((HttpServletRequest) request), response);
}
public void destroy() {
// TODO Auto-generated method stub
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
(二)、struts对request的包装(思路和第一种一致)
public class StrutsRequestWrapper extends HttpServletRequestWrapper
struts的入口点:
StrutsPrepareAndExecuteFilter
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
try {
if (excludedPatterns != null && prepare.isUrlExcluded(request, excludedPatterns)) {
chain.doFilter(request, response);
} else {
prepare.setEncodingAndLocale(request, response);
prepare.createActionContext(request, response);
prepare.assignDispatcherToThread();
//包装的开始
request = prepare.wrapRequest(request);
ActionMapping mapping = prepare.findActionMapping(request, response, true);
//后继使用
if (mapping == null) {
boolean handled = execute.executeStaticResourceRequest(request, response);
if (!handled) {
chain.doFilter(request, response);
}
} else {
execute.executeAction(request, response, mapping);
}
}
} finally {
prepare.cleanupRequest(request);
}
}
相关推荐
### Struts2中request与response的使用方法 #### 一、引言 Struts2作为Struts1的后续版本,在架构设计与实现机制上进行了大量的改进。相较于Struts1,Struts2对request、response、session等核心对象的处理方式有所...
struts2 获取request session对象
在Struts2中,经常需要从Action类中获取请求(Request)和响应(Response)对象来处理用户请求和传递数据。本文将详细解释Struts2中获取Request对象的四种不同方式。 1. **Servlet不相关的非IoC取得Request等对象的...
本文将详细讲解在Struts2中获取`request`对象的几种常见方法,以及它们的适用场景。 1. **Action上下文(ActionContext)** `ActionContext`是Struts2的核心组件之一,它封装了与当前请求相关的所有上下文信息,...
以下将详细介绍如何在Struts2的Action中获取request、response、session。 ### 1. 使用ActionContext获取request、response、session Struts2的Action可以通过`ActionContext`来间接获取`request`、`response`和`...
深入理解Struts1的核心思想对于掌握Web应用开发至关重要。以下将详细介绍Struts1中的关键组件及其工作原理。 1. **Digester框架**: Digester是Apache Commons库的一部分,主要用于XML文档的解析和转换。在Struts1...
Struts2上传文件(直接用request)
在请求被处理之前,ActionContext对象会被初始化,它保存了请求和响应的相关信息,如session、request、parameters等,是Action和插件之间通信的重要载体。 4. **加载配置**: 过滤器会加载配置信息,包括Action...
在Struts2框架中,对request和session的管理和获取是实现Web应用中用户交互和状态维护的重要手段。本文将深入探讨Struts2中如何获取request和session,以及这两种对象的作用和应用场景。 ### Struts2框架简介 ...
在Struts2中,访问Web资源,如application、session和request,是常见的操作,这有助于实现数据共享和传递。本示例代码将帮助开发者更好地理解和运用这些功能。 一、Application域对象 Application域对象在所有用户...
在探讨STRUTS2框架中如何获取session和request这一核心知识点时,我们首先需要理解STRUTS2框架的运行机制以及session与request在Web开发中的基础概念。 ### STRUTS2框架简介 STRUTS2是Apache软件基金会下的一个...
### Struts2 访问 Request、Session 和 Application 作用域详解 #### 一、引言 Struts2 是一个基于 Java 的开源 Web 开发框架,它继承了 Struts1 的优秀特性并进行了改进,提供了更加灵活和强大的功能。在 Struts2...
Struts2中获得Request,Response的几种方法,有代码作为参考。
在Struts2中,有四种主要的方式可以用来操作request、session和application上下文中的数据。这篇内容将深入探讨这四种方法,并结合源码和实用工具来帮助理解。 1. **ActionContext**: Struts2的核心组件...
通过这个"struts2+Velocity替换jsp项目源码",你可以学习到如何将一个传统的基于JSP的Web应用转换为使用Velocity作为视图层,从而提升项目的可维护性和性能。这是一个很好的实践案例,对于深入理解和掌握Struts2与...
在Struts2中,访问request、session和application对象是进行数据共享和传递的重要手段。这篇学习笔记主要探讨了如何在Struts2框架下有效地利用这三种域对象。 首先,request对象代表一次HTTP请求,它存储的数据仅...
Struts是一个经典的Java Web开发框架,它为构建MVC(模型-视图-控制器)架构的应用程序提供了强大的支持。在Struts中,Validation框架是用于处理用户输入验证的重要组件,它可以确保用户提交的数据符合预定义的规则...
### Spring与Struts的整合:实现灵活的企业级应用开发 在企业级应用开发领域,Spring框架和Struts框架都是极具影响力的技术。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,提供了良好的环境管理和...
在Struts2框架中,理解并正确使用request、response、session和application范围对于有效地管理数据和状态至关重要。这些范围帮助我们在Web应用程序中实现逻辑和数据流的分离,提高代码的可维护性和可扩展性。通过...