J2EE社区

苟有恒,何必三更起五更眠;
最无益,只怕一日曝十日寒.
posts - 241, comments - 318, trackbacks - 0, articles - 16

struts2和servlet的共存问题

Posted on 2012-08-05 17:24 xcp 阅读(4040) 评论(1)  编辑  收藏 所属分类: struts2

先看一下struts2 的web.xml文件:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在请求应用时,struts2将会截获所有请求,对于servlet请求将不能够正常相应,是struts2把servlet当成action了,因为servlet和action都是没有后缀的


解决方法目前有四种:

方法1:统一在servlet后面加上.servlet(包括web.xml配置文件中和页面上使用servlet的地方)

方法2:继承StrutsPrepareAndExecuteFilter,实现以下两个方法。

public void init(FilterConfig filterConfig) throws
ServletException {
      ..............................

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws
IOException, ServletException {
...............................
if(url.contain("servlet")){
((HttpServletResponse) response).sendRedirect(redirectUrl);
}

super.doFilter(request, response, chain);


}


方法3:修改拦截页面配置
原:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>
/* </url-pattern>
</filter-mapping>

现:

<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>
<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/user/*</url-pattern>
</filter-mapping>


servlet的请求路径不必改变


方法4:在struts.xml文件中修改

struts2拦截了servlet请求的解决 

……




名称: ♪4C.ESL | .↗Evon
口号: 遇到新问题♪先要寻找一个方案乄而不是创造一个方案こ
mail: 联系我


Feedback

# re: struts2和servlet的共存问题  回复  更多评论   

2013-10-17 09:14 by www.eyny.cn
改变web.xml中的filter位置,将struts2放到最后定义是否有用?

只有注册用户登录后才能发表评论。


网站导航: