首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将.html设为默认视图

问将.html设为默认视图
EN

Stack Overflow用户
提问于 2012-11-29 08:23:21
回答 2查看 7.1K关注 0票数 2

我有一个示例应用程序,并创建了一个

代码语言:javascript
复制
view/HelloWorld.html

页面。在我的控制器中,我返回以下内容

代码语言:javascript
复制
public String home(Locale locale, Model model) {
    return "HelloWorld";
}

在调试模式下,我收到以下警告/错误:

代码语言:javascript
复制
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的内容

代码语言:javascript
复制
<!-- 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,则一切正常。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-29 09:03:32

servlet容器针对此请求所经历的流程如下:

  1. 首先Servlet容器调用DispatcherServlet。
  2. DispatcherServlet找到映射到控制器的主方法的映射,并且主方法返回一个视图名称。DispatcherServlet使用视图解析器(您的InternalResourceViewResolver)来查找要通过其呈现模型的视图,由于名称是"HelloWorld",这将映射到/WEB-INF/view/HelloWorld.html视图。
  3. 现在本质上是对RequestDispatcher.forward("/WEB-INF/views/HelloWorld.html",....
  4. The Servlet容器的调用,此时试图找到可以处理.jsp uri的servlet -如果它是一个.jsp,那么有一个注册的JSPServlet可以处理渲染jsp,但是对于*.html,没有注册的servlet,所以调用以"default servlet"结束,它注册了/的servlet映射,这可能是您的DispatcherServlet。
  5. 现在,Dispatcher servlet找不到控制器来处理对/WEB-INF/views/HelloWorld.html的请求,因此您看到的消息是

如果你想让servlet容器来处理这种扩展,比如tomcat,你可以注册由JSPServlet来处理的*.html扩展,然后它就可以干净利落地工作了。或者返回forward:/resources/HelloWorld.html,它将被视为相对于resources文件夹的静态文件。

票数 11
EN

Stack Overflow用户

发布于 2012-11-29 08:48:03

html和jsp之间有很多不同之处。Java服务器页面被编译成Java“servlet”。它可以调用beans和企业beans,例如Java Beans组件和enterprise Java Beans组件,以便在服务器上执行处理。因此,拥有这样的JSP技术可以成为基于web的应用程序的高级体系结构中的关键组件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13616821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档