首先,我们定义一个总体的tiles视图 /tiles/mainTemplate.jsp
首先使用:<tiles:getAsString name="title"/>打印tiles配置文件中定义的字符串属性title
然后是分别加载header,content,footer三个jsp页面,共同组成mainTemplate.jsp
<%@taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles"%>
<html>
<head>
<title><tiles:getAsString name="title"/></title>
</head>
<body>
the title is:<tiles:getAsString name="title"/><br>
<tiles:insert name="header"/><br>
<tiles:insert name="content"/><br>
<tiles:insert name="footer"/><br>
</body>
</html>
header.content.footer页面如下:
<html>
<head>
</head>
<body>
this is from header
</body>
</html>
<html>
<head>
</head>
<body>
this is from content
</body>
</html>
<html>
<head>
</head>
<body>
this is from footer</body>
</html>
Spring MVC 控制类:
package Action;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.Student;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
public class TilesHomeController extends AbstractCommandController {
protected ModelAndView handle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, BindException arg3) throws Exception {
return null;
}
protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
return new ModelAndView("courseDetail","","");
}
}
当我们运行上面这个控制器时候,系统会自动去寻找courseDetail.jsp这个文件,但我们还没有定义这个文件,所以,我们要这样写tiles-def.xml
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<definition name="template" page="/tiles/mainTemplate.jsp">
<put name="title" value="default title"/>
<put name="header" value="="/tiles/header.jsp"/>
<put name="content" value="/tiles/content.jsp"/>
<put name="footer" value="/tiles/footer.jsp"/>
</definition>
<!--以courseDetail命名的配置,覆盖了模板中的title和content对应的页面-->
<definition name="courseDetail" extends="template">
<put name="title" value="courseDetail title"/>
<put name="content" value="/tiles/courseContent.jsp"/>
</definition>
</tiles-definitions>
/title/courseContent.jsp
<%@taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
<html>
<head></head>
<body>
this is courseContent
</body>
</html>
spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>
<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/tiles.mvc">TilesController</prop>
</props>
</property>
</bean>
<bean id="TilesController" class="Action.TilesHomeController">
</bean>
<!-- tiles页面解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.tiles.TilesView</value>
</property>
</bean>
<!-- tiles配置器-->
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/train-def.xml</value>
</list>
</property>
</bean>
</beans>
运行/title.mvc (mvc是我自定义的扩展名)我们可以看到如下结果:
courseDetail title
this is from header
this is courseDetail
this is from footer
如果我们需要在每一个页面的header部分显示一些我们从数据库里读取的数值,我们可以在不同的控制器中加入访问数据库的代码,但这样显得很啰唆,因为header部门在每个页面都是公用的,也就是说不同的页面只有content部分不同,这样,我们就会有很多冗余代码,为了解决这个问题,我们可以使用spring为我们提供的ComponentControllerSupport
package Action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.Student;
import org.apache.struts.tiles.ComponentContext;
import org.springframework.web.servlet.view.tiles.ComponentControllerSupport;
public class HeaderTilesController extends ComponentControllerSupport {
protected void doPerform(ComponentContext context, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Student stu=new Student();
stu.setName("gaoxiang");
stu.setSex("male");
//tiles context中存放简单数据
context.putAttribute("name", stu.getName());
context.putAttribute("sex", stu.getSex());
//tiles context中存放对象
context.putAttribute("student", stu);
//request中存放数据
request.setAttribute("requestname", stu.getName()+"-request");
request.setAttribute("requestsex", stu.getSex()+"-request");
}
}
改写train-def.xml
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<definition name="template" page="/tiles/mainTemplate.jsp">
<put name="title" value="default title"/>
<put name="header" value=".header"/>
<put name="content" value="/tiles/content.jsp"/>
<put name="footer" value="/tiles/footer.jsp"/>
</definition>
<definition name="courseDetail" extends="template">
<put name="title" value="courseDetail title"/>
<put name="content" value="/tiles/courseContent.jsp"/>
</definition>
<definition name=".header" page="/tiles/header.jsp" controllerClass="Action.HeaderTilesController">
</definition>
</tiles-definitions>
改header.jsp
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
分享到:
相关推荐
Spring3 MVC 集成 Tiles2 是一个常见的Web开发任务,用于构建结构化的、模块化的网页布局。Tiles2 是一个视图层框架,它允许开发者将网页分解为多个组件(或称为“tiles”),每个组件负责一部分内容或样式,然后...
标题中的“Spring MVC, Tiles, Freemarker集成”指的是在Java Web开发中,将Spring MVC作为控制器框架,Tiles作为页面布局工具,而Freemarker作为视图模板引擎进行整合使用的技术方案。这种集成可以帮助开发者构建...
**Spring MVC 3 与 Tiles 框架整合** 在Web开发中,Spring MVC和Tiles是两个非常重要的组件。Spring MVC作为一个强大的MVC框架,负责处理应用的业务逻辑和视图展示,而Tiles则是一个视图层框架,主要用于页面布局和...
在Spring MVC中,我们可以通过使用TilesViewResolver作为视图解析器来实现与Tiles的集成。 集成Spring Web MVC和Tiles2的步骤如下: 1. **添加依赖**:在项目中添加Tiles2和Spring Web MVC的依赖库,通常是在pom....
11. **Tiles or Layouts**: 为了实现页面布局,Spring MVC可以与其他框架集成,如Tiles,允许创建可重用的页面片段。 12. **RESTful**: Spring MVC支持RESTful Web服务,通过HTTP动词(GET、POST、PUT、DELETE等)...
在本文中,我们将深入探讨如何在Spring MVC框架中集成Tiles2来实现页面模板的局部刷新,同时关注浏览器的高度自适应性。Tiles2是一个强大的视图框架,它允许开发者创建可重用的页面组件,组合成复杂的布局,这在构建...
标题中的“使用sitemesh替换tiles2,spring mvc+spring web flow+sitemsh”指出了一种在Spring MVC和Spring Web Flow项目中用Sitemesh替代Tiles2作为页面布局工具的技术实践。Sitemesh和Tiles2都是用于创建可重用的...
6. **Tiles view resolver集成**:支持Tiles视图技术,方便页面布局。 7. **New tags in JSP tags library**:提供了更多的JSP标签库,简化视图层的开发。 **实战指南PPT内容** 这份PPT很可能涵盖了Spring MVC 3.0...
接下来,我们来看看如何在Spring MVC项目中集成Tiles框架。这通常涉及到以下步骤: 1. 添加依赖:在Maven的pom.xml文件中,我们需要添加Tiles相关的依赖库,包括`tiles-api`、`tiles-core`、`tiles-jsp`等。示例...
这部分将教你如何在Spring MVC中集成Tiles插件,实现动态和灵活的页面布局。 5. **Spring 3 MVC的国际化与本地化教程**:在开发多语言应用时,这部分将演示如何在Spring MVC中设置和使用国际化资源,以适应不同地区...
4. **Tiles支持与Eclipse插件教程**:介绍使用Tiles布局系统和Eclipse插件进行开发的方法。 5. **国际化与本地化**:教授如何在Spring MVC中实现应用的多语言支持。 6. **Spring主题**:探讨Spring MVC中如何定制和...
学习Spring MVC通常从创建“Hello World”应用程序开始,接着可以逐步深入,如处理表单数据、使用Tiles布局、实现国际化和本地化、结合Hibernate进行数据访问等。每个部分都提供了逐步教程,帮助开发者掌握Spring ...
4. **第4部分:Spring 3 MVC的Tiles支持与Eclipse中的插件教程** - Tiles框架是一种用于管理页面布局的强大工具,本节介绍如何将其与Spring MVC结合使用。 5. **第5部分:Spring 3 MVC的国际化与本地化教程** - 讨论...
Thymeleaf (Done)Layout:Tiles3 integrate freemarker[原来打算使用thymeleaf集成tiles3的,不过目前thymeleaf只支持tiles2,后面会支持tiles3] (TODO)##故事(场景)以完成一个微型的电商系统为初期目标会员管理产品...
**Spring MVC 框架学习总结** Spring MVC 是 Spring 框架的重要组成部分,它是一个用于构建 Web 应用程序的轻量级、模型-视图-控制器(MVC)框架。Spring MVC 提供了优雅的编程模型和高度模块化的架构,使得开发者...
6. **易于与其他View框架集成**:Spring MVC可以无缝地与各种视图框架集成,如Tiles和Velocity,提供更丰富的表现层选项。 7. **依赖注入(DI)**:Spring MVC基于Spring框架,可以利用Spring的依赖注入特性,使得...
在本文中,我们将深入探讨如何将Spring MVC框架与Tiles2框架集成,以便实现在Web应用程序中的页面模板和局部刷新功能,同时确保浏览器自适应高度。Tiles2是一个强大的视图层框架,它允许开发者创建可重用的页面组件...