我有一个示例应用程序,并创建了一个
view/HelloWorld.html页面。在我的控制器中,我返回以下内容
public String home(Locale locale, Model model) {
return "HelloWorld";
}在调试模式下,我收到以下警告/错误:
WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/HelloWorld/WEB-INF/views/HelloWorld.html] in DispatcherServlet with name 'appServlet'我的src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml的内容
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- 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>如果我将.html重命名为.jsp,并将上面的名称更改为.jsp,则一切正常。
发布于 2012-11-29 09:03:32
servlet容器针对此请求所经历的流程如下:
InternalResourceViewResolver)来查找要通过其呈现模型的视图,由于名称是"HelloWorld",这将映射到/WEB-INF/view/HelloWorld.html视图。RequestDispatcher.forward("/WEB-INF/views/HelloWorld.html",.....jsp uri的servlet -如果它是一个.jsp,那么有一个注册的JSPServlet可以处理渲染jsp,但是对于*.html,没有注册的servlet,所以调用以"default servlet"结束,它注册了/的servlet映射,这可能是您的DispatcherServlet。/WEB-INF/views/HelloWorld.html的请求,因此您看到的消息是如果你想让servlet容器来处理这种扩展,比如tomcat,你可以注册由JSPServlet来处理的*.html扩展,然后它就可以干净利落地工作了。或者返回forward:/resources/HelloWorld.html,它将被视为相对于resources文件夹的静态文件。
发布于 2012-11-29 08:48:03
html和jsp之间有很多不同之处。Java服务器页面被编译成Java“servlet”。它可以调用beans和企业beans,例如Java Beans组件和enterprise Java Beans组件,以便在服务器上执行处理。因此,拥有这样的JSP技术可以成为基于web的应用程序的高级体系结构中的关键组件。
https://stackoverflow.com/questions/13616821
复制相似问题