来自:http://www.blogjava.net/xcp/archive/2012/08/05/384824.html
先看一下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当成act
解决方法目前有四种:
方法1:统一在servlet后面加上.servlet(包括web.xml配置文件中和页面上使用servlet的地方)
方法2:继承StrutsPrepareAndExecuteF
public void init(FilterConfig filterConfig) throws
ServletException {
..............................
}
public void doFilter(ServletRequest request, ServletResponse response,
IOException, ServletException {
...............................
if(url.contain("servlet")){
((HttpServletResponse) response).sendRedirect(redirectUrl);
}
super.doFilter(request, response, chain);
}
方法3:修改拦截页面配置
原:
<filter>
/* </url-pattern>
现:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.act
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
<filter-name>struts2</filter-name>
<url-pattern>/user/*</url-pattern>
servlet的请求路径不必改变
方法4:在struts.xml文件中修改
