我的目标是将 /{any path} 和 *.html 映射到不映射 /* 的 servlet。例如:
map:
/foo
/foobar/
/bar.html
/foo/bar.html
don't map:
/foo.js
/bar.pdf
为了做到这一点,我有一个像这样映射的 servlet 和欢迎文件:
网页.xml:
<servlet-mapping>
<servlet-name>someServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
在控制器中,我有
@RequestMapping(value="/index.html", method=RequestMethod.GET)
public ModelAndView showPage(HttpServletRequest request){
...
}
这不起作用- servlet 不会被触发/test
。但是,我发现如果我在 处创建一个空白文件/test/index.html
,那么它确实可以工作 - 我假设默认 servlet 通过查找 index.html 以某种方式提供了帮助。
不幸的是,我不能依赖静态文件。有没有什么方法可以使这个映射工作而不需要空白文件破解并且不映射 /* 到 servlet?