Struts2.1* 过滤规则 与 Servlet 之间的微妙关系
2012-11-12 11:05
267 查看
Struts2.1* 过滤规则 与 Servlet 之间的微妙关系
学习Struts2也有一段时间了,今天用Servlet写了一个验证码,然后搬到Struts2中,惊奇地发现Servlet无法访问,出现404错误!后来折腾了半天,终于找出原因了。这也算我学习中的一个重大发现吧。写下来给大家分享一下:在李刚编写的《Struts2权威指南》一书中,他用的是Struts2.0*版本。而我在开发中用的是Struts2.1*版本的构包。其中有很大不同就是,新版本对servlet实现了过滤,而旧版本并未对其进行过滤!
原来我的web.xml定义了一个struts的Filter过滤所有用户请求,如下:
<!-- 定义Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 定义Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
再实现了一个servlet。这样是不能访问到这个Servlet的,因为struts将其拦截了。
为了能够实现servlet,我们可以如下的方式定义struts的Filter:
<!-- 定义Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用来初始化struts2并且处理.action和.jsp的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<!-- 定义Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用来初始化struts2并且处理.action和.jsp的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
只需对过滤规则改一改,我们就能够解决在Strut2中出现的Servlet的404错误.
这让我思索了一个问题:我们的java的包,不断地在更新中,每一次更新也许都会做出很大的改动,我们作为一个程序爱好者,不断地跟上最前沿的技术是必不可少的,但是我们在追赶潮流的时候,不要迷失了方向。要主意每一个细节,追赶潮流是要付出代价的。我就是其中的一个。
所以我们要时刻保持冷静的头脑,当用新的技术的时候,我们不能够死死地陷入旧的编程习惯的死胡同中,寻求更本就不可能出现的错误!而应该去发布新技术的网站去看看他们的最新文档,看看他们的原则,看看他们对哪些地方做出了改动。这样我们才能一路顺风地解决问题。
我今天钻进了两个大的死胡同,一个是Servlet不能方位,另外一个就是Ajax的Json插件两个版本中的很大程度上的不同。实际上对于Struts2.1*版本的Json插件已经与Struts的ActionSupport相兼容了,而低版本的Json插件只是实现了Struts的Action接口。
生活也是这样,我们要活到老,学到老!只有掌握最佳的方法,我们才能更有城府。
相关文章推荐
- Struts2.1* 过滤规则 与 Servlet 之间的微妙关系(转)
- Struts2.1* 过滤规则 与 Servlet 之间的微妙关系
- Servlet,filter, struts,jsp之间的关系
- struts 和servlet的关系
- STRUTS中ActionMessage、ActionMessages、saveMessages()、saveErrors()、之间的关系及用法
- Struts2与Servlet之间的关系
- JSP如何与数据库交互?即JSP与后台Servlet之间的关系,如何交互
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
- struts+spring+hibernate之间的关系与差别 (转)
- STRUTS中ActionMessage、ActionMessages、saveMessages()、saveErrors()、之间的关系及用法
- jsp,java bean, servlet之间的关系
- Java学习——JSTL标签与EL表达式之间的微妙关系
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
- jsp和servlet之间的关系+示例入门
- 一张图说明servlet、servlet容器、web服务器、Tomcat之间的关系
- TSKinData控件和MessageBox之间的微妙关系 -----Access Violation at address。。。
- Java Servlet(五):GenericServlet与Servlet、HttpServlet之间的关系(jdk7+tomcat7+eclipse)
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
- jsp和servlet的之间的关系
- servlet和web容器之间的关系