与 Spring MVC 的 HTML 集成

Posted

技术标签:

【中文标题】与 Spring MVC 的 HTML 集成【英文标题】:Html integration with Spring MVC 【发布时间】:2016-11-24 05:28:48 【问题描述】:

我有使用 jsp 和 spring mvc 完成的示例 poc,并且工作正常,我像这样配置了 DispatcherServlet 和 InternalResourceViewResolver

<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>

在我的 servlet-context.xml 中,我像这样配置了 InternalResourceViewResolver

<beans:bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp"  />
</beans:bean>

我的请求和响应运行良好。 现在我正在尝试使用 html 而不是 jsp 开始一个新的示例项目,我像这样更改了 InternalResourceViewResolver

class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <beans:property name="prefix" value="/WEB-INF/views/" />
            <beans:property name="suffix" value=".html"  />
</beans:bean>

但我得到一个例外

“信息:警告:org.springframework.web.servlet.PageNotFound - 在 DispatcherServlet 中找不到名称为“appServlet”的带有 URI [/Organization_Management/WEB-INF/views/check.html] 的 HTTP 请求的映射”

我想用 html 和 spring mvc 启动一个新的示例应用程序。 谁能在这方面给我建议。

【问题讨论】:

网址怎么称呼? ***.com/questions/24670327/…,这可能会有所帮助 【参考方案1】:

解决方案1:InternalResourceViewResolver中可以将Suffix部分InternalResourceViewResolver 将解析 .jsp 和 .html 文件。

但请确保在您的控制器中具有返回 html 视图的方法和返回基于后缀的 jsp 视图的方法。例如,如果 index.html 和 index.jsp 都存在于 WEB-INF/pages 中,你可以这样做:

@RequestMapping("/htmlView")
   public String renderHtmlView() 
      return "index.html";


@RequestMapping("/jspView")
   public String renderJspView() 
      return "index.jsp";

解决方案 2: 由于 .html 文件是静态的并且不需要 servlet 处理,因此使用映射更有效、更简单。这需要 Spring 3.0.4+。

例如:

<mvc:resources mapping="/static/**" location="/static/" />

这会将所有以 /static/ 开头的请求传递到 webapp/static/ 目录。

因此,通过将 index.html 放入 webapp/static/ 并使用 return "static/index.html";根据您的方法,Spring 应该会找到视图。

【讨论】:

不推荐。当您使用 spring 安全资源配置时,通常允许所有用户使用资源,特别是 ANONYMOUS 用户。将视图放入资源中将导致 OPEN get to all。 @TechBreak 我也有这个想法。但是我随后认为可以将简单的 html 文件放在仅提供静态内容且与安全场景无关的资源文件夹中。但是,您能否告诉我解决这个问题的更好方法是什么,因为这个问题在我脑海中盘旋了很长时间。

以上是关于与 Spring MVC 的 HTML 集成的主要内容,如果未能解决你的问题,请参考以下文章

Spring-mvc 与 reactjs 的集成?

将 spring 3 mvc 与 GWT 集成的经验?

Spring MVC 与 Spring Security 的集成测试

spring MVC配置详解

spring MVC配置详解

Mybatis系列六:与Spring MVC的集成