tiles3 基础使用及与spring mvc集成
2015-12-11 00:00
429 查看
1.简介
Tiles 是一种JSP布局框架,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,
然后用来组合成一个最终表示用页面用的,这样的话,增加代码重用率的同时,便于对页面的
各个机能的变更及维护。
2.tiles与spring mvc的集成
web.xml
<!--spring mvc的配置-->
<servlet>
<description>Spring MVC</description>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/*配置文件路径*/</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.html/*过滤路径*/</url-pattern>
</servlet-mapping>
mvc.xml
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<!--如果使用了其他的视图解析 该属性用于定义解析顺序-->
<property name="order" value="1" />
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView">
</property>
</bean>
<!--加载tiles配置文件 -->
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<!--配置文件路径-->
<value>classpath:tiles/tiles.xml</value>
</list>
</property>
<!--根据tiles中的definiton 名称定义bean -->
<property name="preparerFactoryClass"
value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory"/>
</bean>
</bean>
tiles.xml
<tiles-definitions>
<!--定义一个公共的布局模板模板-->
<definition name="layout" template="/layout.jsp">
<put-attribute name="header" value="/header.jsp" />
<put-attribute name="body" value="/body.jsp" />
<put-attribute name="footer" value="/footer.jsp" />
</definition>
<!-- 相同布局,展示body不同-->
<definition name="tiles.layout.extend" extends="layout">
<put-attribute name="body" value="/extend/body.jsp" />
</definition>
<!--使用级联-->
<definition name="tiles.layout.extend.body" template="/body.jsp">
<put-attribute name="model" value="/model.jsp" />
</definition>
<definition name="tiles.layout.extend" template="/body.jsp">
<put-attribute name="model" value="tiles.layout.extend.body" />
</definition>
<!--级联的另一种写法-->
<definition name="tiles.layout.extend" template="/body.jsp">
<put-attribute name="model">
<definition template="/model.jsp">
</definition>
</put-attribute>
</definition>
<!--参数化配置 -->
<definition name="tiles.layout.*.*" extends="layout.{1}">
<put-attribute name="body" value="/jsp/{1}/{2}.jsp"/>
</definition>
<!--EL表达式-->
<definition name="tiles.layout" extends="${layout}">
<put-attribute name="body" value="/jsp/${model}.jsp"/>
</definition>
</tiles-definitions>
layout.jsp
<!--可以根据实际业务需求 定义布局-->
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<tiles:insertAttribute name="header" />
<tiles:insertAttribute name="body"/>
<tiles:insertAttribute name="footer" />
TilesController.java
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TilesController {
@RequestMapping("tiles")
public String checkStu(){
/*返回值是 definition标签的name属性*/
return "tiles.layout.extend";
}
}
3.个人使用总结
tiles 能够大量的减少重复代码的书写,并且保证网站布局风格的一致性,特别是在大量页面需要添加或修改相同的东西的情况下,能够让我们很快的完成工作。使用范围主要在拥有大量相同布局或相似布局的网站。
Tiles 是一种JSP布局框架,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,
然后用来组合成一个最终表示用页面用的,这样的话,增加代码重用率的同时,便于对页面的
各个机能的变更及维护。
2.tiles与spring mvc的集成
web.xml
<!--spring mvc的配置-->
<servlet>
<description>Spring MVC</description>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/*配置文件路径*/</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.html/*过滤路径*/</url-pattern>
</servlet-mapping>
mvc.xml
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<!--如果使用了其他的视图解析 该属性用于定义解析顺序-->
<property name="order" value="1" />
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView">
</property>
</bean>
<!--加载tiles配置文件 -->
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<!--配置文件路径-->
<value>classpath:tiles/tiles.xml</value>
</list>
</property>
<!--根据tiles中的definiton 名称定义bean -->
<property name="preparerFactoryClass"
value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory"/>
</bean>
</bean>
tiles.xml
<tiles-definitions>
<!--定义一个公共的布局模板模板-->
<definition name="layout" template="/layout.jsp">
<put-attribute name="header" value="/header.jsp" />
<put-attribute name="body" value="/body.jsp" />
<put-attribute name="footer" value="/footer.jsp" />
</definition>
<!-- 相同布局,展示body不同-->
<definition name="tiles.layout.extend" extends="layout">
<put-attribute name="body" value="/extend/body.jsp" />
</definition>
<!--使用级联-->
<definition name="tiles.layout.extend.body" template="/body.jsp">
<put-attribute name="model" value="/model.jsp" />
</definition>
<definition name="tiles.layout.extend" template="/body.jsp">
<put-attribute name="model" value="tiles.layout.extend.body" />
</definition>
<!--级联的另一种写法-->
<definition name="tiles.layout.extend" template="/body.jsp">
<put-attribute name="model">
<definition template="/model.jsp">
</definition>
</put-attribute>
</definition>
<!--参数化配置 -->
<definition name="tiles.layout.*.*" extends="layout.{1}">
<put-attribute name="body" value="/jsp/{1}/{2}.jsp"/>
</definition>
<!--EL表达式-->
<definition name="tiles.layout" extends="${layout}">
<put-attribute name="body" value="/jsp/${model}.jsp"/>
</definition>
</tiles-definitions>
layout.jsp
<!--可以根据实际业务需求 定义布局-->
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<tiles:insertAttribute name="header" />
<tiles:insertAttribute name="body"/>
<tiles:insertAttribute name="footer" />
TilesController.java
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TilesController {
@RequestMapping("tiles")
public String checkStu(){
/*返回值是 definition标签的name属性*/
return "tiles.layout.extend";
}
}
3.个人使用总结
tiles 能够大量的减少重复代码的书写,并且保证网站布局风格的一致性,特别是在大量页面需要添加或修改相同的东西的情况下,能够让我们很快的完成工作。使用范围主要在拥有大量相同布局或相似布局的网站。
相关文章推荐
- 让Seasar支持TilesPlugin
- Struts2 整合Tiles出现的I/O Error Reading问题
- TilesPlugin : Specified RequestProcessor not compatible with TilesRequestProcessor
- File "/tags/struts-tiles" not found或java.lang.ClassNotFoundException: org.apache.struts.taglib.tile
- 在struts2中使用tiles框架
- Spring MVC集成Tiles框架
- struts2.0 整合tiles 配置
- Spring MVC 下加入Tiles2
- jQuery选择器
- Struts的Tiles框架
- Apache Tiles 学习(一)、复合视图模式
- Apache Tiles 学习(二)、Java Web应用中使用Apache Tiles
- Apache Tiles 学习(三)、Apache Tiles的基本使用
- Apache Tiles 学习(四)、Tiles实战
- 雄踞AppStore榜首的游戏<别踩到白块儿>源代码分析和下载(第一篇)----它怎么也能爆红?
- Struts tiles入门(最最简单的例子)
- Struts1.x系列教程(22):Tiles框架简介
- Struts1.x系列教程(23):使用Tiles模板进行布局
- Apache Tiles 学习(四)、Tiles实战
- Apache Tiles 学习(三)、Apache Tiles的基本使用