这是我的控制器方法:
@RequestMapping(value = "/login/{id}", method = RequestMethod.GET)
public String doLogin(@PathVariable long id, HttpServletRequest request, HttpServletResponse response, Model model) {
logger.info(String.format(
Constants.LogMessages.NEW_GET_REQUEST_FROM_IP,
request.getRemoteAddr()));
logger.info("/login/{id}");
return "login";
}
和我的 appServlet-context.xml:
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".html" />
</beans:bean>
我在这种方法中得到的例外是:
WARN PageNotFound - No mapping found for HTTP request with URI [/project/WEB-INF/views/login.html] in DispatcherServlet with name 'appServlet'
问题是,当我将“后缀”更改为 .jsp 并将文件名从 html 更改为 .jsp 时,它可以工作。
知道为什么吗?
编辑:
这是我的 web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
<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-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
<filter-name>cors</filter-name>
<filter-class>src.com.project.context.CorsFilter</filter-class>
<filter-name>cors</filter-name>
<url-pattern>/*</url-pattern>