您的位置:首页 > 编程语言 > Java开发

转载 在Struts2中使用servlet 配置问题

2011-08-14 20:10 302 查看
在做WEB项目时,要么是Struts+Spring+Hibernate,
要是就直接使用servlet。这次碰到一个项目,经理想要把之前一个用servlet做的部分模块移植到当前项目下(Struts+Spring),这
时发现Struts2.X(Struts1.X没试过不知道行不行)不能和servlet同时使用,主要是由于页面的请求都被struts给拦截了,根本
访问不了servlet,发现这个原因后本人是先直接在struts的配置文件中加上

<constant name="struts.action.extension" value="do,action"/>
(请求的后缀要有.do或.action才到struts配置文件里找对应的action),运行站点,可以工作了。

没想到刚过两天,在测试上传功能时又出错了(该上传功能也是
从原先的项目移植过来的),找不到上传的文件,这到是奇了怪了,仔细看了下log,发现在执行请求的servlet前还是经过了struts的过滤链,这
时我想可能是struts的文件过滤那块把文件给绑定到某个地方(好像使用struts2上传文件就是这么回事:通过文件拦截器
,将文件绑定到action中的对应属性),而当servlet去获取request中的文件二进制流时,将找不到文件,导致上传的文件为空,造成后续的
操作失败。至此只能在web.xml关于struts2的拦截链的配置修改了,原本配置如下:

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

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

<filter-class>

org.apache.struts2.dispatcher.FilterDispatcher

</filter-class>

</filter>

<filter-mapping>

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

<url-pattern>*.action;*.do;...</url-pattern>(过滤不同的后缀,要分开写 ,在此为方便写在一起)

</filter-mapping>

至此struts和servlet可以一起运行啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: