`
teamojiao
  • 浏览: 350295 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring MVC集成Tiles使用方法

阅读更多

首先,我们定义一个总体的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" %>

 

分享到:
评论
2 楼 超级无敌唐僧 2014-04-10  
求源码~~~~~~~~~~~~~~
1 楼 小手冰凉 2012-02-08  
请教您一个问题,我现在项目用的就是springmvc 框架,也用到了tiles模板,但是每当同步提交时,页面总是整体的刷新,请问这个应该怎么解决

相关推荐

    Spring3 mvc集成Tiles2

    Spring3 MVC 集成 Tiles2 是一个常见的Web开发任务,用于构建结构化的、模块化的网页布局。Tiles2 是一个视图层框架,它允许开发者将网页分解为多个组件(或称为“tiles”),每个组件负责一部分内容或样式,然后...

    spring mvc, tiles, freemarker集成

    标题中的“Spring MVC, Tiles, Freemarker集成”指的是在Java Web开发中,将Spring MVC作为控制器框架,Tiles作为页面布局工具,而Freemarker作为视图模板引擎进行整合使用的技术方案。这种集成可以帮助开发者构建...

    Spring mvc3 tiles

    **Spring MVC 3 与 Tiles 框架整合** 在Web开发中,Spring MVC和Tiles是两个非常重要的组件。Spring MVC作为一个强大的MVC框架,负责处理应用的业务逻辑和视图展示,而Tiles则是一个视图层框架,主要用于页面布局和...

    spring-webmvc-tiles2.rar

    在Spring MVC中,我们可以通过使用TilesViewResolver作为视图解析器来实现与Tiles的集成。 集成Spring Web MVC和Tiles2的步骤如下: 1. **添加依赖**:在项目中添加Tiles2和Spring Web MVC的依赖库,通常是在pom....

    spring MVC .docx

    11. **Tiles or Layouts**: 为了实现页面布局,Spring MVC可以与其他框架集成,如Tiles,允许创建可重用的页面片段。 12. **RESTful**: Spring MVC支持RESTful Web服务,通过HTTP动词(GET、POST、PUT、DELETE等)...

    springmvc 集成 tiles2实现页面模板局部刷新

    在本文中,我们将深入探讨如何在Spring MVC框架中集成Tiles2来实现页面模板的局部刷新,同时关注浏览器的高度自适应性。Tiles2是一个强大的视图框架,它允许开发者创建可重用的页面组件,组合成复杂的布局,这在构建...

    使用sitemesh替换tiles2,spring mvc+spring web flow+sitemsh

    标题中的“使用sitemesh替换tiles2,spring mvc+spring web flow+sitemsh”指出了一种在Spring MVC和Spring Web Flow项目中用Sitemesh替代Tiles2作为页面布局工具的技术实践。Sitemesh和Tiles2都是用于创建可重用的...

    Spring-MVC-3.0.rar_Java spring mvc_spring mvc_spring ppt

    6. **Tiles view resolver集成**:支持Tiles视图技术,方便页面布局。 7. **New tags in JSP tags library**:提供了更多的JSP标签库,简化视图层的开发。 **实战指南PPT内容** 这份PPT很可能涵盖了Spring MVC 3.0...

    Spring mvc整合tiles框架的简单入门教程(maven)

    接下来,我们来看看如何在Spring MVC项目中集成Tiles框架。这通常涉及到以下步骤: 1. 添加依赖:在Maven的pom.xml文件中,我们需要添加Tiles相关的依赖库,包括`tiles-api`、`tiles-core`、`tiles-jsp`等。示例...

    Spring MVC3。 最近研究

    这部分将教你如何在Spring MVC中集成Tiles插件,实现动态和灵活的页面布局。 5. **Spring 3 MVC的国际化与本地化教程**:在开发多语言应用时,这部分将演示如何在Spring MVC中设置和使用国际化资源,以适应不同地区...

    spring3.0 mvc中文实例教程

    4. **Tiles支持与Eclipse插件教程**:介绍使用Tiles布局系统和Eclipse插件进行开发的方法。 5. **国际化与本地化**:教授如何在Spring MVC中实现应用的多语言支持。 6. **Spring主题**:探讨Spring MVC中如何定制和...

    spring mvc 实例

    学习Spring MVC通常从创建“Hello World”应用程序开始,接着可以逐步深入,如处理表单数据、使用Tiles布局、实现国际化和本地化、结合Hibernate进行数据访问等。每个部分都提供了逐步教程,帮助开发者掌握Spring ...

    spring3.0 MVC中文教程

    4. **第4部分:Spring 3 MVC的Tiles支持与Eclipse中的插件教程** - Tiles框架是一种用于管理页面布局的强大工具,本节介绍如何将其与Spring MVC结合使用。 5. **第5部分:Spring 3 MVC的国际化与本地化教程** - 讨论...

    zo-spring-boot:从零到一 —— 将一些有趣的技术方案与 Spring Boot 集成(如 Shiro、Spring Data JPA、Spring MVC、Tiles、Thymeleaf、Bootstrap 等)

    Thymeleaf (Done)Layout:Tiles3 integrate freemarker[原来打算使用thymeleaf集成tiles3的,不过目前thymeleaf只支持tiles2,后面会支持tiles3] (TODO)##故事(场景)以完成一个微型的电商系统为初期目标会员管理产品...

    Spring MVC 框架学习总结

    **Spring MVC 框架学习总结** Spring MVC 是 Spring 框架的重要组成部分,它是一个用于构建 Web 应用程序的轻量级、模型-视图-控制器(MVC)框架。Spring MVC 提供了优雅的编程模型和高度模块化的架构,使得开发者...

    Spring MVC 配置

    6. **易于与其他View框架集成**:Spring MVC可以无缝地与各种视图框架集成,如Tiles和Velocity,提供更丰富的表现层选项。 7. **依赖注入(DI)**:Spring MVC基于Spring框架,可以利用Spring的依赖注入特性,使得...

    springmvc集成 tiles2实现页面模板局部刷新

    在本文中,我们将深入探讨如何将Spring MVC框架与Tiles2框架集成,以便实现在Web应用程序中的页面模板和局部刷新功能,同时确保浏览器自适应高度。Tiles2是一个强大的视图层框架,它允许开发者创建可重用的页面组件...

Global site tag (gtag.js) - Google Analytics