开发者社区> 问答> 正文

tomcat servlet路径映射问题

最近想写个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>

这样请求都没问题了。
针对以上问题希望聆听大神教诲,不省感激。

展开
收起
落地花开啦 2016-05-27 10:33:36 2060 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人
    request.getServletContext().getRequestDispatcher(WEB_BASE_PATH + pathName).forward(request, response);

    应该去掉getServletContext() web.xml里映射路径不应该你那样配

    2019-07-17 19:17:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Tomcat 的云原生演进 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载