最近想写个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>
这样请求都没问题了。
针对以上问题希望聆听大神教诲,不省感激。
request.getServletContext().getRequestDispatcher(WEB_BASE_PATH + pathName).forward(request, response);
应该去掉getServletContext()
web.xml里映射路径不应该你那样配
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。