Spring实战第六章学习笔记————渲染Web视图
Spring实战第六章学习笔记————渲染Web视图
理解视图解析
在之前所编写的控制器方法都没有直接产生浏览器所需的HTML。这些方法只是将一些数据传入到模型中然后再将模型传递给一个用来渲染的视图。尽管我们编写了几个JSP视图但控制器不关心这些。
将控制器请求处理的逻辑和视图中的渲染实现解耦是SpringMVC的一个重要特性。而控制器只通过逻辑视图名来了解视图,这时就需要Spring视图解析器了。
SpringMVC定义了一个名为ViewResolver的接口,大致如下所示:
public interface ViewResolver {
View resolveViewName(String viewName, Locale locale) throws Exception;
}
当给resolveViewName()方法传入一个视图名和locale对象时,它会返回一个View实例。View是另一个接口,如下所示:
public interface View {
String getContentType();
void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception;
}
View接口的任务是接受模型以及Servlet的request对象和response对象,并将结果渲染到response中。但一般来讲我们不需要关心这些接口。Spring提供了多个内置的实现。
视图解析器 | 描述 |
---|---|
BeanNameViewResolver | 在Spring的application context中的bean中查找与视图名称相同id |
ContentNegotiatingViewResolver | 委托给一个或多个人视图解析器,而选择哪一个取决于请求的内容类型 |
FreeMarkerViewResolver | 查找一个基于FreeMarker的模版 |
InternalResourceViewResolver | 在web应用程序的war文件中查找视图 |
JasperReportsViewResolver | 解析为JasperReport报表文件 |
ResourceBundleViewResolver | 根据属性文件(properties file)查找View实现 |
TilesViewResolver | 通过Tiles模版定义的模版解析,模版的名称与视图名称相同 |
UrlBasedViewResolver | 根据视图名称直接解析,当视图名称与物理视图名称匹配时 |
VelocityLayoutViewResolver | 解析为从不同的Velocity模版组成的Velocity布局 |
VelocityViewResolver | 解析为Velocity模版 |
XmlViewResolver | 根据XML文件(/WEB_INF/views.xml)中声明的View实现进行解析,与BeanNameViewResolver类似 |
XsltViewResolver | 基于XSLT视图解析 |
对于表中大部分的解析器,每一项都对应了JavaWeb应用中特定的某种视图技术。InternalResourceViewResolveryibanyongyuJSP,TilesViewResolver用于ApacheTiles视图。而FreeMarkerViewResolver和VelocityViewResolver分别对应FreeMarker和Vwlocity模板视图。
创建JSP视图
Spring提供了两种支持JSP视图的方式:
- InternalResourceViewResolver:可以将视图名称解析到JSP文件。另外,对JSP中使用的JSTL(JavaServer Pages Standard Tag Library)标签也提供了支持。
- Spring提供了两种JSP标签库,一种是form-to-model绑定,另外一种则提供基本的功能。
配置适用于JSP的视图解析器
InternalResourceViewResolver会遵循一种约定,会在视图名上添加前缀和后缀,进而确定一个Web应用中视图资源的物理路径。如图所示:
aaarticlea/png;base64,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" alt="image">
当使用@Bean注解时,Spring会这样配置InternalResourceViewResolver,使其遵守上述的约定:
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
另外,如果采用基于XML的Spring配置,也可以通过如下方式进行配置:
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/views/"
p:suffix=".jsp" />
当JSP页面使用JSTL标签时,就需要配置InternalResourceViewResolver将视图解析为JstlView。
JSTL格式化标签需要一个Locale来正确地格式化一些特定语言环境的值,如日期和币种。消息标签可以使用Spring消息源和Locale来正确地选中消息并解析到HTML。
要解析JstlView,需要在InternalResourceViewResolver中设置viewClass属性:
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
return resolver;
}
使用Spring的JSP库
Spring提供了两个JSP标签库,用来帮助定义Spring MVC Web的视图。其中一个标签库会用来渲染HTML表单标签,这些标签可以绑定model中的某个属性。另外一个标签库包含了一些工具类标签。
表单绑定到模型上
Spring的表单绑定JSP标签库包含了14个标签,它们中的大多数都用来渲染HTML中的表单标签。但是,它们与原生HTML标签的区别在于它们会绑定模型中的一个对象,能够根据模型中对象的属性填充值。标签库中还包含了一个为用户展现错误的标签,它会将错误信息渲染到最终的HTML之中。
使用表单绑定库,需要在JSP页面中对其进行声明:
<%@taglib uri="http://www.springframework.org/tags/form" prefix="sf" %>
或
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
JSP标签 | 描 述 |
---|---|
<sf:checkbox> | 渲染成一个HTML <input>标签,其中type属性设置为checkbox |
<sf:checkboxes> | 渲染成多个HTML <input>标签,其中type属性设置为checkbox |
<sf:errors> | 在一个HTML <span>中渲染输入域的错误 |
<sf:form> | 渲染成一个HTML <form>标签,并为其内部标签暴露绑定路径,用于数据绑定 |
<sf:hidden> | 渲染成一个HTML <input>标签,其中type属性设置为hidden |
<sf:input> | 渲染成一个HTML <input>标签,其中type属性设置为text |
<sf:label> | 渲染成一个HTML <label>标签 |
<sf:option> | 渲染成一个HTML <option>标签,其selected属性根据所绑定的值进行设置 |
<sf:options> | 按照绑定的集合、数组或Map,渲染成一个HTML <option>标签的列表 |
<sf:password> | 渲染成一个HTML <input>标签,其中type属性设置为password |
<sf:radiobutton> | 渲染成一个HTML <input>标签,其中type属性设置为radio |
<sf:radiobuttons> | 渲染成多个HTML <input>标签,其中type属性设置为radio |
<sf:select> | 渲染为一个HTML <select>标签 |
<sf:textarea> | 渲染为一个HTML <textarea>标签 |
选几个标签写出以下代码:
<sf:form method="POST" commandName="spitter">
First Name: <sf:input path="firstName" /><br/>
Last Name: <sf:input path="lastName" /><br/>
Email: <sf:input path="email" /><br/>
Username: <sf:input path="username" /><br/>
Password: <sf:password path="password" /><br/>
<input type="submit" value="Register" />
</sf:form>
sf:form会通过commandName属性构建针对某个模型对象的上下文信息。在其他的表单绑定标签中,会引用这个模型对象的属性。这样模型中必须有一个Spitter对象。所以我们要修改一下SpitterController:
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String showRegistrationForm(Model model) {
model.addAttribute(new Spitter());
return "registerForm";
}
错误信息展示
当存在错误时,请求中会包含错误的信息,这些信息是与模型数据放到一起的。我们应该将这些数据抽取出来展现给用户。
First Name: <sf:input path="firstName" />
<sf:errors path="firstName" cssClass="error"/><br/>
这里将<sf:errors>的path属性设置为firstName,那么就会展示Spitter model对象的firstName的验证错误信息,如果没有错误,那么就不会对其进行解析。如果有,会将其解析为<span>标签。
Spring通用的标签库
处理表单绑定标签库之外,Spring还提供了一个跟基本的JSP标签库。要使用该标签库,需要在页面中做以下声明:
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
声明后可以和使用如下标签:
JSP标签 | 描述 |
---|---|
<s:bind> | 通常和form一起用,用以指明表单要提交到哪个类或类的属性中去 |
<spring:escapeBody> | 对标签中的内容进行转义处理 |
<spring:hasBindErrors> | 用于将特定对象(request属性中)中绑定的的errors解析出来 |
<spring:htmlEscape> | 设置当前页面的默认的HTML转义值 |
<spring:message> | 根据code取得消息资源,并将其解析为一个page、request、session或者application范围的变量(由var或者scope属性指定) |
<spring:nestedpath> | 为<spring:bind>配置嵌套路径 |
<s:theme> | 与<spring:message>相同,只不过处理的是theme消息 |
<spring:transform> | 来转换表单中不与bean中的属性一一对应的那些属性 |
<s:url> | 与<spring:message>相同,只不过处理的是URI模版变量 |
<s:eval> | 与<spring:message>相同,只不过处理的是SpEL表达式 |
展现国际化消息
对于渲染文本来说我们可以借助<s:messsage>让文本位于一个或多个属性文件。
<<h1><s:message code="spittr.welcome" /></h1>
这里<s:message>标签会从某个属性文件中根据key值spittr.welcome读取对应的文本并解析到页面中,在这之前需要对这个key-value进行配置。Spring有一些实现自MessageSource接口的消息源类,其中一个比较常用的就是ResourceBundleMessageSource,它可以从properties文件中加载消息,下面的@Bean方法对该类进行了配置:
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}
其中的关键在于设置了basename属性,之后ResourceBundleMessageSource就可以对classpath根路径下相对应的的properties文件进行解析。
另外,还可以使用ReloadableResourceBundleMessageSource,它可以在不重新编译或者重启项目的情况下重新加载消息属性:
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("file:///etc/spittr/messages");
messageSource.setCacheSeconds(10);
return messageSource;
}
与ResourceBundleMessageSource主要的区别在于basename的设置,这里可以将其设置为classpath(需要前缀classpath:)、文件系统(file:)或者项目的根目录(不加任何前缀)。上面代码中设置的就是在文件系统中的/etc/spittr目录中查找文件名称为messages的文件。
下面创建一个名为messages.properties的文件,并添加如下内容:
spittr.welcome=Welcome to Spittr!
创建URL
<s:url>是一个很小的标签,它主要的任务是创建URL,然后将其赋值到一个变量或渲染到响应中。
按照其最简单的形式,<s:url>标签需要一个servlet上下文相关的URL,并对其进行解析。例如:
<a href="<s:url href="/spitter/register" />">Register</a>
如果servlet上下文是spittr,那么上面的链接将会被解析为:
<a href="/spittr/spitter/register">Register</a>
将servlet上下文作为链接前缀添加到目标链接中。而我们还可以用<s:url>创建URL,并将其赋值给一个变量供模板再稍后使用。
<s:url href="/spitter/register" var="registerUrl" />
<a href="${registerUrl}">Register</a>
默认情况下,URL变量是page范围内的。但是也可以通过设置scope属性将其设置为application、session或者request范围内的:
<s:url href="/spitter/register" var="registerUrl" scope="request" />
如果想为URL添加参数,可以通过<s:param>标签进行添加。例如,下面的<s:url>标签通过<s:param>为/spittles设置了max和count属性:
<s:url href="/spittles" var="spittlesUrl">
<s:param name="max" value="60" />
<s:param name="count" value="20" />
</s:url>
使用Apache Tiles视图定义布局
对于WEB页面的布局问题我们通常都会用布局引擎如Apache Tiles来解决。SpringMVC以视图解析器的形式对Apache Tiles提供了支持。
配置Tiles视图解析器
为了在Spring中使用Tiles,需要配置几个bean。我们需要一个Tilesconfigurer bean,
它会负责定位和加载Tile定义并协调生成Tiles。除此之外,还需要TileViewResolver bean将逻辑视图解析为Tile定义。首先配置TilesConfigurer来解析定义。
@Bean
public TilesConfigurer tilesConfigurer() {
TilesConfigurer tiles = new TilesConfigurer();
// 指定tile定义的位置
tiles.setDefinitions(new String[] { "/WEB-INF/layout/tiles.xml" });
// 开启刷新
tiles.setCheckRefresh(true);
return tiles;
}
当配置TilesConfigurer的时候,最重要的属性就是definitions。这个属性接受一个String类型的数组,其中每个条目都指定一个Tile定义的XML文件。接下来配置TileViewResolver :
@Bean
public ViewResolver tilesViewResolver(){
return new TilesViewResolver();
}
也可使用XML配置。
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/layout/tiles.xml.xml</value>
<value>/WEB-INF/views/**/tiles.xml</value>
</list>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver" />
定义Tiles
Apache Tiles提供了一个文档类型定义(document type definition,DTD),用来在XML文件中指定Tile的定义。每个定义由元素组成,该元素又有一个或多个,如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<!-- 定义一个基础tile -->
<definition name="base" template="/WEB-INF/layout/page.jsp">
<put-attribute name="header" value="/WEB-INF/layout/header.jsp" />
<put-attribute name="footer" value="/WEB-INF/layout/footer.jsp" />
</definition>
<definition name="home" extends="base">
<put-attribute name="body" value="/WEB-INF/views/home.jsp" />
</definition>
<definition name="registerForm" extends="base">
<put-attribute name="body" value="/WEB-INF/views/registerForm.jsp" />
</definition>
<definition name="profile" extends="base">
<put-attribute name="body" value="/WEB-INF/views/profile.jsp" />
</definition>
<definition name="spittles" extends="base">
<put-attribute name="body" value="/WEB-INF/views/spittles.jsp" />
</definition>
<definition name="spittle" extends="base">
<put-attribute name="body" value="/WEB-INF/views/spittle.jsp" />
</definition>
</tiles-definitions>
每个元素定义了一个tile,代表着一个JSP模版。一个tile同时也可以代表其他在主模版中被嵌入的模版。对应base tile,它表示一个header JSP模版和footer JSP模版。如下例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="t"%>
<%@ page session="false"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spittr</title>
<link rel="stylesheet" type="text/css"
href="<s:url value="/resources/style.css" />">
</head>
<body>
<!-- 头部 -->
<div id="header">
<t:insertAttribute name="header" />
</div>
<!-- 正文 -->
<div id="content">
<t:insertAttribute name="body" />
</div>
<!-- 尾部 -->
<div id="footer">
<t:insertAttribute name="footer" />
</div>
</body>
</html>
其中的关键在于如何使用<t:insertAttribute>标签从Tile标签库插入到其他模版中。使用该标签来引入header、body、footer属性,最终的布局如下图所示:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8UAAAINCAYAAAAX/t0BAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAL8NSURBVHhe7J0JmB1VnbcZZxy3iOIyDiqKYgT3YRAVFwQVxEFBUUQWIyAIKBhACYuENWELWxBljUAAiUpEDUhAwhKUNUAiIAQFDCoOINsEPhQw5+v3pP+dk0p130ovSV/u++vnfWo7W9WtOnV+dU5Vr5CUUkoppZRSSqkOlaZYKaWUUkoppVTHSlOslFJKKaWUUqpjpSlWSimllFJKKdWx0hQrpZRSSimllOpYaYqVUkoppZRSSnWsNMVKKaWUUkoppTpWmmKllFJKKaWUUh0rTbFSSimllFJKqY6VplgppZRSSimlVMdKU6yUUkoppZRSqmOlKVZKKaWUUkop1bHSFCullFJKKaWU6lhpipVSSimllFJKdaw0xUoppZRSSimlOlaaYqWUUkoppZRSHStNsVJKKaWUUkqpjpWmWCmllFJKKaVUx0pTrJRSSimllFKqY6UpVkoppZRSSinVsdIUK6WUUkoppZTqWGmKlVJKKaWUUkp1rDTFSimllFJKKaU6VppipZRSSimllFIdK02xUkoppZRSSqmOlaZYKaWUUkoppVTHSlOslFJKKaWUUqpjpSlWSimllFJKKdWx0hQ30OOPP57529/+lv73f/83/eUvf0l/+tOf0p///OfMvHnz0t13353uueeedN9996U//OEP6fe//32699578zLhmb/zzjvT3Llz01133dXDHXfckf74xz/mcCz/9re/zWkRn/C/+93vMqwnDSB91hGG9MiXedIiDcrDOtIJSAvKZdKIska5KEuE7QvCE7fdYT+aUBe3v3C84/fvC8KVv2FvELbuN6pCenXlkcGj7vepUhfvuUzduViFa2wwz884zpE+y+QR87E91pE3dWbUpVGWqHOpW4lD/ciUcFx3t99+e4Z5wgz2NRZl7Yu6eMuCOLatGOxj0pS6Y1Wlad1JuLo8hpq6Mlepi1fHcN9XqNu/KnXxZNnDdU39yfnCtDeWR51IntFGpq6m3qbNDrSPgbY7bXO2sfzAAw+kRx99ND355JMZ1ZnSFDcQRhi4uLhpREMobiI0hoAKgAtyzpw5+YKksmB68803p9tuuy03rghD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Zs4bs0weYY7ZT5ar+y4iIs2hPqUujTZ7Ces0xaqUpriBNMUiIssf6lN6e7fZZpv0whe+MH3ta19LP//5z9NFF12ULr744mxcR40alV73utelD33oQ7knlvX/+Z//mUaMGJFe9rKXpZVWWim96EUvykOfL7zwwmyMeS+Y9F7+8pfnuEzf+MY3pm984xu5XsfQHnHEEdkEkw691CuuuGL693//9/SmN70pN6ow5Azrft/73pde+tKX5nwI8453vCMbbHqWjz766ByH/MmDsnI/wVCzb+RFbzPT8mvWIiKy9FCvaopVU2mKG0hTLCKy/ME8YmK/+tWvZhP7/Oc/P7PCCitkXvnKV6YXvOAF6cUvfnFaf/31cy/wt7/97dyrvP3226df/OIX2ThjdjGmmFiGTNNri5nl41xXXXVV2mOPPdLb3/72bJDp5T3llFPSRz7ykWyUx44dm00yRppeYkzxcccdl98xxuiut956uVFFDzb5YY6/+MUv5rQxx5ST4d18KIwPdPGOc5hhYD+5v8T9RERE+gdtcE2xaipNcQNpikVElj/UpwxR3nbbbbMp5mNbW221Vdp6661z7zHDqjGp9NBiijGqa6yxRvrXf/3XHOb000/PDSBMKuZ55513zsOX6U3G5J522mnpu9/9bvrYxz6We4TJAxN+4IEHpg984APZzPLFacw5cT796U+nt7zlLXn49M9+9rOcL+aaBhZp0buMIV977bXzF7FJ+1/+5V+yQb/66qvzsGnuG/RohyH2niEiMjhQn2qKVVNpihtIUywisvyh3qVnly9LM4SZHl/+LdMll1ySYR7DOXLkyLTuuuvmsAxlxojyQSyGK3/wgx9MG264Yd5Ofc57vhjYTTfdNH34wx/OH+h617velV796lenlVdeOX/tmp5p4mGCGb5NTzFmGUNOjzLml95k8lp99dWzIQfSXGuttdKXvvSl/K4xxpueYr6azf7EF6sxx7F/cc/w3iEiMjCoR6lXo24tYZ2mWJXSFDeQplhEZHgQH9piqDSNmKhjMZa818tw6f/6r/9KG220UR4KzZBn3inG2DLMmY9f7bfffnmI9A9+8IPcg8u/cCIMhpqPcH35y1/OvcLkgfnlK9P0ANODjCkmL74wTY8zJrg0xZjh+BAX5eODW5jh888/Px1zzDHp3/7t33KPcXzAi/tGuQ9xbynXi4jI0kMdSp0a9WoJ6zTFqpSmuIE0xSIiyx+GGPMvmRgKzbBk3gnGXPL+Lu/mMqyZr0vzcavPfvazucFDj/Db3va2/A4v7xjfcMMN6dRTT0177rlnHk7NB7dWXXXV9NrXvjZ/kRpjyjvGvC/8vOc9L3/w6tBDD809vqRzzjnn5PqfXml6ld/85jfn4dM//vGP8/DpLbbYIm8jHYZmY475AjXDrTHDfGiLRhjpEobyx/6FKYa4n4iISP+gDR51arVtzjpNsSqlKW4gTbGIyPCAD2V9/vOfzx/K4n8S8z5u9Lrefffd2RQz7JkPY1En02uLgd5ss81yTy0Gd7XVVkuvec1r8kez6D2md5eeYcwryxhihjkz7Jqead5jZig0H9IiLD3D9DQzzJq06CXGmNOzzDvMDOumocU9g3eTKdOUKVPy16dJlyllLj+sxTzToLrfIiKydNAGjzq12jZnnaZYldIUN5CmWERk+UN9ynDmo446Kg91pvFCo4YeVnqJGT79ve99Lw93ppHz+9//Pg9z3mGHHXKPMe8a8yEuDDP1OL3LDIemxxmD+/rXvz594hOfyB/gGj16dH53+eCDD849zAy1Ztj2G97whvTud787D7Hecsst87+F4v5A+eh55j1j8qH3mSHXlPOCCy7IJnjq1Km5HOTNvlBe4lF+TDHrqr3HIiLSP6hTNcWqqTTFDaQpFhFZ/lDvYhrpHebL0phV4MNXbGdIMsOj2QY0eFjPdv6XMV+O5t8g8T+DqZuJSxzCMdSZIdCEY4g2H9hiyDNT8iMs8+eee26+B9B7jOHGpLMdg4uZpSeb+8VZZ52VzTDbiUu5SJevTrNMnvQuEyfuFewf95Hy/iIiIv0j6tWoU0tYpylWpTTFDaQpFhFZ/lCfUvfSqxpQ72Iy2caU7REW08k8vciYaRpATAkTJhailzbML9uBZdZHTy5pYW4henMjblke8inNcqQVy8Qjn+gVZnvcQ4Bl0iSciIj0D+rRqM+ZL2GdpliV0hQ3kKZYRKR9aFoHx/ZoNJXGNOrzavhye8SLdJpQpleXZ5luGVZERJYO6tze6mnWaYpVKU1xA2mKRUTah6Z1cGyPRlNpTKM+r4Yvt0e8SKcpkV7kGT3WUKZb5i0iIksH9W1v9TTrNMWqlKa4gTTFIiLtTbVerlIXpymRRjS+yvtDNUwQ6wjLMGqGU0MMp4YyvoiILB1Rx0adXMI6TbEqpSluIE2xiEh7U62Xq9TFaUqkEY2v8v5QDVOujzhVUxy9xWV8ERFZOqKOjTq5hHWaYlVKU9xAmmIRkfamWi9XqYvTlEgjGl/l/aEapgphMcIYY+A+EtvK+CIisnREHRt1cgnrNMWqlKa4gTTFIiLSir7q/XJblbh/APeWalwREVl6qF81xaqpNMUNpCkWEZFWVOv+sv6v2xZUTXGsL9MWEZGlg3pUU6yaSlPcQJpiEZHlT7VuDerC9pe69HtjIHGDvtKobhMRkeZQj/Zlim+88UZNseqRpriBNMUiIsufat0a1IXtL3Xp98ZA4gZ9pVHdJiIizaEe7csU21OsSmmKGyhM8ejRo9O4ceMWM8VB1RTHRVh3IUL1whURkb6pq0uhLmx/qUu/NwYSN+grjeo2ERHpm7IOrWuLxzJt9htuuCFNnDgx7bfffunAAw9Mp59+ekZ1pjTFDVRnisuLDvoyxUEZvnoRi4iIiIhI/ynb2nXQHqe9zlf/r7/++h5TfMABB6TTTjstozpTmuIG0hSLiIiIiAxvyrZ2HbTHNcWqTpriBvrxj3+c4Z3iOlNcXmB9XZRNL1gREREREek/0WFF+zzmo6OKeUzx8ccfrylWWZriBqr2FJ977rm1F56mWERERERk+RPmt6Rqiu0pViFNcQNNmTIls9tuu6VDDjkknXPOOfmCKi86DPGcOXPycml84+ILqheniIiIiIgMHNra0QZnmbZ5SdkexxQfe+yxae+99077779/OvXUUzOqM6UpbqDzzjsvs+uuu6aDDz64V1M8e/bsxdbHtoALkHDlMA4RERERERkcYmRmdFj1Zor5+vTRRx+dxowZk/8t0ymnnJJRnSlNcQOFKW7SU1yu1xSLiIiIiCw7og3OfCtTfMwxx+SeYk2x0hQ3UPlO8fjx43v+T3FQGuCYL6m+S1zGFRERERGRwaGuDV62xSPcjTfe2POhLf5Pse8Ud7Y0xQ0UppivT2uKRURERESGJ9HWLtvgZVs8wmmKVSlNcQOdddZZmR122CEPn2YodVxoDL+IiysuwJJyW912EREREREZOLS1Yxh1XRuddfEqI8OnDz/88LTvvvtmU3z66adnVGdKU9xA5Ye26CnmS9RcXJjiuMjKp1B9cccdd9SuFxERERGRgVE1wmU7nXVhmOkp5uvT8S+Z/Pp0Z0tT3EAXXHBBZq+99spPlBg+fdNNN6VbbrmlZ9oEvk5dt15ERERERAYObfObb745w3LMA9uCa6+9Np188sn5I1uaYqUpbqB4p3iPPfbIT5P4Uh29xaybPHly/ho10zPPPDNPA5ZLYhh2xBERERERkcHj3HPPzZx99tm5zR3tbyi3MwqUnuKxY8fmkaDRfledKU1xA4Up5qKBQw89NE2YMCEddthh6YgjjkhHHXVUnj/ooIPy/zEOeD+BJ08B2wPeTRYRERERkcGDdjrQFi/b3sD6cePGZRNM+x0mTpyY3yW+8MILM6ozpSluoBhO8fWvfz19+ctfTl/4whfSxhtvnNZff/200UYbpU9/+tN5usEGG6T/+Z//6eFTn/pUXr/hhhtmiAOEFxERERGRwSXa29EOLynb4Z/5zGfSZz/72bTddtulnXfeucdMq86UpriBeN8Atthii/ThD384vfOd70wjR45Mq666alpttdXy/Jvf/Ob0pje9Kc8Hb3nLWzKEgbe+9a1p9dVXFxERERGRIaCuLR7QFi9ZY4010nvf+970gQ98IG2zzTYZ1ZnSFDfQpEmTMh/5yEfS61//+rTSSiulN77xjend7353ete73pXe9ra35YuKafXCrF54QTWciIiIiIgMDdW2OO12ePWrX51e9apXpY9+9KMZ1ZnSFDdQvJBPb+/LX/7y9LrXvS5tuumm+f+a8UXq3XbbLX3zm99Mo0ePzkOsqzAkA77xjW9kWLfLLruIiIiIiMggUm1r0waPabTF+TertN1Zz0hPjPG6666bUZ0pTXEDxdfsXvKSl6QXvehFuYf4uOOOS7NmzUrXX399uuKKK9JVV12V5/mfZyX8Y/CA8MB6woqIiIiIyOARbfDrrrsuw79eimnZLicsH9Zac801c0/x+9///ozqTGmKG+iMM87IvPKVr0wrrrhiesc73pFfxOf/nf36179O11xzTeY3v/nNYvOxXF6UIiIiIiIy+EQ7vEq0xWm3X3311XnK8s9//vP03//93+k1r3lNfk0SVGdKU9xAP/jBDzIMrXjZy16WTTGfeecfgnNhxYVYGmTmAWNcmuLyAhURERERkaElepFpt8+cOTNPS1O88sor+05xh0tT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEREREZH2RFOsWklT3ECaYhERERGR9kRTrFpJU9xAmmIRERERkfZEU6xaSVPcQJpiEZHhQdS3dduaQJ1cUhdGRESeW2iKVStpihtIUywiMjwYqCkGTbGISGehKVatpCluIE2xiMjypzSzA2EwjLWIiLQPmmLVSpriBtIUi4gsf6rmtr9YF4uIdBaaYtVKmuIG0hSLiCx/qua2v9SlLSIiz100xaqVNMUNpCkWERleVI1uf6lLW0REnltoilUraYobSFMsIjK8qJrb/lKXtoiIPLfQFKtW0hQ3kKZYRGT5UzW0QdTB5bq6+MHS1sVlmtW0W+UlIiLLH02xaiVNcQNpikVElj9hTktYH3VwdX1vRPi6bb1RpllNv0meIiKy/NAUq1bSFDeQplhEZPkT5rNK3fZYjmnUx9TDNIzKcK0gXNmgimXSinTK+l9E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KW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7oilWraQpbiBNsYiIiIhIe6IpVq2kKW4gTbGIiIiISHuiKVatpCluIE2xiIiIiEh7Em1xTbHqTZri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9bGd9cyTZuwPkEaUI8pS7ruIiPSPsg1erVs1xSqkKW4gTbGIyPKHupOeVerTMJhXXXVVGj16dFphhRXSpz/96dw7HD3FO+ywQ667Z82a1RPvjjvuSDNnzszccsstOV1MKj2/mGR6b6+55pp05ZVXpssvvzyvZztm97e//W06++yz01vf+tbciMIYs41h2oQjTdaRLvcFeqYpJz3RpMs60rjxxht7epYhjH51f0VEZOCUbXDmy22aYhXSFDeQplhEZPlDPRoGkp5fjCVGlCHTmOKpU6dmE/q3v/0tPfDAA7k3GDPMMnExutThX//619Nuu+2WDjvssDRt2rRslEmftDG9++23XzbahJswYULOizwx4GPGjEkveMEL0he+8IV0zjnn5DgY3tNOOy0P395rr71yTzLbKB/p/vjHP06nnnpqOuWUU3L+kydPTnPmzMmGGENd3h9i/yKuiIgMjLKOZb7cpilWIU1xA2mKRUSWPxhe6l0MIz2zrLv66qvTt771rR5THL26hHnsscdy/fz444/nXt8999wzhwv+5V/+JX3mM5/JZvfJJ59MP/rRj9J///d/5/WxnenPfvaz3AN83nnnpXXWWSf967/+a16PCWb49ve+9720+uqr96zHNH/wgx9Ml1xySc5/1KhR6WUve1neBoceemh+z5ltlJX9Au4NGPTyPWMRERkYZRuc+XKbpliFNMUNpCkWERkeYB4xvtS/9ARjLvfYY49sNjGer3jFK3p41atelXuDZ8+enbbbbrv0H//xH9kEM3yZd4Pp7X3Tm96UP8aFEX3DG96QPvCBD6STTz45N5Qw3KTx6le/Oh1//PHZiNPj++IXvzgdd9xx6de//nXuaebd5ec973m5J5p0v/Od7+T3mj/3uc/lXuRPfepT2WCTF/cRDHrcF+gZxgjTa4xBjmXvEyIig0PZBme+3KYpViFNcQNpikVElj/UndS3GOP4oBXDp6MH+C1veUv6yEc+kj7xiU+kddddN/f6MowZ4/z5z38+vfGNb8xm9sEHH8zvD2N0McHrr79+DvPyl788felLX0qXXXZZfh/4oYceysOsMcGHH354rsfZ9pKXvCT3SmOCaUittNJK+SNf5557bv4SNu8zjxgxIr3mNa/J7yd/7GMfy/OUgXeK2Q/yZz/YH0wwRj+WoW7/RURk6Snb4MyX2zTFKqQpbiBN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" alt="image">
其中,header和footer属性在tile定义文件中分别指明了,但是body属性呢?base tile的主要作用是作为一个基础模版用来作为其他tile定义扩展使用的。那么扩展了base的tile就继承了base的header和footer属性(也可以进行重写)。它们自己也设置了一个body属性用来引用一个JSP模版。
使用Thymeleaf
略(之后再补充)
Spring实战第六章学习笔记————渲染Web视图的更多相关文章
- Spring实战第五章学习笔记————构建Spring Web应用程序
Spring实战第五章学习笔记----构建Spring Web应用程序 Spring MVC基于模型-视图-控制器(Model-View-Controller)模式实现,它能够构建像Spring框架那 ...
- Spring实战第四章学习笔记————面向切面的Spring
Spring实战第四章学习笔记----面向切面的Spring 什么是面向切面的编程 我们把影响应用多处的功能描述为横切关注点.比如安全就是一个横切关注点,应用中许多方法都会涉及安全规则.而切面可以帮我 ...
- 《Linux命令行与shell脚本编程大全》 第十六章 学习笔记
第十六章:创建函数 基本的脚本函数 创建函数 1.用function关键字,后面跟函数名 function name { commands } 2.函数名后面跟空圆括号,标明正在定义一个函数 name ...
- Mudo C++网络库第六章学习笔记
muduo网络库简介 高级语言(Java, Python等)的Sockects库并没有对Sockects API提供更高层的封装, 直接用它编写程序很容易掉到陷阱中: 网络库的价值还在于能方便地处理并 ...
- Spring实战第九章学习笔记————保护Web应用
保护Web应用 在这一章我们将使用切面技术来探索保护应用程序的方式.不过我们不必自己开发这些切面----我们将使用Spring Security,一种基于Spring AOP和Servlet规范的Fi ...
- 4类Storage方案(AS开发实战第四章学习笔记)
4.1 共享参数SharedPreferences SharedPreferences按照key-value对的方式把数据保存在配置文件中,该配置文件符合XML规范,文件路径是/data/data/应 ...
- 菜单Menu(AS开发实战第四章学习笔记)
4.5 菜单Menu Android的菜单主要分两种,一种是选项菜单OptionMenu,通过按菜单键或点击事件触发,另一种是上下文菜单ContextMenu,通过长按事件触发.页面的布局文件放在re ...
- spring boot 尚桂谷学习笔记05 ---Web
------web 开发登录功能------ 修改login.html文件:注意加粗部分为 msg 字符串不为空时候 才进行显示 <!DOCTYPE html> <!-- saved ...
- spring boot 尚桂谷学习笔记04 ---Web开始
------web开发------ 1.创建spring boot 应用 选中我们需要的模块 2.spring boot 已经默认将这些场景配置好了 @EnableAutoConfiguration ...
随机推荐
- java反射 反射构造函数 报 wrong number of arguments 错误
package com; import java.lang.reflect.Constructor; public class Person { public Person() { } public ...
- Android学习笔记_38_图片的拖动、缩放功能和多点触摸
一.基础知识: 引用 理论上 Android可以处理 多达256 个手指的触摸,大概只有章鱼哥能享受这种技术带来的便利.就编程人员来说,编写多点触摸和单点触摸的方式几乎一模一样.其奥秘在于Motion ...
- 【转载】Atom 是一款各方面体验都很像 Sublime Text 的编辑器
转载:http://www.appinn.com/atom-editor/ Atom 是一款各方面体验都很像 Sublime Text 的编辑器,它由 Github 出品,目前免费. Atom 功能的 ...
- 用$(this)选择其下带有class的子元素
$(this).find('.son').removeClass("disn")
- Java虚拟机垃圾回收(三): 7种垃圾收集器(转载)
1.垃圾收集器概述 垃圾收集器是垃圾回收算法(标记-清除算法.复制算法.标记-整理算法.火车算法)的具体实现,不同商家.不同版本的JVM所提供的垃圾收集器可能会有很在差别,本文主要介绍HotSpot虚 ...
- 轻量ORM-SqlRepoEx 重大升级
.Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,支持MySQL.SQL Server数据库方言,使用强类型操作数据的轻量级ORM工具,在减少魔法 ...
- c#分析SQL语句
最近总结了c#一般的功能,然后自己在博文中写了很多东西.主要是在用途上面.能够解决一些问题.现在分各个组件和方向写完了.主要的内容写了demo,也写了自己的项目组件和模型. 最后一个SQL分析.其实在 ...
- [SDOI2008]仪仗队(欧拉筛裸题)
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如右图 ...
- Linux系统VPS主机SSH常用命令
putty查询log文当里的"test"关键字 /home/iotserver/WebServer3_log# grep "test" log.log.bak2 ...
- 编译安装GCC
下载GCC包 http://mirror.hust.edu.cn/gnu/gcc/ 解压 .tar.gzcd gcc-4.9.4./contrib/download_prerequisites #下载 ...