Struts和servlet不能共存问题解决方法
在一个项目中,如果我们既用到了Struts2又用到了Servlet,项目运行时有可能无法正常访问Servlet,原因是在配置Struts的过滤器的时候,拦截了所有请求。 <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 下面是servlet的配置 <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.itmyhome.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet</url-pattern> </servlet-mapping> 当我们在页面发出请求时,struts2将会拦截所有请求,对于servlet请求将不能够正常响应 报错信息为:HTTP Status 404 - There is no Action mapped for namespace / and action name MyServlet. 这是因为struts2把servlet当成action了,因为servlet和action都是没有后缀的. 解决方法: 下面介绍三种方法 方法1: 在servlet后面加上.servlet结尾,包括web.xml配置文件中和页面上使用servlet的地方(当然是什么都可以,比如hello) <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet.servlet</url-pattern> <!-- MyServlet.hello 也是可以的 --> </servlet-mapping> 页面访问 http://localhost:8080/project/MyServlet.servlet 方法2: 在struts.xml中的的节点下面添加struts2处理的请求后缀 常量: <constant name="struts.action.extension" value="action" /> 该属性指定需要Struts2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。 方法3: 在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-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>/admin/*</url-pattern> </filter-mapping> servlet的请求路径不改变 总结 以上就是本文关于Struts和servlet不能共存问题解决方法的全部内容,希望对大家有所帮助。欢迎大家参阅:Struts2修改上传文件大小限制方法解析 、 struts2开发流程及详细配置等。有问题可以随时留言,小编会及时回复大家的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – 高效的BigDecimal向上和向下舍入两位小数
- Struts2 Interceptor接口:拦截器
- 在Java GUI中提供Yes / No选项
- java – 可以在switch语句中使用throw而不是break吗?
- java – 在等待退出信号时处理InterruptedException(Androi
- java servlet手机app访问接口(二)短信验证
- java – 将额外的(第二个)参数传递给Guava Predicate
- 为了学习目的而阅读的优秀Java代码?
- java – 泽西:InjectableProvider没有拿起 – 春天
- java – Spring HATEOAS resourcesupport – >域对象