2022年StrutsTile学习笔记.docx
名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习必备 欢迎下载期望 Tile 完成的功能:在一个 Web应用程序中, 有许多 jsp 页面,但这些 JSP页面可能使用相同的文件头,文件尾;在每个 JSP中,都要写这些头和尾;期望TILE 能供应一种方式让各个JSP页面的公共部分,与不同的部分分别;把公共部分提取出来单独作为一个文件存放;但不是用在被分别的 JSP中 include 公共页面的方式, 这样每个 JPS页都要使用 INCLUDE指令,工作量太大;用了太多的 INCLUDE指令;而是用其他方式;例如公共的部分;期望这样也能让 WEB页面,在肯定程度上实现,内容和形式的分别;便于修改,让程序更加的松偶合;自: Jakarta Struts中文版( Jakarta Struts编程)这答应在任意具有这种通用格式的页面上重用该模板;一旦规划出如何供应特定页面的主体内容,就就可以反复重用这个模板; 然后,这个文件能掌握多重页面的布局; 假如需要修改该站点的布局, 这是惟一需要修改的文件 那是使用一个基于模板方法的真正动力;自: Jakarta Struts 中文版( Jakarta Struts 编程)Tiles 所能完成的功能: 模板性能动态页面构造和装载屏幕定义支持 tile 支持国际化每个用户都可以自定义布局;和布局重用支持多重通道使用 Tiles框架:(使用 tiles-defs.xml声明模版实例)1;起用 TILE 在 struts应用程序中加入 tiles插件,请在 struts配置文件中加入以下plug-in元素: <plug-in className="org.apache.struts.tiles.TilesPlugin" > <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> <set-property property="definitions-debug" value="2" /> <set-property property="definitions-parser-details" value="2" /> <set-property property="definitions-parser-validate" value="true" /></plug-in> 在 plug-in 元素中,您可以加入几个 set-property 元素给 Plugin 类传入附加的参数; definitions-config 参数指定包含 tiles使用了多个文件名,就它们之间用逗号分隔;定义的 xml 文件;假如 definitions-debug 参数指定调试的层次,答应值为: 0 :不输出调试信息; 1 :供应部分调试信息;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习必备 欢迎下载 2 :供应完整的调试信息;缺省值为 0; definitions-parser-details参数指定当定义文件被解析时所需要的调试信息的层次,该值传给 Commons Digester ;所答应的值同 definitions-debug 参数,缺省值为 0; definitions-parser-validate参数指明解析器是否验证Tiles配置文件,答应值为 true 和 false ,缺省值为 true ;仍有一个叫做 definitions-factory-class的参数没有显示出来;您可以创建一个自定义工厂,然后在这里给出类名,缺省值为 org.apache.struts.tiles.xmlDefinition.I18NfactorySet;留意:用逗号分隔多个配置文件2;配置文件的语法格式<put name="" value="" /> 标签使用说明, value 可以是 .jsp ,可以是已经存在的布局;或字符串,假如等于字符串对应的语句就不是 <tiles:getAsString name="title"/> 其他的是 <tiles:insert attribute="top" ></tiles:insert><hr/> value 的属性可以 .do ;request 中;显示是完全正常的;可以使用.do 并且参数也能够传入到被包含页面的也就是说被包含页面假如是 配置文件写成:.do ,其 form 也能够被正常组装 <definition name="index.layout" path="/index.jsp"> <put name="title" value="Sample Page Tiles Title" /> <put name="top" value="/top.jsp" /> <put name="main" value="main.jsp" /> <put name="bottom" value="/bottom.do" /> index.jsp </definition> 里加入 <tiles:insert attribute="top" ></tiles:insert><hr/> 在 top.jsp 中就可以获得提交到 /index.do 转向了 index.layout 的参数;直接恳求框架 .jsp 文件可以吗 jsp 内使用了 tiles:insert 的页面不能在地址栏中直接调用 jsp ,会抛出 javax.servlet.jsp.JspException: Error - tag.getAsString : component context is not defined. Check tag syntax 调用<tiles:getAsString name="title"/>或 java.lang.NullPointerException 时 at org.apache.struts.taglib.tiles.InsertTag.processAttributeInsertTag.j细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习必备欢迎下载时ava:689 调用<tiles:insert attribute="top" ></tiles:insert>t反常正确的设置是在 struts-config.xml 里配置 <action path="/index" type="org.apache.struts.actions.ForwardAction" parameter="index.layout"> </action> parameter= 要设置 tiles-defs.xml 里的 <definition 的 name;假如写成.jsp ,也会抛出与直接拜访 .jsp 一样的反常; <tiles:insert attribute="top" ></tiles:insert> 对 top 里的内容 <% %>和<% %>里的内容进行编译;与一般的 .jsp 是一样的;直接恳求 <definition name="index.layout"中的 name属性也找不到连接;也就是说使用了 tile后,只能通过 .do 的方式拜访 definition标签里定义的页面;value 里的路径支持相对路径,全部路径的写法都支持相对路径;(仍未证明)留意,假如被装入的页面,速度比较慢就能看出来,主页面在 tiles:insert前的部分,会先在浏览器中显示出来,等 tiles:insert 的 jsp 执行完后才显示其中的内容;这是个有用的地方,在页面特殊大的时候,可以让页面一块一块的显示;直接用 jsp 实现这个功能的代码是什么在 jsp 页面中加入 out.flush;,就可以实现让 out.flush; 前边的内容在没有全都恳求完 jsp 的情形下显示出来;value="2" 的意义是意味着在 jsp 页面中只能通过 <tiles:getAsString name="name"/> 的方式拜访这个值 put 标记;putList 标签的使用方法? <add value="common.menu.printer.friendly" />子标签的使用方法? <item value="Tiles Home" link="/index.jsp" /> 子标签的使用方法? <definition name="$YOUR_DEFINITION_HERE"> 含义?假如 <put name="bottom" value="bottom.jsp" /> 里的 value 是一个无效的连接,在页面只是不把这个 name装入而已,不会抛出反常;提示: <2006-5-24 下午 10 时 26 分 43 秒 CST> <Error> <HTTP> <BEA-101214> <Included resource or file "/Tile/bottom.jsp" not found from requested resource "/Tile/index.jsp".> 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习必备 欢迎下载Tile 的 include 究竟是相当与从浏览器取得页面信息直接把被装入的 .jsp 文件,在形成 .java文件前,插入到主 .jsp文件中那+ 装入的内部机制从得到的 .jsp 的.java 的那 答:文件看,仍是调用标签实现的; 那么标签中有是如何实现Jakarta Struts 编程:静态内容与动态内容JSP 可以包含两种不同类型的内容:静态的和动态的;如下所示的include命令:<% include file="include/copyright.inc" %> 包含翻译阶段或者编译阶段的目标页面的源地址;因此,使用 include 指令不可能包含运行期的内容;JSP include 指令将资源作为一个静态对象来对待,并且在该页面中逐字地包含此资源的上下文;与上面直接对比,如下所示的 include 操作:<jsp:include page="include/copyright.inc"/> 将上述资源作为一个动态对象处理;恳求发送给该资源,而且包含处理的结果;模板使用一个动态方法以便可以评估和包含运行期的表达式;可以认为是用动态的方式得到被装载的内容的;但这种装载并不是我有时采纳的用 址方式相同)的装载方式;URL猎取文件(与在 IE 地址栏中输入地传参数的能否直接传入到被包含的文件中;可以传送到被包含的文件中;框架 .jsp文件,与 struts-config.xml,与 tiles-defs.xml的关系?框架 .jsp (或叫模版 .jsp )规定布局是什么样的;包含了占位符和布局(如何排列占位符) 2 种元素;tiles-defs.xml 中定义了用那些内容代替模版中的占位符;得到一个模版的实例,在这里是完整的 .jsp 文件;并给这个文件起了个 name供 Action 调用;struts-config.xml 文件把原先的 .jsp 文件,替换成 tiles-defs.xml 中的一个模版的实例的名字;并且也只能在这里调用模版实例的 name;改动 tiles-defs.xml,需要重起吗改动后需要重起服务器才能改动生效参考文章:Jakarta Struts 编程:使用 Tiles ,其次部分 .htm 之 Jakarta Struts 编程:使用 Tiles ,其次部分写的挺简略的, 没有把 Tile 的强大功能讲出来,但可以有个大致的明白;留意里边的例子与下一篇文章不同;博客园 - 八进制 - Struts使用 tiles治理界面遇到困难 .htm 对于一些常常遇到的问题给出了答案细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 6 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习必备 欢迎下载 value 可以等于 .do 在不同配置文件之间继承的问题;Jakarta Struts 编程:使用 Tiles框架(第三部分)纯粹使用 Tiles标签:(使用 .jsp文件声明模版实例)使用方法;1;定义一个模板 index.jsp html 代码 页面里边的内容大致如下: <tiles:insert attribute="top" ></tiles:insert><hr/> <tiles:insert attribute="main" ></tiles:insert><hr/> <tiles:insert attribute="bottom" ></tiles:insert><hr/> html 代码 留意:这里指定引入top 带没有定义 top 是什么;在下一个页面定义2;定义另一个 tiles_defs.jsp 的 jsp 页面,这个页面的作用就是使用模板,生成一个可用<% page language="java" pageEncoding="GBK"%> <% taglib prefix="tiles" uri="WEB-INFstruts-tiles.tld" %> <tiles:insert page="/index.jsp" flush="true"> <tiles:put name="title" value="Sample Page Tiles Title" /> <tiles:put name="top" value="/top.jsp" /> <tiles:put name="main" value="/main.jsp" /> <tiles:put name="bottom" value="/bottom.do" /> </tiles:insert> dfd 以上 jsp 页面的文件名不代表任何意义;3;功过浏览器拜访 tiles_defs.jsp,就会得到被 tiles_defs.jsp 里的 put 标签的 value 值,替换掉的 index.jsp 页面的内容;4;可以利用 index.jsp 这个模版,生成 tiles_defs2.jsp,用其他内容替换index.jsp 里的<tiles:insert attribute="top" > 等的位置;参考文章:prog_jak_struts-14.pdf Jakarta Struts 编程 一书的第 14 章;笼统的叙述了这 2 中使用 Tiles 的方式,侧重“ 纯粹使用 Tiles 标签” 的方式;并且对 Tiles 的全部标签做了具体的介绍CSDN 文档中心:基于 Tiles 框架 Struts 框架的 UI 设计几种组织 HTML和 JSP视图组件 .htm 具体的介绍的了从 jsp 到 Tiles 的使用过程;与上一个资料结合让我明白了 " 纯粹使用 Tiles标签 "的 Tiles使用方式;中,并且方式 1:使用 Tiles框架纯粹与 方式 2:使用 Tiles标签 的异同:方式 1 只不过是把 tiles_defs.jsp这类文件单独放到 tiles_defs.xml起一个 name,供 Action 调用;所以 tiles_defs.xml中的 xml 写法,与 tiles_defs.jsp所用的标签,基本相通; 第 5 页,共 6 页 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习必备 欢迎下载区分 1:put 标签的 value 属性的值在 .jsp 中,/index.jsp 与 xml 中的 /index.jsp是不同的; .jsp 中会越过项目名(是错误的);xml 中不会; .jsp 应当使用相对路径;区分 2:xml 中使用的是 TilesDefinatation(定义),在 .jsp 中使用的是tiles:insert 标签;是不同的; Tiles 定义要比 tiles:insert 强大些;.jsp 中也有 tiles:definatation,这个与 xml 里的 definatation 标记是一样的;区分 3:在 jsp 中,只有 tiles:insert 才能生成一个模版的实例;但在 xml 一个模版的定义,可以被直接引用,已经相当于一个模版实例了;模版的定义:在框架包或者窗口中如何显示内容的布局治理器,内容的显示方式;模版就是一种布局; 布局就是那么模版中必定包含的部分, 一个是布局, 一个是占位符; 占位符的作用是用需 要的内容来代替占位符的位置;布局就是定义了如何排列占位符;Jakarta Struts 编程对模版的定义:什么是模板模板就是一个使用JSP 自定义标记符库描述页面布局的JSP 页面;模板充当了定义的角色,它定义了应用程序页面的外观而不指定内容;容在运行期, 用户可以将内插入到模板页面;并且,一个或多个页面可以使用同一个模板;遗留问题:配置文件和 Tiles标签库中;仍没有对每个元素使用方法特别清晰,只知道一些 第 6 页,共 6 页 基本的,可以在开发的时候具体讨论?putlist定义后的使用方法仍要讨论一下?这个元素比较常见;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - - - - - - - -