发表于: 2018-02-27 22:23:33
1 716
今天完成的事情:
1,解决昨天遇到的tiles框架问题,实现demo
2,将之前t11和t10两个页面转成tiles项目。
3,将项目发布到了服务器上。
1,tiles框架问题
1.1 少了两个jar包,网页上报错信息如下:
nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
少了的jar包是:
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
1.2 加上这两个jar包之后,仍然报错,报错信息:
ServletException including path '/WEB-INF/jsp/classic.jsp'.
classic.jsp这个是tiles的网页框架,在这个文件中我多写了一行:
<tiles:insertDefinition name="classic" />
这一行是我在tiles官网的教程中添加的,教程中说这一句是为了 by using the <tiles:insertDefinition /> tag, inserting it in a JSP page:
是为了渲染JSP网页,但是对照其他师兄的tiles框架代码,并没有发现这一句,删掉这一句之后,tiles框架的网页就可以正常访问了。
tiles框架的demo用了两天了,先把这个问题放一放,以后来解决吧。
最后实现结果:
1.3 实现tiles框架的过程:
配置依赖:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
Spring MVC.xml配置文件增加一项tiles视图解析器,并将SpringMVC视图解析器删掉:
<!-- 配置tiles视图解析器 -->
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.tiles3.TilesView</value>
</property>
</bean>
<!-- 引入tiles配置文件 -->
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer" >
<property name="definitions">
<list>
<value>/WEB-INF/tiles.xml</value>
</list>
</property>
</bean>
web.xml配置文件中增加:
<listener>
</listener>
<servlet>
<servlet-name>Tiles Dispatch Servlet</servlet-name>
<servlet-class>org.apache.tiles.web.util.TilesDispatchServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Tiles Dispatch Servlet</servlet-name>
<url-pattern>*.tiles</url-pattern>
</servlet-mapping>
在WEB-INF文件夹下新建一个tiles.xml配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
<tiles-definitions>
<definition name="classic" template="/WEB-INF/jsp/classic.jsp">
<put-attribute name="title" value="Tiles tutorial homepage" />
<put-attribute name="header" value="/WEB-INF/jsp/banner.jsp" />
<put-attribute name="menu" value="/WEB-INF/jsp/common_menu.jsp" />
<put-attribute name="body" value="/WEB-INF/jsp/home_body.jsp" />
<put-attribute name="footer" value="/WEB-INF/jsp/credits.jsp" />
</definition>
</tiles-definitions>
项目结构:
2, 将两个静态页面做成tiles框架:
首页:firstPage.jsp
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>首页</title>
<link href="${pageContext.request.contextPath}/t10/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="../bootstrap-3.3.5-dist/css/bootstrap.css">
<link href="${pageContext.request.contextPath}/t10/Untitled-3.css" rel="stylesheet" type="text/css">
<link href="${pageContext.request.contextPath}/t10/Untitled-1base.css" rel="stylesheet" type="text/css">
</head>
<header>
<tiles:insertAttribute name="header" />
</header>
<body>
<tiles:insertAttribute name="body" />
</body>
<footer>
<tiles:insertAttribute name="footer" />
</footer>
</html>
按照tiles框架demo的格式将两个动态页面做成tiles框架的形式。能成功显示出来。
出现了一些问题,有一些效果没有出来。明天继续。
遇到的问题:
tiles框架的配置问题。
页面格式在tiles框架下有些无法显示。
明天计划:
将项目放到服务器上,总结任务四。
评论