struts2 过滤器

转载 2013年12月03日 14:30:30
请求路径-action名称搜索顺序
1、获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action

2、首先寻找namespace为/path1/path2/path3的package,如果不存在这个 package则执行步骤3;如果存在这个package,则在这个package中寻找名字为test的action,当在该package下寻找不到 action 时就会直接跑到默认namaspace的package里面去寻找action(默认的命名空间为空字符串“”),如果在默认namaspace的 package里面还寻找不到该action,页面提示找不到action。

3、寻找namespace为/path1/path2的package,如果不存在这个package,则转至步骤4;如果存在这个package,则 在这个package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package里面去找名字为test的action,在默认namaspace的package里面还寻找不到 该action,页面提示找不到action。

4、寻找namespace为/path1的package,如果不存在这个package则执行步骤5;如果存在这个package,则在这个 package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action。

5、寻找namespace为/的package,如果存在这个package,则在这个package中寻找名字为test的action,当在 package中寻找不到action或者不存在这个package时,都会去默认namaspace的package里面寻找action,如果还是找 不到,页面提示找不到action。

6、如果某package的namespace=“”,则该package被视为默认namespace的package。

filter处理机制
web.xml中:
<filter>
 <filter-name>struts2</filter-name>
 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
 <filter-name>struts2</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>
从该文件可以看出struts2框架中,StrutsPrepareAndExecuteFilter是核心控制器。它负责拦截由<url- pattern>/*</url-pattern>指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求。当请求转 入Struts 2框架处理时会先经过一系列的拦截器,然后再到Action。与Struts1不同,Struts2对用户的每一次请求都会创建一个Action,所以 Struts2中的Action是线程安全的。

StrutsPrepareAndExecuteFilter是对struts2较早版本的核心控制器FilterDispatcher(文档建议,从 struts2.1.3起不再使用该类)的替代,结合了StrutsPrepareFilter与StrutsExecuteFilter的功能。

在struts2中,请求--other filters--StrutsPrepareAndExecuteFilter--other filters--响应。可以看出:
1、StrutsPrepareAndExecuteFilter是放在处理“请求”的其他filters之后的;
2、StrutsPrepareAndExecuteFilter处理之后对结果数据和信息不会直接放行。
因为StrutsPrepareAndExecuteFilter直接放行的话,“响应”是在(例如)tomcat容器中直接解析路径所得结果,如果前面的filters定义路径时用到了struts2自己的机制,那么tomcat解析路径时就会出错。

如果其他的Filter要访问Struts的特性,这时候不要使用StrutsPrepareAndExecuteFilter ,而是使用StrutsPrepareFilter与StrutsExecuteFilter,并让其他的Filter应位于两者之间。

相关文章推荐

struts2过滤器代码

Struts2过滤器

(一)创建过滤器 1.新建类继承AbstractInterceptor实现intercept方法 2.在XML中配置过滤器  当用户使用了自定义的拦截器的时候默认的就不使用了,所有要显示调...

struts2配置过滤器

struts2结合过滤器和cookie实现自动登录

写个过滤器要对登录页面进行过滤,如果session为空,则去cookie中去寻找相关的信息,如果找到了则加载用户的信息,然后转发到登录成功的页面。我用的是struts2实现的,cookie存放用户名和...

简单理解Struts2中拦截器与过滤器的区别及执行顺序

当接收到一个httprequest ,  a) 当外部的httpservletrequest到来时  b) 初始到了servlet容器 传递给一个标准的过滤器链  c) FilterDispat...

使用过滤器、struts2处理乱码简析

首先使用比较容易的Filter来处理乱码:(示例) ForCharacterFilter.java文件: package cn.edu.bzu; import java.io.IOExc...

struts2拦截器+过滤器

一、理解Struts2拦截器 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. ...

struts2结合过滤器和cookie实现自动登录

写个过滤器要对登录页面进行过滤,如果session为空,则去cookie中去寻找相关的信息,如果找到了则加载用户的信息,然后转发到登录成功的页面。我用的是struts2实现的,cookie存放用户名和...

struts2 拦截器和过滤器理解

学习Struts2时,发现有过滤器和拦截器,他们貌似都是一样的功能,但是为什么会有2个不同的名称呢?肯定是有区别的,所以打算自己整理一下。            过滤器,是在java we...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)