我正在处理我的Spring应用程序,根据下面的代码,我将多个URL映射到一个方法。我正在制作一个方法“root”来提供以index和root开头的所有请求。
@RequestMapping(value = {"/", "index*"}, method = RequestMethod.GET)
public String root(Model model) {
logger.info("Welcome to index page.");
model.addAttribute("hello", "Welcome to index page." );
return "index";
}
以上"index*"
在"index", "index123", "index.html" and "index.txt"
的情况下正常工作,请求定向到映射的方法,即"root"
,但它不适用于"index.jsp"
。如果"index.jsp"
我正在"HTTP Status 404" "The requested resource is not available"
。
摘自web.xml
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
有人能让我知道背后的原因以及如何让它发挥作用?
答案 0 :(得分:0)
我认为这可能正在发生,因为servlet容器将* .jsp请求映射到JspServlet
以便编译和执行jsp。如果您正在使用Tomcat,则会发生在Tomcat的web.xml
目录中的顶级conf
。这意味着以* .jsp结尾的请求会在到达您的控制器之前被截获。 JspServlet
会尝试根据网络应用中的路径加载index.jsp
文件,并在无法找到时返回404。
对于/index.jsp
,您最好在webapp的根目录中实际创建此文件,这样就不会看到404.您可以添加一些代码来将请求重定向到其他地方(也许是/index.html
- 或您申请的其他入口点。)