【问题标题】:Html integration with Spring MVC与 Spring MVC 的 HTML 集成
【发布时间】: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 启动一个新的示例应用程序。 谁能在这方面给我建议。

【问题讨论】:

标签: spring jsp spring-mvc


【解决方案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 文件放在仅提供静态内容且与安全场景无关的资源文件夹中。但是,您能否告诉我解决这个问题的更好方法是什么,因为这个问题在我脑海中盘旋了很长时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 2012-08-28
  • 2012-10-20
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多