Struts之旅之Tiles篇
问题域:在大型的web的项目中,不免有很多的页面而这些页面其中的很多部分是可以重复的?那么我们怎么把这些页面做到减少冗余而提高利用率呢?
解决方法:
使用JSP中提供的<jsp:include>来完成
使用Struts的Tiles插件Tiles
What’s mean Tiles?
Tiles是瓦片的意思,也就是网页是由一个个的“瓦片”盖起的“大楼”
Tiles1.2插件已经在Struts中集成
下面我们重点讲下Tiles
Tiles优点:
方便扩展,减少网页的数量和冗余,提供网页的利用率
方便更新网页,只需要修改一个或多个Tiles而已
Tiles能够利用Action等传递过来的属性加以利用
Tiles只需要在xml文件中定义,不需要繁杂的工作
首先我们来看看一个网页的布局
我们转变下思维!
我们可以以上面的方式来布局,但是我要修改左边的主体时,那么我整个网页都要“牵扯”进来! 我们也不难想到我们可以一块块的加到网页中去,那么就可以修改一个地方而不是全部的网页本身,不是吗? 那么怎么办呢?
以前我们使用<jsp:include>来动态加载页面,现在时代变化了,我们可以使用Tiles来动态修改!
具体怎么做?Take it Easy!
凡是要讲究步骤!Attention!建立Tiles页面部署Tiles的xml定义文件在Tiles的xml定义文件中指定你的Tiles网页建立布局文件,并在Tiles的xml定义文件制定在你的struts-config-xxx.xml文件中加入插件Easy?Or Not?不难发现Tiles可以很容易的完成这些功能?可是我们仿佛觉得好些这些功能在<jsp:include/>中也能完成啊!好像,后者更加简单啊,何必这么麻烦呢?
好像在xml文件中每次也只是给一个部分添加一个页面,那还不如以前
显示中充满着假象,往往人们能习惯被表面所欺骗!
Tiles最大的魅力在于扩展How to Extend it?
Like this!
扩展它的时候,就像扩展类一样,实际上也是类的扩展!
<definition name=“sub" extends=“super">
</definition>
产生了一个和父定义一样,特别注意,扩张并不能改变布局,也就是说布局和父定义一样的!现在可以随意的添加你的新的属性!Enjoy!
<definition name=“sub" extends=“super">
<put name=“newAttribute” value=“newValue” />
</definition>Tiles属性
Tiles可以使用传递过来的数据,其中
使用属性(类似于<jsp:getProperty />)
<tiles:useAttribute name=“attriName” [classNname=“className”] [scope=“”] />说明:name 属性的名称 className 类的名称(完全) scope 四大范围 request,session,page,application
导入属性
<tiles:importAttribute name=“name” scope=“scope”>
说明:name 属性的名称 className 类的名称(完全) scope 四大范围 request,session,page,application
导入数据
<tiles:put name=“name” [beanScope=“scope”] beanName=“beanName” [beanProperty=“beanProperty”]/〉<tiles:putList name=“name”>
<tiles:add value=“value” />
</tiles:put>
分享到:
相关推荐
此外,还有`<bean:message>`显示资源文件信息,`<bean:resource>`装载Web资源到JavaBean,`<bean:struts>`访问Struts配置对象,以及`<bean:include>`包含Web资源。`<bean:define>`用于定义变量,`<bean:size>`获取...
它们包括`<bean:cookie>`、`<bean:define>`、`<bean:header>`、`<bean:include>`、`<bean:message>`、`<bean:page>`、`<bean:parameter>`、`<bean:resource>`、`<bean:size>`、`<bean:struts>`和`<bean:write>`等。...
在Struts2中,不再像Struts1.x那样将标签库分为html、bean、logic和tiles等类别,而是统一使用一个`<s>`前缀的标签库,只需在JSP页面头部引入`<%@ taglib prefix="s" uri="/struts-tags" %>`即可使用所有标签。...
- `<jsp:include>`:动态包含页面,可以实现页面内容的复用,例如引入头部和底部模板。 - `<jsp:forward>`:将请求转发到另一个页面,常用于处理请求分发。 - `<jsp:param>`:在`<jsp:include>`或`<jsp:forward>`...
- `<tiles:insertAttribute>`:插入组件到定义的布局中。 这些标签在实际开发中起到简化代码、提高可维护性和复用性的作用。例如,`<jsp:include>`和`<jsp:forward>`可以实现页面间的跳转和资源的重用;JSTL标签则...
文档中的代码片段展示了如何在JSP页面中结合使用JSP脚本和Struts标签,例如使用JSP的`<% %>`代码块来访问session中的数据,然后使用Struts标签显示这些数据。 ### 注意事项 由于文档片段是通过OCR技术扫描得到的,...
2. **模块化**:使用Tiles框架,通过Struts的`<tiles:insert>`标签实现页面的模块化和复用。 3. **错误处理**:利用Struts的`<html:errors>`标签显示全局错误信息,确保用户体验良好。 4. **性能优化**:合理使用...
9. ** javascriptstags**: 提供JavaScript支持,如`<s:includejs>`引入JavaScript文件,`<s:javascript>`用于在页面上生成JavaScript代码。 10. ** tiles2tags**: Struts 2中对Tiles 2的支持,增强了页面布局和组件...
- `<tiles:insert>`:插入一个定义在Tiles定义文件中的组件。 - `<tiles:put>`:在组件定义中放置内容或属性。 - `<tiles:definition>`:定义一个模板,可以复用。 6. **使用Struts标签库的优点** - 提高代码...
- Tiles框架允许开发者定义页面布局模板,通过`<tiles:insert>`标签插入具体的页面内容。 这些标签的使用大大简化了J2EE应用的开发,降低了代码的复杂度,提高了团队协作的效率。了解并熟练运用这些标签,对于任何...
Struts 1.x版本中,标签库被细分为多个类别,如html、bean、logic、tiles等,而到了Struts 2.0,标签库被统一管理,只需在JSP文件头部引入`<%@taglib prefix="s" uri="/struts-tags"%>`,即可访问所有标签。...
例如,通过`<s:include>`和`<jsp:include>`可以动态包含其他页面,`<c:set>`和`<c:remove>`用来设置和移除页面作用域内的变量。`<s:debug>`和`<c:dump>`则用于调试,显示当前页面的上下文信息。 总结来说,"Java ...
11. **Tiles Tags**: 如果使用了Tiles框架,Struts2也提供了与之配合的标签,如`<s: tiles>`,用于布局管理。 这些标签极大地提高了开发效率,减少了视图层与控制器层的交互复杂性。每个标签都配有示例,可以帮助...
8. **Tiles标签**:如果使用了Struts Tiles扩展,`<s:include>`和`<s:define>`标签可以帮助组合和重用页面组件,实现模板化设计。 9. **Internationalization (i18n)标签**:Struts提供了`<s:text>`和`<s:messages>...
- `<tiles:useAttribute>`:在JSP页面中使用组件属性。 6. **使用场景** - 用户认证和授权:通过`<logic:equal>`标签检查用户登录状态。 - 表单验证:利用`<html:errors>`展示错误信息,`<html:messages>`用于...
尽管随着Tiles的发展,Template标签的使用逐渐减少,但它仍提供了如`<tiles:insert>`和`<tiles:put>`等标签,用于插入和组合页面组件。 5. **Nested标签库** Nested标签库增强了其他Struts标签的嵌套能力,使复杂...
`<tiles:insert>`标签用于插入定义好的模板,`<tiles:put>`用于向模板传递属性。这种方式提高了代码的复用性和可维护性。 5. **struts-nested.tld**: Nested标签库是为了支持嵌套形式的HTML元素而设计的,特别是...