`

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 "   %>

分享到:
评论

相关推荐

    spring框架的MVC

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

    spring mvc 框架示例

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

    spring mvc 0604

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

    spring技术

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

    SpringMVC入门实例及详细讲解

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

    SpringMVC教程

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

    springMVC入门教程

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

    spring4.3.9相关jar包

    spring-web.jar(必须) :这个jar 文件包含Web 应用开发时,用到Spring 框架时所需的核心类,包括自动载入Web Application Context 特性的类、Struts 与JSF 集成类、文件上传的支持类、Filter 类和大量工具辅助类。...

    SpringMVC (hello)源码包

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

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

    因此,就算你只是为了远程访问(例如,暴露Hessian或者 HTTP调用服务)而使用DispatcherServlet,你也得将'spring-webmvc.jar'(或者 'spring-webmvc-portlet/struts.jar')放到'spring.jar'旁边去。 Spring 2.0的 '...

    springmvcdemo

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

    spring4.3.2参考文档(英文)

    所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC ...

    spring jar 包详解

    (11) spring-web.jar 这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、 Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) ...

    最新最全的spring开发包

     这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) spring-webmvc.jar 这个...

    spring4.1核心包

    包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 18. spring-webmvc-4.1.1.RELEASE.jar 包含...

    Struts2 in action中文版

    9.1 为什么在Struts 2中使用Spring 196 9.1.1 依赖注入能做些什么 197 9.1.2 Spring如何管理对象和注入依赖 199 9.1.3 使用接口隐藏实现 200 9.2 将Spring添加到Struts 2 202 9.2.1 让Spring管理动作、拦截器和结果...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

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

    2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言支持 2.6.2. JMX 2.6 .3. 任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 ...

    Spring 2.0 开发参考手册

    2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言支持 2.6.2. JMX 2.6.3. 任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring ...

    Spring API

    2.5.1. Spring MVC合理的默认值 2.5.2. Portlet 框架 2.5.3. 基于Annotation的控制器 2.5.4. Spring MVC的表单标签库 2.5.5. 对Tiles 2 支持 2.5.6. 对JSF 1.2支持 2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态...

Global site tag (gtag.js) - Google Analytics