Struts2-Tiles整合
...
<struts2.version>2.1.6</struts2.version>
<tiles.version>2.0.6</tiles.version>
<struts2-tiles-plugin>2.1.6</struts2-tiles-plugin>
<jetty.version>9.2.8.v20150217</jetty.version>
...
...
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2.version}</version>
</dependency> <dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
<version>${tiles.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-api</artifactId>
<version>${tiles.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>${tiles.version}</version>
</dependency> <dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-tiles-plugin</artifactId>
<version>${struts2-tiles-plugin}</version>
</dependency>
...
web.xml相关:
1 指定tiles的配置文件位置;
2 设置strutstiles的监听器.
<context-param>
<param-name>org.apache.tiles.CONTAINER_FACTORY</param-name>
<param-value>
org.apache.struts2.tiles.StrutsTilesContainerFactory
</param-value>
</context-param>
<context-param>
<param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
</param-name>
<!-- 指定 tiles的配置文件位置,相对于webapp -->
<param-value>/WEB-INF/layout.xml</param-value>
</context-param> <listener>
<listener-class>
org.apache.struts2.tiles.StrutsTilesListener
</listener-class>
</listener> <filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Tips: <filter-mapping>中的<url-pattern> " /* "时表示拦截所有,包括jsp;" / "时拦截不包含.jsp的url参数;
struts.xml相关:
1 包继承自tiles-default时,设置结果类型为tiles型,其value是相关的框架definition的name属性值;
2 包继承自struts-default时,需要指定特殊的结果类型,将类型显示定义,定义后使用,使用规则与1相同.
<package name="pk1" namespace="/struts" extends="struts-default">
<result-types>
<result-type name="tiles"
class="org.apache.struts2.views.tiles.TilesResult"/>
</result-types>
<action name="tiles" class="com.sknn.tiles.action.TilesAction" method="tile">
<result type="tiles" name="tilePage">struts-tiles</result>
</action>
</package> <!-- 或者另一种写法 ,注意extends的内容, struts-tiles是Tiles定义的一个模板的名称 -->
<!--
<package name="pk2" extends="tiles-default">
<action name="tiles2" class="com.sknn.tiles.action.TilesAction" method="tile">
<!-- 与tiles配置的definition标签中name属性相同! -->
<result type="tiles" name="tilePage">struts-tiles</result>
</action>
</package>
-->
tiles文件:
主要是<definition/>子标签配置,其结合框架主体页面上的<tiles:setxxxxxxx/> 与子标签中的<put-attribute />完成对页面个性化的引用.
其效果类似于<jsp:include/>,优点是当大量修改模板框架时,只需要改动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>
<!-- 主布局文件,主要提供页面框架构造,template为主要框架jsp文件地址,地址内容从webapp开始 -->
<definition name="layout" template="/WEB-INF/tiles/layout.jsp"/> <!-- 主要注意其name属性,整合后的返回值为其name -->
<definition name="struts-tiles" extends="layout">
<put-attribute name="left" value="/WEB-INF/jsp/user/userLeft.jsp"/>
<put-attribute name="right" value="/WEB-INF/jsp/user/userRight.jsp"/>
<put-attribute name="bottom" value="/WEB-INF/jsp/user/userBottom.jsp"/>
</definition>
... </tiles-definitions>
layout.jsp: 提供整个页面框架
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<!-- 注意引入tiles标签!!!!!!!!!!!!! -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body> <div>
<!-- 与tiles文件中的put-attribute对应,此处的页面布局是为了简便没有设置大小及占比 -->
<tiles:insertAttribute name="left"/>
</div>
<div>
<tiles:insertAttribute name="right"/>
</div>
<div>
<tiles:insertAttribute name="bottom"/>
</div> </body>
</html>
TilesAction部分代码:
...
public String tile() {
...
return "tilePage";
}
...
整合完成,将项目发布到中间件上按照struts2访问规则,即可访问.
https://stackoverflow.com/questions/4770344/struts-2-tiles-nosuchdefinitionexception
Struts2-Tiles整合的更多相关文章
- 简易的CRM系统案例之Struts2&Spring整合+Hibernate3+JSP+MySQL版本
主要对上一篇Struts2&Spring整合的改造 简易的CRM系统案例之Struts2+Hibernate3+JSP+MySQL版本 src/bean.xml <beans xmlns ...
- Spring与Struts2 的整合使用
Spring与Struts2 的整合使用 项目结构 再Struts2 中(还没有与Spring整合时),它创建Action类的依据 <action name="second" ...
- struts2+hibernate整合-实现登录功能
最近一直学习struts2+hibernate框架,于是想把两个框架整合到一起,做一个小的登录项目.其他不多说,直接看例子. 1).Struts2 和hibernate的环境配置 包括jar包.web ...
- spring4+hibernate4+struts2项目整合的步骤及注意事项
首先,在整合框架之前,我们需要知道Spring框架在普通Java project和Web project中是略有不同的. 这个不同地方就在于创建IOC容器实例的方式不同,在普通java工程中,可以在m ...
- 浅谈:深入理解struts2的流程已经spring和struts2的整合
第一步:在tomcat启动的时候 1.在tomcat启动的时候,首先会加载struts2的核心过滤器StrutsPrepareAndExecuteFilter <filter> <f ...
- Mybatis+struts2+spring整合
把student项目改造成ssm struts2 +mybatis+spring 1,先添加spring支持:类库三个,applicationContext.xml写在webinf下四个命名空间,监 ...
- struts2+hibernate整合开发步骤
百度的各种代码,步骤,自己整合了一下 1,创建数据库 常用mysql creat table..... 2,在WebContent下的bin中添加相应的包 http://pan.baidu.com ...
- mybatis+spring+struts2框架整合
近期公司要开发新的项目,要用struts2+mybatis+spring框架,所以学习了下,来自己的博客发表下,希望能给大家带来帮助!下边我把我的myschool开发的源代码以及数据库贴出来! 开 ...
- OA学习笔记-005-Spring2.5与struts2.1整合
一.单独测试strust 1.action package cn.itcast.oa.test; import org.springframework.context.annotation.Scope ...
- 第五章 Spring3.0 、Hibernate3.3与Struts2的整合
5.1整合Spring与Hibernate 5.1.1使用MyEclipse加入Spring与Hibernate功能 使用MyEclipse工具主要是为了让工程拥有把数据表生成实体类与映射的功能.然后 ...
随机推荐
- 移动端效果之Picker
写在前面 接着前面的移动端效果的研究,这次来看看picker选择器的实现原理 移动端效果之Swiper 代码看这里:github 1. 核心解析 1.1 基本HTML结构 <!-- 说明: 1. ...
- 即时通信系统Openfire分析之五:会话管理
什么是会话? A拨了B的电话 电话接通 A问道:Are you OK? B回复:I have a bug! A挂了电话 这整个过程就是会话. 会话(Session)是一个客户与服务器之间的不中断的请求 ...
- Django学习中遇到的问题(1)django migration No migrations to apply
C:\Users\Desktop\homeWork\Django_stu_man>python manage.py makemigrations Migrations for 'app01': ...
- SqlServer和Oracle中一些常用的sql语句4 局部/全局变量
--把wh1仓库号中姓名含有"平"字的职工工资在原来的基础上加288 update 职工备份 set 工资=工资+288 where 仓库号='wh1' and 姓名 like ' ...
- Interface request structure used for socket ioctl's
1. 结构体定义 /* * Interface request structure used for socket * ioctl's. All interface ioctl's must have ...
- [置顶]
一个demo学会css
全栈工程师开发手册 (作者:栾鹏) 一个demo学会css css选择器全解 css操作语法全解 学习了css权威指南这本书,自己喜欢边学边总结边写demo,所以写了这篇文章,包含了大部分的css编程 ...
- 在SQL Server中实现关系模型的阶梯到级别3的t -SQL DML
在SQL Server中实现关系模型的阶梯到级别3的t -SQL DML 格雷戈里·拉森(Gregory Larsen),2017/08/02(第一次出版:2011 /11/09) 原文链接:http ...
- 容斥原理、欧拉函数、phi
容斥原理: 直接摘用百度词条: 也可表示为 设S为有限集, ,则 两个集合的容斥关系公式:A∪B = A+B - A∩B (∩:重合的部分) 三个集合的容斥关系公式:A∪B∪C = A+B+C - A ...
- php的序列化和反序列化有什么好处?
序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性. PHP 中的序列化和反序列 ...
- 从项目中总结的js知识点
1. 数字字符串和数字进行比较可以得出正确结果,却不能正确判断是否在一个数字数组中.如以下程序: var s = '8', n = 8, arr = [1,2,8,9]; console.log(s= ...