这是我的解析器解析器:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".html"/>
</bean>
我还有一个应该返回hello.html的控制器:
@Controller
@RequestMapping("/")
public class IndexController {
@RequestMapping(method = RequestMethod.GET)
public String getHtmlPage() {
return "hello";
}
}
当我访问localhost:8080时,收到错误消息:
WARNING: No mapping found for HTTP request with URI [/WEB-INF/pages/hello.html] in DispatcherServlet with name 'mvc-dispatcher'
现在,当我将后缀值更改为.jsp时,会正确返回hello.jsp。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
hello.jsp和hello.html在同一个文件夹中。任何想法如何解决这个问题?
修改
对于HTML,您不需要查看解析器。而只是在webapp文件夹中创建一个文件夹。
例如,将其称为static
,然后将<mvc:resources mapping="/static/**" location="/static/" />
添加到您的xml。
在控制器中而不是return "hello";
放置return "static/hello.html";
答案 0 :(得分:1)
作为How to map requests to HTML file in Spring MVC?答案的补充,我会说InternalResourceViewResolver知道如何呈现JSP或JSP + JSTL视图。你当然可以使用HTML视图 - 即使它没有意义(*) - 通过编写一个能够呈现纯HTML页面的自定义ViewResolver。
(*)通常,控制器准备将由视图使用的模型。在纯HTML视图中,您无法使用该模型。通常,当您尝试这样做时,您实际上需要重定向到纯HTML页面,而不是像视图一样使用它。
要重定向到HTML页面,请将其从WEB-INF文件夹中放在可作为资源访问的位置。
但是根据您的特殊需要,您尝试为根URL显示hello.html
。最好的方法是将它直接放在Web应用程序文件夹的根目录下,然后在welcome-file-list
的{{1}}中声明它:
web.xml