`
y806839048
  • 浏览: 1120437 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

struts的request包装替换的思想

阅读更多

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中request与response的使用方法 #### 一、引言 Struts2作为Struts1的后续版本,在架构设计与实现机制上进行了大量的改进。相较于Struts1,Struts2对request、response、session等核心对象的处理方式有所...

    struts2 获取request

    struts2 获取request session对象

    Struts2获取request的四种方式

    在Struts2中,经常需要从Action类中获取请求(Request)和响应(Response)对象来处理用户请求和传递数据。本文将详细解释Struts2中获取Request对象的四种不同方式。 1. **Servlet不相关的非IoC取得Request等对象的...

    struts2中获得request对象

    本文将详细讲解在Struts2中获取`request`对象的几种常见方法,以及它们的适用场景。 1. **Action上下文(ActionContext)** `ActionContext`是Struts2的核心组件之一,它封装了与当前请求相关的所有上下文信息,...

    Struts2的Action中获得request response session几种方法

    以下将详细介绍如何在Struts2的Action中获取request、response、session。 ### 1. 使用ActionContext获取request、response、session Struts2的Action可以通过`ActionContext`来间接获取`request`、`response`和`...

    深入struts1核心思想.doc

    深入理解Struts1的核心思想对于掌握Web应用开发至关重要。以下将详细介绍Struts1中的关键组件及其工作原理。 1. **Digester框架**: Digester是Apache Commons库的一部分,主要用于XML文档的解析和转换。在Struts1...

    Struts2上传文件(直接用request)

    Struts2上传文件(直接用request)

    Struts2 Request Process Procedure

    在请求被处理之前,ActionContext对象会被初始化,它保存了请求和响应的相关信息,如session、request、parameters等,是Action和插件之间通信的重要载体。 4. **加载配置**: 过滤器会加载配置信息,包括Action...

    struts2中request和session的获取

    在Struts2框架中,对request和session的管理和获取是实现Web应用中用户交互和状态维护的重要手段。本文将深入探讨Struts2中如何获取request和session,以及这两种对象的作用和应用场景。 ### Struts2框架简介 ...

    struts2访问application、session以及request等web资源的示例代码

    在Struts2中,访问Web资源,如application、session和request,是常见的操作,这有助于实现数据共享和传递。本示例代码将帮助开发者更好地理解和运用这些功能。 一、Application域对象 Application域对象在所有用户...

    STRUTS2获得session和request

    在探讨STRUTS2框架中如何获取session和request这一核心知识点时,我们首先需要理解STRUTS2框架的运行机制以及session与request在Web开发中的基础概念。 ### STRUTS2框架简介 STRUTS2是Apache软件基金会下的一个...

    struts2访问request,session,application作用域

    ### Struts2 访问 Request、Session 和 Application 作用域详解 #### 一、引言 Struts2 是一个基于 Java 的开源 Web 开发框架,它继承了 Struts1 的优秀特性并进行了改进,提供了更加灵活和强大的功能。在 Struts2...

    Struts2中获得Request,Response的几种方法

    Struts2中获得Request,Response的几种方法,有代码作为参考。

    Struts2访问request,session,application的四种方式

    在Struts2中,有四种主要的方式可以用来操作request、session和application上下文中的数据。这篇内容将深入探讨这四种方法,并结合源码和实用工具来帮助理解。 1. **ActionContext**: Struts2的核心组件...

    struts2+Velocity替换jsp项目源码

    通过这个"struts2+Velocity替换jsp项目源码",你可以学习到如何将一个传统的基于JSP的Web应用转换为使用Velocity作为视图层,从而提升项目的可维护性和性能。这是一个很好的实践案例,对于深入理解和掌握Struts2与...

    Struts2学习笔记(三) Struts2中访问request,session,和application对象

    在Struts2中,访问request、session和application对象是进行数据共享和传递的重要手段。这篇学习笔记主要探讨了如何在Struts2框架下有效地利用这三种域对象。 首先,request对象代表一次HTTP请求,它存储的数据仅...

    Struts使用validation框架来实现校验,4种以上的校验规则

    Struts是一个经典的Java Web开发框架,它为构建MVC(模型-视图-控制器)架构的应用程序提供了强大的支持。在Struts中,Validation框架是用于处理用户输入验证的重要组件,它可以确保用户提交的数据符合预定义的规则...

    Spring整合Struts

    ### Spring与Struts的整合:实现灵活的企业级应用开发 在企业级应用开发领域,Spring框架和Struts框架都是极具影响力的技术。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,提供了良好的环境管理和...

    struts2创建 request response session application

    在Struts2框架中,理解并正确使用request、response、session和application范围对于有效地管理数据和状态至关重要。这些范围帮助我们在Web应用程序中实现逻辑和数据流的分离,提高代码的可维护性和可扩展性。通过...

Global site tag (gtag.js) - Google Analytics