struts2的StrutsPrepareAndExecuteFilter

以前是FilterDispatcher

StrutsPrepareAndExecuteFilter在web.xml中配置 有3个成员

protected PrepareOperations prepare;
    protected ExecuteOperations execute;
    protected List<Pattern> excludedPatterns = null;

doFilter方法

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);
        }
    }
时间: 2024-12-30 16:58:13

struts2的StrutsPrepareAndExecuteFilter的相关文章

maven struts2工程StrutsPrepareAndExecuteFilter cannot be cast to javax.servlet.Filter

maven搭建struts2工程时报错 严重: Exception starting filter struts2java.lang.ClassCastException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter cannot be cast to javax.servlet.Filter 工程是复制的,所以从pom.xml导入时一些jar包引用清理的不干净,最后找到原因是与servlet-api

struts2中配置文件加载的顺序是什么?

struts2的StrutsPrepareAndExecuteFilter拦截器中对Dispatcher进行了初始化 在Dispatcher类的init方法中定义了配置文件的加载顺序(下面是源码) public void init() { if (configurationManager == null) { configurationManager = createConfigurationManager(DefaultBeanSelectionProvider.DEFAULT_BEAN_NA

struts2源码学习之初始化(一)

看struts2源码已有一段时日,从今天开始,就做一个总结吧. 首先,先看看怎么调试struts2源码吧,主要是以下步骤: 使用Myeclipse创建一个web工程 导入struts2需要的jar包 如图: 让jar包关联源文件 在上图中的jar包右键,选择properties->java source attach,如果关联成功,双击jar包下的某个class文件就会显示java源代码了. 双击.class文件,在源代码关键地方设置断点 部署工程到Tomcat Tomcat以Debug方式启动

struts2源代码学习之初始化(一)

看struts2源代码已有一段时日,从今天開始,就做一个总结吧. 首先,先看看怎么调试struts2源代码吧,主要是下面步骤: 使用Myeclipse创建一个webproject 导入struts2须要的jar包 如图: 让jar包关联源文件 在上图中的jar包右键,选择properties->java source attach,假设关联成功,双击jar包下的某个class文件就会显示java源码了. 双击.class文件,在源码关键地方设置断点 部署project到Tomcat Tomcat

控制层SpringMVC和Struts2的区别

我们现在流行的常用的MVC层,控制层Controller层的框架主要有Struts2和SpringMVC两个框架,分别对应着Action和Controller.那么SpringMVC和Struts的主要区别有那些呢? 一.框架机制 我们知道Struts2采用Filter实现,而SpringMVC则采用Servlet实现. Struts2使用StrutsPrepareAndExecuteFilter,而SpringMVC使用DispatcherServlet.Filter是一种特殊的Servlet

修改Struts2的struts.xml配置文件位置

默认情况下,Struts2的配置文件名称为struts.xml,且该文件放在src根目录下.如下图所示: 如果需要修改struts.xml的位置,例如把struts.xml放到struts2文件夹下,结构如下图所示,该怎么办呢? Struts2在web.xml中的一般配置如下: <!-- 配置struts2过滤器:StrutsPrepareAndExecuteFilter --> <filter> <filter-name>struts2</filter-name

struts2框架 转载 精华帖

一.Struts2简介 参考<JavaEE 轻量级框架应用与开发-S2SH> Struts框架是流行广泛的一个MVC开源实现,而Struts2是Struts框架的新一代产品,是将Struts1和WebWork两种技术进行兼容.合并的全新的MVC框架.Struts2框架充分发挥了Struts1和WebWork这两种技术的优势,抛弃原来Struts1的缺点,使得Web开发更加容易. Struts1运行原理:  Struts1工作流程: (1)客户端向Web应用发送请求,请求被核心控制器Action

Struts2(四)

以下内容是基于导入struts2-2.3.32.jar包来讲的 1.struts2配置文件加载的顺序 struts2的StrutsPrepareAndExecuteFilter拦截器中对Dispatcher进行了初始化,在Dispatcher类的init方法中定义了配置文件的加载顺序,加载的顺序依次是: 0.web.xml 1.default.properties文件 作用:定义了struts2框架中所有常量 位置: struts2-core-2.3.32.jar/org/apache/stru

Struts2框架初探

Struts2提供了基于MVC应用程序的开发模式,从而使应用程序结构更加清晰,同时也简化了Web应用程序的开发. Struts2的组成结构 主要包括控制器组件(包括核心控制器StrutsPrepareAndExecuteFilter.业务控制器Action).模型组件(包括业务逻辑组件和数据库访问组件)和视图组件. 模型组件:实现业务逻辑的模块,由JavaBean或EJB构成. 视图组件:主要有HTML.JSP和Struts2标签等视图技术. 控制器组件:控制器组件主要由核心控制器和业务控制器A