- 浏览: 69850 次
- 性别:
- 来自: 绍兴
最新评论
struts的tiles插件是非常实用的,从某些方面可以很好的增加页面的灵活性,记得以前外包到华为开发portalone项目,其自行代码构造了类似tiles的插件并与后台数据库结合,页面的风格和布局完全由数据库控制,当时在里面一直研究他的代码,到最后也看的八九不离十了,主要也就是将页面分为频道->窗口->列的父子关系然后基于struts的标签来完成的,虽然最后也同样实现titles的功能,但是在我看来没特殊需求那样做完全没必要...扯远了,开始配置tiles插件.
首先添加所需要的包
然后在web.xml配置tiles监听
tiles对于action来说就是一个返回类型,也就是type,如"redirect"就是result的其中一个返回类型,我们配置重要的一步就是告诉struts有tiles这么一个类型,就可以说是注册一个类型,主要有两种方式
1.package直接继承"tiles-default"
tiles-default是tiles提供默认的包,他本身已拥有tiles类型,来看看源配置
2.在包内手动注册tiles类型
配置好类型以后我们就要用tiles给我们的约定来创建页面了,我们在WEB-INF下创建tiles.xml
layout.jsp是我的一个模板页面,tiles框架测试我讲用他来作为页面的地址,leftMenu.jsp是我的左边菜单页面,head 和 footer 是我页面的头部和底部,在我的工程里大部分页面 这三个页面都是固定的,只有右边部分是需要动态改变的,所以重点就是<put-attribute name="body" value="" />这句,我们没有对body添加页面,因为它是动态的需要我们在代码里面对它进行赋值,我们再来看看layout.jsp里面的代码
只是一个简单的布局页面,美工可以尽情发挥,和程序员不干扰
最后就是编码过程中的使用了,看代码
这个是我提出的公共方法,一般放在action的父类里,这里方便起见我直接放在action里了,这个方法告诉tiles某key的值是什么,根据tiles.xml的配置,我们需要对body进行赋值,看代码
先添加了一个result,指定的local为tiles里配置的definition的name,然后我在say方法里对body进行赋值/hello.jsp,return"onPage"这个result,这样tiles监听会自动找到layout.jsp组装过后来返回了...
其实配置方式非常简单,只不过想说细一点而已....
补充struts的json插件,原理跟tiles几乎一致
首先欠佳jar包
为package配置result类型
java代码
result为返回的模型,json-plugin会自动帮我们转成json格式的数据,注意配置result时,parames中root 配置的参数名称 要与 list的名称一致 也就是result,并且result必须生成get set方法
首先添加所需要的包
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-tiles-plugin</artifactId> <version>2.1.8.1</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-core</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-api</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-jsp</artifactId> <version>2.1.4</version> </dependency>
然后在web.xml配置tiles监听
<listener> <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> </listener>
tiles对于action来说就是一个返回类型,也就是type,如"redirect"就是result的其中一个返回类型,我们配置重要的一步就是告诉struts有tiles这么一个类型,就可以说是注册一个类型,主要有两种方式
1.package直接继承"tiles-default"
<package name="crud-default" extends="tiles-default"> </package>
tiles-default是tiles提供默认的包,他本身已拥有tiles类型,来看看源配置
<struts> <package name="tiles-default" extends="struts-default"> <result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> </result-types> </package> </struts>
2.在包内手动注册tiles类型
<package name="crud-default" extends="struts-default"> <result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> </result-types> </package>
配置好类型以后我们就要用tiles给我们的约定来创建页面了,我们在WEB-INF下创建tiles.xml
<tiles-definitions> <definition name="hello" template="/WEB-INF/layout/layout.jsp"> <put-attribute name="title" value="tiles框架测试" /> <put-attribute name="leftmenu" value="/WEB-INF/layout/leftMenu.jsp" /> <put-attribute name="head" value="/WEB-INF/layout/head.jsp" /> <put-attribute name="footer" value="/WEB-INF/layout/footer.jsp" /> <put-attribute name="body" value="" /> </definition> </tiles-definitions>
layout.jsp是我的一个模板页面,tiles框架测试我讲用他来作为页面的地址,leftMenu.jsp是我的左边菜单页面,head 和 footer 是我页面的头部和底部,在我的工程里大部分页面 这三个页面都是固定的,只有右边部分是需要动态改变的,所以重点就是<put-attribute name="body" value="" />这句,我们没有对body添加页面,因为它是动态的需要我们在代码里面对它进行赋值,我们再来看看layout.jsp里面的代码
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ 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=ISO-8859-1"> <title><tiles:getAsString name="title"/></title> </head> <body> <div class="head"> <tiles:insertAttribute name="head"/> </div> <div class="leftMenu"> <tiles:insertAttribute name="leftMenu"/> </div> <div class="body"> <tiles:insertAttribute name="body"/> </div> <div class="footer"> <tiles:insertAttribute name="footer"/> </div> </body> </html>
只是一个简单的布局页面,美工可以尽情发挥,和程序员不干扰
最后就是编码过程中的使用了,看代码
public void setTemplate(String key,String path){ HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); TilesContainer container = ServletUtil.getCurrentContainer(request, request.getSession().getServletContext()); AttributeContext context = container.startContext(request,response); context.putAttribute(key, new Attribute("/WEB-INF/content/"+path)); }
这个是我提出的公共方法,一般放在action的父类里,这里方便起见我直接放在action里了,这个方法告诉tiles某key的值是什么,根据tiles.xml的配置,我们需要对body进行赋值,看代码
@Namespace("/test") @Results({@Result(name = "onePage", location = "hello", type = "tiles")}) public class HelloAction extends ActionSupport { public String say(){ this.setTemplate("body", "/hello.jsp"); return "onePage"; } public void setTemplate(String key,String path){ HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); TilesContainer container = ServletUtil.getCurrentContainer(request, request.getSession().getServletContext()); AttributeContext context = container.startContext(request,response); context.putAttribute(key, new Attribute("/WEB-INF/content/"+path)); } }
先添加了一个result,指定的local为tiles里配置的definition的name,然后我在say方法里对body进行赋值/hello.jsp,return"onPage"这个result,这样tiles监听会自动找到layout.jsp组装过后来返回了...
其实配置方式非常简单,只不过想说细一点而已....
补充struts的json插件,原理跟tiles几乎一致
首先欠佳jar包
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> <version>2.2.1</version> </dependency>
为package配置result类型
<result-types> <result-type name="json" class="org.apache.struts2.json.JSONResult" /> </result-types>
java代码
private List<Object> result = new ArrayList<Object>(); @Action(value = "syaByJson", results = { @Result(name = "json", type = "json", params = { "root", "result" }) }) public String sayByJson() { result.add(true); return "json"; }
result为返回的模型,json-plugin会自动帮我们转成json格式的数据,注意配置result时,parames中root 配置的参数名称 要与 list的名称一致 也就是result,并且result必须生成get set方法
发表评论
-
Web开发学习13聊聊java反射
2016-07-12 18:41 770很喜欢一本叫《走出软件作坊》的书,其中有一句话让我较为深刻,“ ... -
Web开发学习12 浅谈设计模式
2016-07-01 13:33 1330在我刚接触 ... -
Web开发学习11 全局缓存控制
2015-10-12 14:27 751缓存用的好可以减少数据库的压力,在大并发的情况下极大的提升服务 ... -
Web开发学习10 hadoop实战
2015-10-09 14:02 769前一篇说到项目记录了很多埋点日志,当有一天项目需求需要对这些日 ... -
Web开发学习(9)全局埋点
2015-07-27 11:10 2031埋点的作用是把客户端每次访问服务端的操作记录下来,包括请求连接 ... -
Web开发学习8Struts2基类封装
2015-07-24 12:03 713一个好的基类可以帮助开发者减少很多开发工作,像我这种爱偷懒的人 ... -
Web开发学习7按钮级别权限控制
2015-07-23 16:21 13369这个功能的思路是自己原创的,没看过其他例子,其实是在做之前网上 ... -
Web开发学习6添加liqiubase
2015-07-22 14:29 1483开发过程中经常碰到数据库更改的情况,在日常环境下如果每位开发人 ... -
浅列JavaEnum
2014-01-05 16:42 796enum Province{ ZHEJIANG,SHANGHA ... -
maven常用命令
2013-07-08 10:20 7961、创建普通Java项目: ... -
canvas绘制科赫雪花
2012-12-20 17:24 2168<html> <head> ... -
html5 audio与video方法属性事件概括
2012-12-20 14:46 1128play() 继续播放 pause() ... -
spring 整合mina
2012-12-20 11:48 1128首先定义自定义过滤器 <bean id=" ... -
Web开发学习(5)添加springsecurity应用
2011-12-14 15:00 980我学习公司这个架构多半就是为了把springsecurity搞 ... -
Web开发学习(4)添加spring应用
2011-12-14 14:45 803印象中似乎没做过不用spring的项目,因为它在web开发中的 ... -
使用线程删除导出临时文件
2011-12-01 16:33 2286项目支持大数据量导出e ... -
jQuery实现表格行点击选中复选框
2011-11-23 12:36 6016这个需求是在项目完成后客户提出的要求,看似简单但是还需要一点小 ... -
Web开发学习(2)配置convention插件
2011-11-04 10:28 1403注解的方式某些程度上能减少xml的配置量,个人感觉使程序更加清 ... -
Web开发学习(1)使用eclipse搭建maven项目
2011-10-20 10:04 5754首先用eclipse创建工程 ne ... -
数据库连接泛型基类创建
2011-06-30 11:49 1005记录 以便以后参考---- 基类代码 public cl ...
相关推荐
在Struts-Tiles中,配置文件(通常为tiles-defs.xml)是至关重要的。这个文件定义了Tiles的结构和它们之间的关系。例如,你可以创建一个定义,其中包含一个头部、主体和底部的Tiles,每个部分都可以独立设计和重用。...
struts-tiles.tld
struts-tiles-el.tld
用于struts技术开发应用的架包 struts-tiles.1.3.10.jar
Struts1中的Tiles标签库是一种强大的布局管理...总的来说,Struts1的Tiles标签库是Web开发中一种高效且灵活的布局解决方案,它结合了布局管理器和模板机制的优点,使开发者能够更轻松地构建和维护复杂的Web应用程序。
首先,需要配置 Tiles 配置文件 `tiles-defs.xml`。接着,我们可以通过定义 Tiles Layouts 和 Tiles Definitions 来组织页面结构。 **配置 Tiles 配置文件** ```xml <!DOCTYPE tiles-definitions PUBLIC "-//...
关于struts-tiles的例子,基础,简单,实用。
struts2-tiles-plugin-2.1.6.jar
“objTo3d-tiles-master”很可能是该转换工具的源代码仓库,对于开发者来说,这是一个宝贵的资源。通过阅读和研究源代码,我们可以了解到转换过程的细节,例如如何解析.OBJ文件,如何组织3D Tiles的结构,以及如何...
Struts和Tiles以及Validator是Java Web开发中非常重要的框架,它们是Apache Struts项目的一部分,用于构建企业级的MVC(Model-View-Controller)应用。让我们深入了解一下这两个组件及其在Struts 2中的整合。 ...
6. `struts-2.0.1/struts2-tiles-plugin.jar`:Tiles插件,用于布局和页面组合,增强视图控制。 7. `struts-2.0.1/lib`目录下包含其他依赖的JAR文件,如Freemarker、Commons Logging等。 在实际开发中,开发者需要...
3. `struts2-config-browser-plugin.jar`:配置浏览器插件,方便在Web界面查看和编辑Struts2的配置。 4. `struts2-json-plugin.jar`:支持JSON格式的数据交换,适用于RESTful服务。 5. `struts2-spring-plugin.jar`...
- `struts2-tiles-plugin.jar`:与Tiles框架的集成插件。 - `struts2-dojo-plugin.jar`:用于支持Dojo JavaScript库的插件。 - `struts2-json-plugin.jar`:处理JSON响应的插件。 - `struts2-spring-plugin.jar`:与...
struts2-tiles-plugin-2.5.2.jar, tiles-api-3.0.5.jar, tiles-autotag-core-runtime-1.1.0.jar, tiles-core-3.0.5.jar, tiles-el-3.0.5.jar, tiles-freemarker-3.0.5.jar, tiles-jsp-3.0.5.jar, tiles-ognl-3.0.5....
3. **struts2-json-plugin**: 提供了对JSON格式数据的支持,使得Action可以直接返回JSON响应,便于AJAX和API开发。 4. **struts2-dojo-plugin**: 提供了与Dojo JavaScript库的集成,方便创建富客户端界面。 5. **...
总的来说,"jakarta-struts-1.1.zip"包含的资源对于学习和理解早期Java Web开发,尤其是Struts框架的运作机制非常有价值。通过查阅其中的API文档,开发者可以深入理解如何使用Struts来构建高效、可维护的Web应用。...
Struts是一个非常经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构中的Controller部分。Struts 1.2.9是该框架的一个较早版本,但仍然在许多遗留系统中使用。这个...
struts2.0中使用Tiles框架所需jar包之一