spirngMVC的配置中view能不能同时配置jsp和html两种

html-css016

spirngMVC的配置中view能不能同时配置jsp和html两种,第1张

不可以同时返回:

1. 返回JSP

返回JSP是最简单的,JSP视图的视图解析器为 InternalResourceViewResolver,也是一个UrlBasedViewResolver解析器。其对应的解析器的配置一般如下:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

<property name="prefix" value="/WEB-INF/jsp/"/>

<property name="suffix" value=".jsp"/>

</bean>

使用该例子,我们好好理解下什么是 “基于URL” 的视图解析器,比如我们的 Controller 中最后的返回的处理代码为: return "index"那么“基于URL” 的视图解析器就会将返回值 “index” 作为最后视图的URL的一部分,然后结合上面的配置 <property name="prefix" value="/WEB-INF/jsp/"/>和 <property name="suffix" value=".jsp"/>,最后得到最终的URL: "/WEB-INF/jsp/" + "index" + ".jsp" == "/WEB-INF/jsp/index.jsp"

这就是所谓的 “基于URL” 的视图解析器的工作方式。

2. 返回 HTML 页面

我们知道在Servlet中,我们是可以直接在其中打印输出HTML字符流到最终页面,比如下面的代码来自阿里巴巴的支付宝的接入示例中的代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("utf-8")

response.setCharacterEncoding("utf-8")

// ... ...

//建立请求

String sHtmlText = AlipaySubmit.buildRequest(sParaTemp,"get","确认")

response.getWriter().println(sHtmlText)

}

spring内置的 ViewResolver 实现.

注意:此时 DispatcherServlet 的 url-pattern 配置为 / , 否则可能无法访问jsp文件.

使用JSTL标签, 则指定 InternalResourceViewResolver 的 viewClass 属性为 org.springframework.web.servlet.view.JstlView .

即添加如下配置:

注: JSTL全称为JavaServer Pages Standard Tag Library.

标签示例:

标签示例:

它的作用是定义视图布局, 即提供公共的页面部分. 现用Apache Tiles3. 了解.

注:Thymeleaf与spring的集成由Thymeleaf负责, 所以要引入相应的依赖.

注: 如果没有这个依赖, 会提示 org.springframework.ui.freemarker.FreeMarkerCofigurationFactory 找不到异常.