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

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