发表于: 2017-08-15 23:12:04

2 907


今日完成的事:

springmvc整合tiles ,并添加页面样式,准备好明天建表,查看那些地方是动态内容,那些地方不需要修改的固定部分 

tiles 框架整合springmvc

首先准备一下jar包依赖

<!-- Apache Tiles -->
<dependency>
 <groupId>org.apache.tiles</groupId>
 <artifactId>tiles-api</artifactId>
 <version>3.0.4</version>
</dependency>
<dependency>
 <groupId>org.apache.tiles</groupId>
 <artifactId>tiles-core</artifactId>
 <version>3.0.4</version>
</dependency>
<dependency>
 <groupId>org.apache.tiles</groupId>
 <artifactId>tiles-jsp</artifactId>
 <version>3.0.4</version>
</dependency>
<dependency>
 <groupId>org.apache.tiles</groupId>
 <artifactId>tiles-el</artifactId>
 <version>3.0.4</version>
</dependency>
<dependency>
 <groupId>org.apache.tiles</groupId>
 <artifactId>tiles-extras</artifactId>
 <version>3.0.4</version>
</dependency>
<dependency>
 <groupId>org.apache.tiles</groupId>
 <artifactId>tiles-servlet</artifactId>
 <version>3.0.4</version>
</dependency>


<!-- Servlet+JSP+JSTL -->
<dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>javax.servlet-api</artifactId>
 <version>3.1.0</version>
</dependency>
<dependency>
 <groupId>javax.servlet.jsp</groupId>
 <artifactId>javax.servlet.jsp-api</artifactId>
 <version>2.3.1</version>
</dependency>
<dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>jstl</artifactId>
 <version>1.2</version>
</dependency>


在昨天springmvc的xml中,加上关于tiles的试图解析器与tiles.xml的定义路径设置,之前的springmvc的那个试图解析器就不用了.换成了这个UrlBasedViewResolver类的解析器,同时还要给他设置一个property,表示使用tiles3的视图解析器.

这里springmvc4的话是匹配tiles3

低版本的则匹配tiles2 或 更低的tiles1

<?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:context="http://www.springframework.org/schema/context"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      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-4.0.xsd
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
   <mvc:annotation-driven />
   <mvc:default-servlet-handler/>
                      <!--配置自动扫描包-->
         <context:component-scan base-package="com.jnshu.controller"/>

   <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
   <property name="definitions">
       <list>
           <value>/WEB-INF/tiles.xml</value>
       </list>
   </property>
       <property name="preparerFactoryClass" value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory"/>
   </bean>
                   <!--配置视图解析器-->
     <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
         <property name="prefix" value="/WEB-INF/views/"></property>
         <property name="suffix" value=".jsp"></property>
         <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
     </bean>
</beans>


web.xml

在web.xml中还需要匹配tiles独有的监听器和加载tiles的容器类,在刚开始整合的时候的,由于没有加载监听器导致tiles无法正常启动

                      <!--配置servlet-->
  <context-param>
   <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
   <param-value>tiles.xml</param-value>
</context-param>

                      <!--tiles监听器-->
   <listener>
<listener-class>org.apache.tiles.extras.complete.CompleteAutoloadTilesListener</listener-class>
   </listener>


下来是tiles关键的xml文件

definition将被呈现给最终用户的组合物; 基本上definition由一个模板和完全或部分填充的属性组成

  • 如果其所有属性都已填充,则可以将其呈现给最终用户。
  • 如果不是所有的属性都被填充,它被称为抽象定义,它可以用作扩展定义的基本definition,或者它们缺少的属性可以在运行时被填充。

例如,可以通过修改“ tiles”配置文件,使用经过布局的页面创建一个页面。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
   <definition name="myapp.homepage" template="/WEB-INF/layouts/classic.jsp">
       <put-attribute name="title" value="Tiles tutorial homepage" />
       <put-attribute name="header" value="/WEB-INF/tiles/banner.jsp" />
       <put-attribute name="menu" value="/WEB-INF/tiles/common_menu.jsp" />
       <put-attribute name="body" value="/WEB-INF/tiles/home_body.jsp" />
       <put-attribute name="footer" value="/WEB-INF/tiles/credits.jsp" />
   </definition>
</tiles-definitions>


在Tiles中,模板是页面的布局部分。您可以看到一个具有一些空白的页面结构,称为属性,以被填充。

一个属性是需要在你的应用程序来填充模板的差距。属性可以有三种类型:

  • string:它是直接呈现的字符串。
  • 模板:它是一个模板,有或没有属性。如果它有属性,你也必须填写它们来呈现页面。
  • 定义:它是一个可重复使用的组合页面,所有(或一些)属性都被填充(见下文)。
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<html>
<head>
<link href="/imges/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="/imges/bootstrap-3.3.5-dist/css/bootstrap.css">
<link href="/imges/Untitled-3.css" rel="stylesheet" type="text/css">
<link href="/imges/Untitled-1base.css" rel="stylesheet" type="text/css">


   <title><tiles:getAsString name="title"/></title>
</head>
<body>
<table>
   <tr>
       <td colspan="2">
           <tiles:insertAttribute name="header" />
</td>
   </tr>
   <tr>
       <td>
           <tiles:insertAttribute name="menu" />
</td>
       <td>
           <tiles:insertAttribute name="body" />

</td>
   </tr>
   <tr>
       <td colspan="2">
           <tiles:insertAttribute name="footer" />
</td>
   </tr>
</table>
</body>
</html>



其他的模板就不贴了,差不多的.然后有一个图片路径的问题,一开始我把imges文件夹放置在WEB-INF路径下,图片路径找不到,路径加了WEB-INF也不行,然后看一下任务页面的代码,发现t10这个文件夹可以直接引入imges下的图片,而我这个就不能,试了一下把imges文件夹放在了webapp目录下,在重新启动一下jetty.OK了!!!!  这个webapp的路径也是很玄乎啊~

<img src="WEB-INF/imges/5477.jpg" >



然后在主模板下body页面 ,也就是内容的部分插入页面的代码,同时样式的引用代码要放在head标签里面,我顺便把图片和样式文件放在了一起. 在柱模板页面吧样式应用进去了


接下来运行jetty就可以看到了页面暂时出来了


明天的计划: 建表,把剩下的页面加载起来



遇到的问题:   前段页面路径问题,以及我分不清楚任务4给的页面代码,我怎么分出来那一部分是头尾标题加内容,一锅把这个内容放进了我tiles的body模板里面.看了两三天就知道tiles是个页面复用框架,其他的概念还不懂,也没能理解出来是什么意思 ,要是页面增加了该怎么写,这对于我来说又是一个问题了



收获: 初步学习tiles框架 



进度:任务4  tiles框架 ,加载页面样式 


返回列表 返回列表
评论

    分享到