Spring中整合Titles

在《Spriing实战(第三版)》这本书中,有一个使用titles的例子,但是这是一个不完整的例子。那么要参照起来就比较难了,于是找到了下面这篇博客。

在Spring中使用tiles2 (因为是英文的,同时又是比较简单的英文,那么就翻译一下,当作学习)

在这个例子中,你将学会怎样整合Spring和Tiles2.这个例子的目录结构如下:

添加下面的库文件到库目录,(当然如果是在Eclipse中就是对应的lib文件夹了)。

01.antlr-runtime-3.0

02.commons-logging-1.0.4

03.org.springframework.asm-3.0.0.M3

04.org.springframework.beans-3.0.0.M3

05.org.springframework.context-3.0.0.M3

06.org.springframework.context.support-3.0.0.M3

07.org.springframework.core-3.0.0.M3

08.org.springframework.expression-3.0.0.M3

09.org.springframework.web-3.0.0.M3

10.org.springframework.web.servlet-3.0.0.M3

11.

12.commons-beanutils-1.7.0

13.commons-digester-1.8

14.commons-logging-api-1.1

15.jstl

16.standard

17.tiles-api-2.0.4

18.tiles-core-2.0.4

19.tiles-jsp-2.0.4

你将会看到如何创建一个有头部,目录和主体部分的简单典型的Tiles布局。

在Spring中使用Tiles,在Spring的配置文件中配置下面Tile的定义。

<?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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="viewResolver" class="org.springframework.web.servlet.view. ResourceBundleViewResolver" p:basename="views" />

    <context:component-scan base-package="com.vaannila.web" />

    <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2. TilesConfigurer" p:definitions="/WEB-INF/tiles-defs.xml" />    

</beans>

使用definitions属性指定Tiles定义文件的位子,这里这个位置是“/WEB-INF/tiles-defs.xml"。Tiles定义文件展示如下:

<?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>

  <definition name="baseLayout" template="/WEB-INF/tiles/baseLayout.jsp">
      <put-attribute name="title"  value="Template"/>
      <put-attribute name="header" value="/WEB-INF/tiles/header.jsp"/>
      <put-attribute name="menu"   value="/WEB-INF/tiles/menu.jsp"/>
      <put-attribute name="body"   value="/WEB-INF/tiles/body.jsp"/>
      <put-attribute name="footer"   value="/WEB-INF/tiles/footer.jsp"/>
  </definition>

  <definition name="welcome" extends="baseLayout">
      <put-attribute name="title"  value="Welcome"/>
      <put-attribute name="body"   value="/WEB-INF/jsp/welcome.jsp"/>
  </definition>

  <definition name="friends" extends="baseLayout">
      <put-attribute name="title"  value="Friends"/>
      <put-attribute name="body"   value="/WEB-INF/jsp/friends.jsp"/>
  </definition>

  <definition name="office" extends="baseLayout">
      <put-attribute name="title"  value="Office"/>
      <put-attribute name="body"   value="/WEB-INF/jsp/office.jsp"/>
  </definition>

</tiles-definitions>

这里我们首先定义了基本的布局,以后我们将扩展这个基本的布局并且将通过仅仅改变标题和主体部分创建更多tiles。

为了显示视图我们使用ResourceBundleViewResolver。通过定义存储了一对关键值的views.properties文件,我们使用了的基本名属性指定这些。

welcome.(class)=org.springframework.web.servlet.view.tiles2.TilesView
welcome.url=welcome

friends.(class)=org.springframework.web.servlet.view.tiles2.TilesView
friends.url=friends

office.(class)=org.springframework.web.servlet.view.tiles2.TilesView
office.url=office

about.(class)=org.springframework.web.servlet.view.JstlView
about.url=/WEB-INF/jsp/about.jsp

welcome, friends 和 office 引用tile 定义的名字 (the one to right side of the = sign)。我们使用 "org.springframework.web.servlet.view.tiles2. TilesView" 类展示tile.你也可以一起使用其他的TilesView。相关的url通过org.springframework.web.servlet.view.JstlView被映射到相关的jsp页面。

baseLayout.jsp文件包含了拥有不同区域的的表结构。

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<!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">
<title><tiles:insertAttribute name="title" ignore="true" /></title>
</head>
<body>
<table border="1" cellpadding="2" cellspacing="2" align="center">
<tr>
<td height="30" colspan="2">
<tiles:insertAttribute name="header" />
</td>
</tr>
<tr>
<td height="250">
<tiles:insertAttribute name="menu" />
</td>
<td width="350">
<tiles:insertAttribute name="body" />
</td>
</tr>
<tr>
<td height="30" colspan="2">
<tiles:insertAttribute name="footer" />
</td>
</tr>
</table>
</body>
</html>

这里我们使用注解controller处理映射去处理请求。在在redirect.jsp页面我们只是请求welcome.htm。

<% response.sendRedirect("welcome.htm"); %>

我们向前到 welcome.htm的url将通过WelcomeController类处理。

package com.vaannila.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class WelcomeController {

@RequestMapping("/welcome.htm")
public String redirect()
{
return "welcome";
}
}

运行时显示的界面如下:

Spring中整合Titles

时间: 2024-10-08 05:07:17

Spring中整合Titles的相关文章

spring中整合memcached,以及创建memcache的put和get方法

spring中整合memcached,以及创建memcache的put和get方法: 1:在项目中导入memcache相关的jar包 2:memcache在spring.xml的配置: 代码: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="

玩转Spring MVC(五)----在spring中整合log4j

在前边的基础上,本文主要总结一下如何在spring 中配置log4j,在本文末尾会给出完整项目的链接. 首先是web.xml中要新添加的代码: <!-- 6. 配置log4j --> <!--6.1 配置加载log4j.xml文件路径 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/spring

在Spring中整合JUnit单元测试

一 简介 在Java Web开发中,通常我们会开发很多的功能代码.在代码正式使用之前,为了确保代码能够正确实现我们预期的功能,最好是添加一些简单代码对代码逻辑进行测试.很显然,JUnit就是一个不错的单元测试工具,同时在Spring中我们也可以很方便地引入JUnit进行测试 二 代码实例 (1)引入必需的jar包: 这里除了Spring以及其他模块所需要的jar包之外,还需要引入: spring-test-4.2.3.RELEASE.jar junit-4.10.jar 注:jar包版本使用最新

maven项目,在spring中整合mybatis

一.pom.xml配置,导入所需jar包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quo

Spring中整合Cage,实现验证码功能

1.pom.xml中添加Cage依赖. <dependency> <groupId>com.github.cage</groupId> <artifactId>cage</artifactId> <version>1.0</version> </dependency> 项目相关资料:https://akiraly.github.io/cage/quickstart.html . 2.Controller:@Re

企业分布式微服务云SpringCloud SpringBoot mybatis (十三)Spring Boot整合MyBatis

Spring中整合MyBatis就不多说了,最近大量使用Spring Boot,因此整理一下Spring Boot中整合MyBatis的步骤.搜了一下Spring Boot整合MyBatis的文章,方法都比较老,比较繁琐.查了一下文档,实际已经支持较为简单的整合与使用.下面就来详细介绍如何在Spring Boot中整合MyBatis,并通过注解方式实现映射. 整合MyBatis 新建Spring Boot项目,或以Chapter1为基础来操作 pom.xml中引入依赖 这里用到spring-bo

让Mongo在Spring中跑起来

本文标题为<让Mongo在Spring中跑起来>,旨在Spring中如何成功连接MongoDB并对其进行增删改查等操作,由于笔者也是刚接触,对其中的一些原由也不甚了解,若有错误之处,敬请指正. 习惯了MySQL在Spring中整合时填写各种各样的连接参数,本来只想做一件简单的数据库插入查询而已,翻遍整个互联网通篇都是复制粘贴抄袭的配置,连接数的多少,超时时间的多少等等. SprintBoot的出现,秉持**约定大于配置**的目标,可以使你免去许多配置的烦脑,“约定”即是大多数人都这么做,你这么

Spring中AOP的实现

Spring中整合了AOP的功能,虽然有不足,没有专门做AOP框架的那么完美,但是用一用感觉还是不错的 一些概念: AOP 面向切面编程 aspect 切面/切面类(我个人认为一个真正被解耦的程序,切面类中的功能可以切入到 任何一个目标类中 无所谓是service层或者说是dao层中的类) joinPoint 连接点 在spring的aop中只有 类中的方法 可以做连接点,每一个方法都可以是一个连接点. pointCut 切入点 一组连接点的集合 advice 通知/拦截器 用来控制切面类将来到

Java中Jedis操作Redis与Spring的整合

Redis是一个key-value存储系统.它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.为了保证效率,数据都是缓存在内存中.redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步.以下是