`

Spring MVC集成Struts Tiles使用方法

阅读更多

Spring MVC集成Struts 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 "   %>

分享到:
评论

相关推荐

    Spring3 mvc集成Tiles2

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

    spring-webmvc-struts.jar

    `spring-webmvc-struts.jar`是Spring框架为了与Struts框架集成而设计的一个模块,它提供了对Struts应用的Spring支持,使得开发者可以在Struts应用中利用Spring的特性,如依赖注入(DI)、面向切面编程(AOP)等。...

    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 MVC + Tiles + FreeMarker 的整合

    7. **编写Controller**:在Spring MVC的控制器类中,定义处理请求的方法,并返回Tiles的定义名,例如: ```java @RequestMapping("/index") public String index() { return "baseLayout"; } ``` 8. **运行...

    Struts和Spring两种MVC框架究竟有什么不同呢?

    Struts和Spring是Java Web开发中两种非常流行的MVC(Model-View-Controller)框架,它们都致力于解耦业务逻辑和展示层,提高代码的可维护性和可测试性。然而,两者在设计理念、功能特性以及实现方式上存在显著差异。...

    Spring3.0MVC 实用教程(高淇)

    Spring MVC 提供了一种可插拔的架构,允许开发者选择使用内置的 Spring Web 框架,或者与其他 Web 框架如 Struts 结合使用。通过策略接口,Spring MVC 具有高度可配置性,支持多种视图技术,如 JSP、Velocity、Tiles...

    Spring MVC3。 最近研究

    Spring能够轻松地与其他流行Web框架如Struts、WebWork、JavaServer Faces和Tapestry集成,这意味着你可以指示Spring使用其中的任何一种Web框架。更重要的是,Spring并不紧密依赖Servlets或JSP来向客户端呈现视图。它...

    spring框架的MVC

    使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、...

    使用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 框架示例

    使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、...

    Spring集成Struts与Hibernate入门详解

    Spring集成Struts与Hibernate入门详解 Spring框架是Java平台上一个开源的轻量级框架,它提供了许多功能强大且灵活的模块,以帮助开发者快速构建企业级应用程序。Struts是Apache软件基金会的一个开源项目,提供了一...

    spring3.0 mvc中文实例教程

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

    struts2 tiles 模板搭建源码可运行

    6. **扩展性**:Tiles是基于Servlet API的,因此它可以与其他Web框架(如Spring MVC)配合使用,也可以与各种模板引擎(如FreeMarker或JSP)结合。 在这个“struts2 tiles 模板搭建源码可运行”的项目中,我们可以...

    spring3.0 MVC中文教程

    3. **与其他框架的集成**:Spring MVC可以轻松地与其他流行的Web框架(如Struts、WebWork、Java Server Faces和Tapestry)集成。 4. **视图技术的多样性**:除了传统的JSP,Spring MVC还支持Freemarker、Excel、PDF...

    struts tiles实现源码

    Struts Tiles是一个强大的MVC框架Struts中的一个扩展,它提供了布局和组合页面的强大功能。Tiles框架使得开发者能够创建可重用的页面片段,并通过一个中心配置文件将这些片段组合成完整的网页。在这个"struts tiles ...

    spring mvc

    Spring MVC并不关心视图层的具体实现,它可以与多种视图技术如JSP、Velocity、Tiles等集成,这给予了开发者极大的灵活性。 Spring MVC的优点包括: 1. 高度可配置:Spring MVC的可插拔架构允许开发者选择内置的...

    Spring MVC配置文档及原理介绍

    在运行性能方面,JSP+Servlet组合的性能通常最高,其次是Struts 1,接着是Spring MVC,而Struts 2的性能相对较低,特别是当使用OGNL和值栈时。然而,在开发效率上,这些框架的表现却与性能表现相反,Spring MVC和...

    spring3、struts2、mybatis结合的一个简单web实现

    Spring提供了全面的结构化和依赖注入功能,Struts2则是一个强大的MVC(Model-View-Controller)框架,而MyBatis则是一个优秀的持久层框架,实现了SQL与Java代码的解耦。当这三者结合使用时,可以构建出高效、可维护...

Global site tag (gtag.js) - Google Analytics