`
reverocean
  • 浏览: 195408 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Spring mvc3 tiles

 
阅读更多

1.创建项目

eclipse里选择新建Maven Project,然后选择mave-archetype-webappArchetype,这样就会创建一个Eclipse WTP能识别的Web项目,能够Run  on server

2.修改POM

                为项目加入相关的dependency,包括Springtiles等。

2.1添加Spring的依赖

            <dependency>

                  <groupId>org.springframework</groupId>

                  <artifactId>spring-webmvc</artifactId>

                  <version>${org.springframework.version}</version>

                  <scope>compile</scope>

            </dependency>  

                这里只添加spring-webmvc的依赖,Maven会根据spring-webmvc包里的pom找到他需要的其他相关jar包的依赖,包括spring-core.jarspring-bean.jar等。

2.2添加Tiles的依赖

                Apache Tiles的官方网站上的Downloadhttp://tiles.apache.org/download.html)页面里有如何在Maven里加Tiles的依赖。

<!--[if !supportLists]-->·         <!--[endif]--> The complete Tiles dependency with all supported technologies

                            <dependency>

                        <groupId>org.apache.tiles</groupId>

                        <artifactId>tiles-extras</artifactId>

                        <version>2.2.2</version>

      </dependency>

<!--[if !supportLists]-->·         <!--[endif]-->The basic Tiles dependency with only servlet support

                  <dependency>

                        <groupId>org.apache.tiles</groupId>

                        <artifactId>tiles-servlet</artifactId>

                        <version>2.2.2</version>

      </dependency>

<!--[if !supportLists]-->·         <!--[endif]-->Tiles JSP support

                  <dependency>

                        <groupId>org.apache.tiles</groupId>

                        <artifactId>tiles-jsp</artifactId>

                        <version>2.2.2</version>

      </dependency>

 

2.3添加jstl依赖

                                <dependency>

                  <groupId>javax.servlet</groupId>

                  <artifactId>jstl</artifactId>

                  <version>1.2</version>

                  <scope>runtime</scope>

            </dependency>

2.4添加Servlet相关的Provided依赖

            <dependency>

                  <groupId>javax.servlet</groupId>

                  <artifactId>servlet-api</artifactId>

                  <version>2.5</version>

                  <type>jar</type>

                  <scope>provided</scope>

            </dependency>

            <dependency>

                  <groupId>javax.servlet.jsp</groupId>

                  <artifactId>jsp-api</artifactId>

                  <version>2.1</version>

                  <type>jar</type>

                  <scope>provided</scope>

            </dependency>

3.修改web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 

      <display-name>Archetype Created Web Application</display-name>

      <servlet>

            <servlet-name>tiles</servlet-name>

            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

            <load-on-startup>1</load-on-startup>

      </servlet>

 

      <servlet-mapping>

            <servlet-name>tiles</servlet-name>

            <url-pattern>/</url-pattern>

      </servlet-mapping>

</web-app>

这里servlet-name的值是tiles,并且没有给DispatcherServlet配置contextConfigLocation(可以通过这个值指定spring的配置文件),Spring MVC会从WEB-INF里去找tiles-servlet.xmlspring的配置文件。

4.tiles-servlet.xml

                相关注视都在文档里

                <?xml version="1.0" encoding="utf-8"?>

<beans

      xmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xmlns:aop="http://www.springframework.org/schema/aop"

      xmlns:task="http://www.springframework.org/schema/task"

      xmlns:context="http://www.springframework.org/schema/context"

      xmlns:mvc="http://www.springframework.org/schema/mvc"

      xmlns:tx="http://www.springframework.org/schema/tx"

      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

http://www.springframework.org/schema/task

http://www.springframework.org/schema/task/spring-task-3.0.xsd "

      default-autowire="byName"

      default-lazy-init="false">

      <!-- 当用户访问在webapp文件夹下的静态资源的时候,通过下面的配置直接访问,而不去找Controller -->

      <mvc:resources

            mapping="/resources/**"

            location="/resources/" />

      <!-- Spring MVC添加annotation-driven,该配置包括了对JSR-303 Validationmessage conversionfiled

            formatting -->

      <mvc:annotation-driven />

      <!-- 配置Spring扫描Controller存放的包路径 -->

      <context:component-scan

            base-package="com.rever.tiles.mvc" />

      <!-- 配置Spring MVC的视图,从WEB-INF/views文件夹下去找对应的视图 -->

      <!-- p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" p:order="1" -->

      <bean

            id="viewResolver"

            class="org.springframework.web.servlet.view.InternalResourceViewResolver">

            <!-- 为了使用JSTL Tag修改默认的viewClass属性 -->

            <property

                  name="viewClass"

                  value="org.springframework.web.servlet.view.JstlView" />

            <property

                  name="prefix"

                  value="/WEB-INF/views/" />

            <property

                  name="suffix"

                  value=".jsp"></property>

            <property

                  name="order"

                  value="1"></property>

      </bean>

      <!-- Convenience subclass of UrlBasedViewResolver that supports TilesView

            (i.e. Tiles definitions) and custom subclasses of it. -->

      <!-- Don't forget to set the order if you declared other ViewResolvers -->

      <!-- See http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/servlet/view/tiles2/TilesViewResolver.html -->

     

      <bean

            id="tilesviewResolver"

            class="org.springframework.web.servlet.view.tiles2.TilesViewResolver">

            <property

                  name="order"

                  value="0"></property>

      </bean>

<!-- Helper class to configure Tiles 2.x for the Spring Framework -->

      <!-- See http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/servlet/view/tiles2/TilesConfigurer.html -->

      <!-- The actual tiles templates are in the tiles-definitions.xml -->

     

      <bean

            id="tilesConfigurer"

            class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">

            <property

                  name="definitions">

                  <list>

                        <value>/WEB-INF/tiles-definitions.xml</value>

                  </list>

            </property>

      </bean>

</beans>

5. tiles-definitions.xml

                <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE tiles-definitions PUBLIC

       "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"

       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>

 

      <!-- We declare a new template named template-main. This template is used

            for displaying the main page. It has 4 attributes. These attributes are placeholder

            for our contents For each attribute, we have assigned a corresponding JSP -->

      <definition

            name="template-main"

            template="/WEB-INF/views/layouts/main.jsp">

            <put-attribute

                  name="banner-content"

                  value="/WEB-INF/views/sections/banner.jsp" />

            <put-attribute

                  name="title-content"

                  value="Pet Type" />

            <put-attribute

                  name="primary-content"

                  value="" />

            <put-attribute

                  name="footer-content"

                  value="/WEB-INF/views/sections/footer.jsp" />

      </definition>

 

      <!-- We declare a new template named template-detail. This template is used

            for displaying details of an item. It has 5 attributes. These attributes

            are placeholder for our contents For each attribute, we have assigned a corresponding

            JSP -->

      <definition

            name="template-detail"

            template="/WEB-INF/views/layouts/details.jsp">

            <put-attribute

                  name="banner-content"

                  value="/WEB-INF/views/sections/banner.jsp" />

            <put-attribute

                  name="title-content"

                  value="Pet Type" />

            <put-attribute

                  name="subtitle-content"

                  value="" />

            <put-attribute

                  name="primary-content"

                  value="" />

            <put-attribute

                  name="footer-content"

                  value="/WEB-INF/views/sections/footer.jsp" />

      </definition>

 

      <!-- Concrete page. To use this page, your controller must return the name

            "pet-tiles" -->

      <definition

            name="pet-tiles"

            extends="template-main">

            <put-attribute

                  name="primary-content"

                  value="/WEB-INF/views/contents/pets.jsp" />

      </definition>

 

      <!-- Concrete page. To use this page, your controller must return the name

            "dog-tiles" -->

      <definition

            name="dog-tiles"

            extends="template-detail">

            <put-attribute

                  name="subtitle-content"

                  value="Canines" />

            <put-attribute

                  name="primary-content"

                  value="/WEB-INF/views/contents/dogs.jsp" />

      </definition>

 

      <!-- Concrete page. To use this page, your controller must return the name

            "cat-tiles" -->

      <definition

            name="cat-tiles"

            extends="template-detail">

            <put-attribute

                  name="subtitle-content"

                  value="Felines" />

            <put-attribute

                  name="primary-content"

                  value="/WEB-INF/views/contents/cats.jsp" />

      </definition>

 

</tiles-definitions>

                tiles的配置文件里定义了两个模板(template-maintemplate-detail),template-main模板的模板jsp文件是layouts/main.jsp,其内容如下:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"

      pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

 

<style type="text/css">

body {

      background: #555;

      width: 400px;

      border: 1px solid #fff;

      padding: 0px;

}

 

div {

      padding: 5px;

      margin: 0px;

}

 

h1,h2,p {

      padding: 0px;

      margin: 0px;

}

 

#banner-style {

      background: #3B3E37;

}

 

#title-style {

      background: #665845;

}

 

#subtitle-style {

      background: #9F8158;

}

 

#primary-style {

      background: #EBC785;

}

 

#footer-style {

      background: #733027;

}

</style>

 

<title>Insert title here</title>

</head>

<body style="background: #555;">

 

      <div id="banner-style">

            <tiles:insertAttribute name="banner-content" />

      </div>

      <div id="title-style">

            <h2>

                  <tiles:insertAttribute name="title-content" />

            </h2>

      </div>

      <div id="primary-style">

            <tiles:insertAttribute name="primary-content" />

      </div>

      <div id="footer-style">

            <tiles:insertAttribute name="footer-content" />

      </div>

</body>

</html>

这里定义了banner-content,title-contentprimary-contentfooter-content几个大块内容,这些和tiles配置文件里的template-main模板里的元素对应。

            <put-attribute

                  name="banner-content"

                  value="/WEB-INF/views/sections/banner.jsp" />

            <put-attribute

                  name="title-content"

                  value="Pet Type" />

            <put-attribute

                  name="primary-content"

                  value="" />

            <put-attribute

                  name="footer-content"

                  value="/WEB-INF/views/sections/footer.jsp" />

从上面的代码中可以看出main.jsp中的banner-content使用sections/banner.jsp文件(应该是使用include)。title-content在这里就写死了,是Pet Type,当然子模板也可以覆盖这个属性。Primary-content这里没有设置内容,需要子模板提供相应的数据。Footer-content使用sections/footer.jsp文件。

子模板pet-tiles就继承了上面template-main模板,其内容如下:

<definition

            name="pet-tiles"

            extends="template-main">

            <put-attribute

                  name="primary-content"

                  value="/WEB-INF/views/contents/pets.jsp" />

      </definition>

可以看出,子模板中没有指定banner-contenttitle-contentfooter-content,只是指定了primary-content,使用contents/pets.jsp文件。

6.Controller

                Controller里没有什么好说的,唯一需要说明的是,在controller的方法里返回的视图名不是真正对应的jsp名,要对应tiles配置文件里的名字。比如上面的pet-tiles,而不能返回pets

 

Tiles+Spring MVC相关的内容从http://krams915.blogspot.com/2010/12/spring-mvc-3-tiles-2-integration.html里看的,可以去这里查找原文章。

分享到:
评论

相关推荐

    spring mvc, tiles, freemarker集成

    3. **配置Tiles**:添加Tiles的配置,包括设置tiles定义(如`tiles-defs.xml`),在Spring配置文件中配置TilesViewResolver,以及在web.xml中配置Tiles的监听器。 4. **配置Freemarker**:在Spring配置文件中,配置...

    Spring3 mvc集成Tiles2

    - 添加视图解析器的 bean,如 `org.springframework.web.servlet.view.tiles3.TilesViewResolver` - 配置 `TilesConfigurer`,指定 Tiles 的配置文件路径。 3. **配置 Tiles**:创建一个 Tiles 配置文件(如 `...

    Spring mvc tiles thinAdmin bootstrap

    Spring mvc tiles thinAdmin bootstrap Spring mvc tiles thinAdmin bootstrap Spring mvc tiles thinAdmin bootstrap

    Spring MVC + Tiles + FreeMarker 的整合

    &lt;bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"/&gt; &lt;bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"&gt; ...

    spring-webmvc-tiles2.rar

    《Spring Web MVC与Tiles2整合详解》 Spring Web MVC是Spring框架的重要组成部分,它提供了一个用于构建Web应用程序的全面模型视图控制器(MVC)架构。而Tiles2是一个视图框架,它允许开发者将Web页面分解成可重用...

    spring MVC .docx

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

    Spring MVC3。 最近研究

    4. **Spring 3 MVC与Tiles插件的教程**:Tiles是一个布局管理工具,可以使页面设计更加模块化。这部分将教你如何在Spring MVC中集成Tiles插件,实现动态和灵活的页面布局。 5. **Spring 3 MVC的国际化与本地化教程*...

    spring mvc框架源码

    9. **Tiles, FreeMarker, Velocity**: Spring MVC支持多种视图技术,如JSP、Thymeleaf、FreeMarker等,这些技术可以方便地构建动态网页。 10. **RESTful风格的支持**: Spring MVC通过@RequestMapping支持RESTful ...

    Spring-MVC-3.0.rar_Java spring mvc_spring mvc_spring ppt

    **Spring MVC 3.0详解** Spring MVC是Spring框架的一部分,专为构建Web应用程序而设计。这个名为"Spring MVC 3.0.rar"的压缩包包含了一份关于Spring MVC 3.0版本的实战指南PPT,是Java开发者深入理解Spring MVC架构...

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

    &lt;property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" /&gt; ``` 3. 配置Tiles容器:在Web应用程序的初始化阶段,需要初始化Tiles容器。这通常通过在web.xml中配置一个...

    spring-webmvc5.3.6 jar包.rar

    这个jar文件包含Spring MVC框架相关的所有类。  包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。  当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的...

    spring框架的MVC

    通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring ...

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

    通过策略接口,Spring MVC 具有高度可配置性,支持多种视图技术,如 JSP、Velocity、Tiles、iText 和 POI。 Spring MVC 的主要组成部分包括控制器、模型对象、分派器和处理程序对象,这些组件的职责明确,易于定制...

    Spring3、 Hibernate4、 Spring mvc3 通用后台管理系统

    此外,Spring MVC3集成了Tiles2,支持页面布局,使得视图管理更加灵活。 【集成】 Spring3、Hibernate4 和 Spring MVC3 的集成是现代Java企业应用的常见架构模式。Spring作为整体框架,负责管理和协调各个组件;...

    spring3.0 mvc中文实例教程

    7. **Spring3 MVC与Hibernate 3整合**:讲解如何结合Spring MVC和Hibernate进行持久化操作。 通过这些教程,开发者可以全面了解和掌握Spring 3.0 MVC框架,从而在实际项目中灵活运用,构建出高效、可靠的Web应用。

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

    spring3.0 MVC中文教程

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

    spring mvc 框架示例

    通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring ...

Global site tag (gtag.js) - Google Analytics