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 找不到异常.