`
teamojiao
  • 浏览: 344713 次
  • 性别: 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

    NULL 博文链接:https://lshoo.iteye.com/blog/974781

    spring mvc, tiles, freemarker集成

    NULL 博文链接:https://haiker.iteye.com/blog/969715

    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)##故事(场景)以完成一个微型的电商系统为初期目标会员管理产品...

    spring3.0 MVC中文教程

    spring3.0 MVC中文教程 翻译viralpatel.net网站文章,从Hello到MVC、国际化、Tiles框架集成、主题皮肤使用、hibernate集成使用、 在Spring3 MVC和Hibernate保存/ Retreving BLOB对象等教程使用,希望多大家有帮助。...

    springmvc-data-mongodb-tiles-thymeleaf-starter:与 DataMongoDB、Tiles 和 Thymeleaf 集成的 Spring MVC 入门设置

    springmvc-data-mongodb-tiles-thymeleaf-starter 与 DataMongoDB、Tiles 和 Thymeleaf 集成的 Spring MVC 的入门设置。 里面也有 BootstrapJS 和 AngularJS。 这是我在 Github 上克隆的一些项目的副本,但由于个人...

    spring4.3.9相关jar包

    Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 外部依赖Commons Logging, (Log4J)。 spring-beans.jar(必须):这 个jar 文件是所有应用都要...

    spring jar 包详解

    可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。...

    spring4.3.2参考文档(英文)

    通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。 Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    注意:经常被使用的的Spring的DispatcherServlet也是Spring Web MVC框架中的一部分。因此,就算你只是为了远程访问(例如,暴露Hessian或者 HTTP调用服务)而使用DispatcherServlet,你也得将'spring-webmvc.jar'...

    Spring中文帮助文档

    14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    14.3.2. 如何集成Tiles 14.3.2.1. InternalResourceViewResolver 14.3.2.2. ResourceBundleViewResolver 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置...

    Spring 2.0 开发参考手册

    14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 ...

    spring4.1核心包

    15. spring-test-4.1.1.RELEASE.jar 支持Spring组建JUnit和TestNG的单元测试和集成测试。 16. spring-tx-4.1.1.RELEASE.jar 17. spring-web-4.1.1.RELEASE.jar 包含Web应用开发时,用到Spring框架时所需的核心类,...

    最新最全的spring开发包

    可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。...

    Spring API

    14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 ...

    spring chm文档

    14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 ...

    Spring面试题

    通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。 ☆ Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。...

    springmvc和mybatis集成全部jar包(全)

    springmvc4.3.3和mybatis3.4.1集成最新全部jar包,还包含了其他一些常用的jar包,很全,已经在项目中验证过。 lib/antlr-2.7.2.jar lib/aopalliance-1.0.jar lib/asm-3.3.1.jar lib/aspectjweaver-1.6.5.jar ...

    Spring Framework 5.3.6

    Spring Framework是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。...程序开发员们可以使用Spring的JDBC抽象层重新设计那些复杂的框架结构。

    java web 开发详解

    Java 的 Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的...

Global site tag (gtag.js) - Google Analytics