与 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 集成的主要内容,如果未能解决你的问题,请参考以下文章