tomcat servlet路径映射问题,求高手赐教。

闲庭风 发布于 2013/06/02 17:30
阅读 974
收藏 0

最近想写个mvc简易功能的程序,思路是匹配所有请求的路径到一个action方法上,每个请求路径都有一个对应的方法,具体规则就不讨论了,就是约定什么的等等。问题是我在配置web.xml时把所有的请求都映射到一个servlet上,如:


<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>com.xxxx.mvc.HttpApplicationServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>package</param-name>
<param-value>com.xxxx.web</param-value>
</init-param> 
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>


这样请求的静态文件有问题,而且使用request.getServletContext().getRequestDispatcher(WEB_BASE_PATH + pathName).forward(request, response);时还会再次请求。

无奈改为

<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

这个应该和tomcat中的默认配置冲突,还是不能请求静态文件,而且还会循环请求。

最后没办法改为


<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/.html</url-pattern>
</servlet-mapping>
这样请求都没问题了。


针对以上问题希望聆听大神教诲,不省感激。

加载中
0
huan
huan
.do .action
0
王瑞平
王瑞平

.do或者/do是Servlet时代公司默认的用法

作为现代孩子不知道也无所谓

0
独孤小败
独孤小败
楼上两位,.do跟.html有区别吗?楼主的意思是想用REST风格的。在spring里的做法是把静态文件都统一以如:/static/形式,提前拦截掉。
0
随风运转
随风运转
request.getServletContext().getRequestDispatcher(WEB_BASE_PATH + pathName).forward(request, response);应该去掉红色的  web.xml里映射路径不应该你那样配
返回顶部
顶部