




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Struts1之HTML标签库详解12010-05-09 15:19Struts提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。标签库说明HTML 标签用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单Bean 标签在访问JavaBeans 及其属性,以及定义一个新的bean 时使用Logic 标签管理条件产生的输出和对象集产生的循环Template 标签随着Tiles框架包的出现,此标记已开始减少使用Nested 标签增强对其他的Struts 标签的嵌套使用的能力标签的公共特征使用固定属性名称的Struts 标签:属性说明id命名自定义标签创建时的脚本变量名。name指出关键字值,在该关键字下可以找到一个存在的bean 。如果给出了scope属性,则仅仅在scope中查找。否则,根据标准的顺序在各种scope中查找:(page, request, session, or application)。property指出bean 中的某个属性,可以在其中检索值。如果没有标明,则使用对象本身的值。scope定义了Bean在哪个范围(page, request, session, or application)中被查找。如果没有标明按顺序查找。脚本变量(见id)将在相同的范围中创建。Struts 标签也支持嵌套引用,例如:Property=foo.bar.baz这相当于进行下面的调用:getFoo().getBar().getBaz();或者做为setter:getFoo().getBar().setBaz(value);虽然Struts 标签的设计原意是为了避免使用scriptlet,scriptlet的表达式还能够提供给所有的Struts 标签使用。但请确保使用完整的表达式:错误:html:link href=/index.jsp正确:html:link href= / 表达式必须提供整个属性值Html 标签库1. 标签它有两个属性:locale和xhtml,两者都不是必需的。此行代码解析后:2. 说明:生成的结果取决于Struts应用程序所位于的服务器的locale。如果你将应用程序部署到一个不同locale的服务器,你不需要改变代码,Locale会自动调整。3. 标签:表示所包含页面的绝对位置。这个标签只有内嵌在head标签中才有效。此行代码解析后:4. 标签最重要的属性page:图象文件的路径,前面必须带有一个斜线。其它属性:heignt、width、alt。 5. 标签Click demo此行代码解析后: Click demo6. 标签:通过一个简单的标签,你就可以在一个JSP页面上显示完全自定义的错误信息。功能超强大!说明:这个标签在Request对象的属性集合中查找reserved key。如果它找到一个reserved key,它就假设这个key是一个String、或是一个String数组 (它包含在模块的MessageResources中查找的message keys)、或是类型为org.apache.struts.action.ActionErrors的一个对象。 如果在应用程序资源中存在相应的信息,那么就可以用下面这些可选的message keys: errors.header or errors.prefix:相应的信息在错误信息的单独列表前显示。 errors.footer or errors.suffix:相应的信息在错误信息的单独列表后显示。7. 标签系列使用标签时必须遵循一些规则:1. 标签中必须包含一个action属性,它是这个标签中唯一必需的属性。如果不具备该属性则JSP页面会抛出一个异常。之后你必须给这个action属性指定一个有效值。一个有效值是指应用程序的Struts配置文件中元素里的任何一个子元素的访问路径。而且相应的元素中必须有一个name属性,它的值是form bean的名称。 如果你有上述一个标签 ,那么你的Struts配置文件的元素中必须有一个如下显示为粗体的元素: . . . / 这就是说一个form标签是和form bean相关联的。2. 3. 任何包含在中用来接收用户输入的标签(、)必须在相关的form bean中有一个指定的属性值。比如,如果你有一个属性值被指定为“username”的标签,那么相关的form bean中也必须有一个名为“username”的属性。输入标签中的值会被用于生成form bean的userName属性。标签还有一些不是必须但很有用的“次要”属性。比如,你可以用focus属性来生成JavaScript,它会“定焦”(focus)到该form所包含的一个元素上。使用focus属性时你需要给它指定元素的名称。User Name: Password: 代码解析后:User Name: Password: 有没有看到这个标签库是如何建立JavaScript来定焦到password元素上的? 这也是该库让人着迷的地方之一。你不用担心如何在客户端进行编程,它会帮你自动生成。还可以看到,标签中method属性的缺省值是POST。标签、标签、标签、标签、标签、标签、标签:都有一个property属性,最后会被转换成HTML中的name属性,当然还有name和value属性。标签 该标签中的一个很重要的属性是redisplay,它用于重新显示以前输入到这个区域中的值。该属性的缺省值为true。然而,为了使password不能被重新显示,你或许希望将该属性的值设为false。标签和标签: red green blue遗补:1.)标签forward属性:链接到一个global forward上;action属性:链接到一个action mapping上;href属性:这个链接会转发给控制器,由控制器做决定;page属性:一个相对的链接。用page属性链接到action上: Linking with the page attribute.注意,上面的代码中你不必指定web的关联。相反的,如果你使用href属性,你就必须像下面所示指出web的关联(这里的关联就是struts-exercise): Using Href很明显,当你在相同的web应用程序中做链接是,它比page属性更加好。你也能用href在不同的服务器上创建链接:Using Href另一种链接到html-link.do的方法是用action属性: Using Action attribute你也可以以硬编码的方式使用参数: Double and long via hard coded changes或者使用paramId, paramName, and paramProperty属性: Boolean via paramId, paramName, and paramValue解析后的代码: Boolean via paramId, paramName, and paramValue另外,还能使用带name属性的Map来实现传递多个参数:. Float, int, and stringArray via name (Map)你也能够链接到Map类型的action上,上面的代码解析后的结果:2.) select和option标签 的属性:property与ActionForm中的某个属性对应;size显示option的数目;multiple默认为fales,表示不能多选,当设定为true时,property对应的ActionForm的属性必须为数组。的属性:key、local、bundle指定Resource Bundle中的内容。例如 Orange它和配置文件中的元素的key属性匹配 - 中配置的资源文件为HtmlSelectCperties,相关内容为 htmlselect.red=RED标签,提供了一组元素,在元素中可以包含多个元素。非常灵活,可以取得集合或数组中的值。例1 这指在coll的集合中存放了options,value指实际能被提交的值,label是显示给用户的值。例2 collection属性不被指定时,将使用表单相关的form bean,form bean中value属性存放option value,label属性值显示给用户。例3 这个意思是value值存放在名为valueBean的bean的vlaues属性中,它是一个collection;label值也是同样的意思。标签,和的用法很相似。例如 html:select property=custIdStruts之Bean标签库详解2010-05-09 15:24Bean 标签库 此标签库和Java Bean有很强的关联性,设计的本意是要在JSP 和JavaBean 之间提供一个接口。Struts 提供了一套小巧有用的标签库来操纵JavaBean和相关的对象:cookie、 header、 parameter、 define、write、message、 include、page、resource、size、struts。1. bean:cookie、bean:header、bean:parameter这三个标签用来重新得到cookie, request header和request parameter。bean:header和bean:parameter标签定义了一个字符串;bean:cookie标签定义了一个Cookie对象。你可以使用value属性做为默认值。如果找不到指定的值,且默认值没有设定的话,会抛出一个request time异常。如果你期望返回多个值的话,可把multiple属性设为true。/ 这段代码定义了一个名为sessionID的脚本变量,如果找不到一个名为JSESSIONID的cookie,那sessionID / 的值就被设置为JSESSIONID-ISUNDEFINED。2. 下面代码会输出一些Cookie对象的一些属性: 3. 下面是在request中输出所有header的例子: / 4. 下面是parameter的例子: / 此处定义了一个param2。5. 于其它标签结合使用:Youbean:write /-Welcome bean:write property=value/! / 根据cookie创建一个新的Bean,如果用户名称已经存储在cookie中,它就不显示为一个新用户。 6. 7. bean:define:有三个用途。一是定义新字符串常量:bean:define value=/bean:define scope=session value=/8. 二是复制一个现有的bean给新的bean: /定义脚本变量的类型,默认为Object9. 三是复制一个现有的bean的属性给新的bean: /toScope属性指新bean的scope,默认为page10. 上段代码的意思是把名为bar的bean的baz属性赋值给foo,foo的类型为String(默认)。11. bean:include这个标签和bean:include标签和相似,不同点就是它定义了一个可以复用的脚本变量。用id属性命名一个新的脚本变量,还支持forward、href、page和transaction.属性,和html:link中的属性意义一样。 然后你能够在多个地方(scope为page)调用: 12. 13. bean:message用来实现对国际化的支持的一个标签,配合java.util数据包中定义的Locale和ResourceBundle类来完成这个任务,用java.text.MessageFormat类配置消息的格式。 首先要指定资源文件的名称。这个文件会包含用默认语言编写的在程序中会出现的所有消息,这些消息以“关键字-值”的形式存储。文件需要存储在类路径下,路径要作为初始化参数传送给ActionServlet。 实现国际化的规定:所有的资源文件必须都存储在基本资源文件所在的目录中。基本资源文件包含的是用默认地区语言-本地语言编写的消息。如果基本资源文件的名称是ApplicationRperties,那么用其他特定语言编写的资源文件的名称就应该是ApplicationResources_perties(xx为ISO编码,如英语是en)。因此这些文件应包含相同的关键字,但关键字的值是用特定语言编写的。 然后,ActionServlet的区域初始化参数必须与一个true值一起传送,这样ActionServlet就会在用户会话中的Action.LOCALE_KEY关键字下存储一个特定用户计算机的区域对象。现在可以运行一个国际化的web站点,它可以根据用户计算机上的设置的区域自动以相应的语言显示。使用特定的字符串来替换部分消息:在资源文件中的定义:info.myKey = The numbers entered are 0,1,2,3标记的使用:Jsp页面的显示:The numbers entered are 5,6,7,8 / 最多支持4个参数14. 15. bean:page:把Jsp中的内部对象做为脚本变量。 16. 17. bean:resource:获得应用程序的资源,这个资源可以是一个String或从java.io.InputStream中读入。使用ServletContext.getResource()ServletContext.getResourceAsStream() 方法检索web应用中的资源,如果在检索资源时发生问题,就会产生一个ruquest time异常。 18. 使用input属性时,资源会做为一个InputStream,如果不指定就被当成一个String。19. bean:size:得到存储在array、collection或map中的数目,类型为java.lang.Integer。20. 21. bean:struts:复制Struct 对象(三种类型)给新的bean,scope为page。 22. 23. bean:write:以字符串形式输出bean的属性值。filter属性:设为true时,将HTML保留字转换为实体( 转换为 <);ignore属性:如果对象不存在,不会抛出异常。struts的LOGIC标签详解2010-05-09 15:25Struts的Logic标签可以根据特定的逻辑条件来判断网页的内容,或者循环遍历集合元素,它和HTML,Bean标签是Struts应用种最常用的三个标签.它的功能主要是比较运算,进行字符串的匹配,判断指定的内容是否存在,循环遍历集合,进行请求转发和重定向,下面具体的说明标签的用途:变量等于指定的常量变量不等于指定的常量变量小于指定的常量变量小于或者等于指定的常量变量大于指定的常量变量大于或等于指定的常量以上这些标签都很类似,有共同的属性,cookie属性指定cookie属性的值,然后用value设置的常量进行比较.header属性设置header请求头的值,也是通过value属性设置的值进行比较.parameter属性设置一个请求参数,然后也是通过value属性设置的值进行比较.name属性设置一个变量,然后用value比较.如果同时设置了name和property属性,此时name属性指定已经存在的JavaBean,property属性指定Bean的属性.这个标签感觉十分简单,用法也十分单一,下面研究一下进行字符串匹配的标签和判断特定内容的标签.标签是判断变量种是否包含常量字符串的,也判断是否不包含字符串的,用name属性定义一个字符串变量,然后用value属性的值去判断变量是否包含这个字符串或者是不包含这个字符串,判断成功返回true.和标签可以判断指定的变量是否为空的字符串,可以通过name属性来判断一个字符串是否为null.例如是请求参数的字符串.和标签可以判断指定的对象是否为空,这个标签的属性很多.cookie属性判断Cookie是否存在.Header属性判断HTPP请求头是否存在.role属性是判断当前的权限的用户是否是指定的安全角色.user属性是判断当前通过权限验证的用户是否拥有指定的用户名.parameter属性是判断请求的参数是否存在.name属性是用来判断指定的Bean是否存在.同时设置name和property属性就是判断Bean种的具体属性是否存在了.和标签是用来判断是否在request范围内的特定的ActionMessages或者是子类ActionErrors对象.name属性是用来检索ActionMessages对象的key,property指定从ActionMessages集合对象中检索某条消息key也就是具体的ActionMessage对象.进行循环遍历Logic标签是Logic标签库中最复杂的标签,也是用途最广泛的标签,它能够在一个循环中遍历数组,Collection,Enumeration,Irerator或者Map中的所有元素1) 遍历集合的标签的name属性指定需要进行遍历的集合对象,它每次从集合中检索出一个元素,然后存放在page范围内,并以id属性指定这个字符串来命名这个元素,最好是在里面嵌套一个标签,把刚刚遍历的第一个id指定的字符串输出,然后在循环在输出.length属性需要遍历的元素的数目,如果没有设置length属性,就遍历集合中的所有元素.offset属性指定开始遍历的其实位置,默认值是0.indexId属性定义一个代表当前被遍历元素的系列号,这个变量存放在page范围内,可以被标签访问输出输出的是int的数字.例如等.可以用户输出输出的元素的系列号.2) 遍历Map是通过标签,name属性指定一个HashMap,存放在request范围,然后赋给id指定的变量,indexId可以指定索引编号,然后通过标签输出出来.在HashMap的每一个元素都是一个集合对象,所以可以嵌套使用.就是说这个标签既可以把Collection的元素弄出来负给一个变量也可以弄Map的.所以说它的功能强大.还有一个collection属性可以设置一个表达式,这个表达式返回的结果可以作为,标签输出的集合或者Map.这个属性类似name属性.最后研究一下进行请求转发和重定向的Logic标签,标签用于请求转发,它的name属性指定转发的目标,与Struts配置文件中的元素和的子元素元素匹配.简单的说就是标签的name属性定义的值,要去找到子元素元素的匹配的name属性,然后通过path指定的路径进行转发.重定向用标签它的forward,href和page属性指定重定向的目标,这几个属性和标签的属性用法十分相似.关于标签的部分我就说到这里,因为我个人觉得在Struts中最常用的无非也就是这三个标签库了.我以前还写过一个Struts的分页应用,过些天继续发布到我的Blog上.struts的LOGIC标签的多层迭代logic:Iterator 标签(以下简称 “ 该标签 ” )是 Struts 里非常常用的一个标签,其作用在于循环显示给定容器对象中的值。如此常用的标签,其源代码当然需要拿出来研究一下,以下列举几条研究成果: 1 、该标签内部使用 Collection 来表示给定的容器,所有的给定容器对象(如 ArrayList , Map 等)都会被其转化成为 Collection,Collection 实际就是 Map 和 List 的父类 。 2 、该标签自己维护循环索引,不用程序员管理索引 3 、该标签常见的几个属性如下: name 、 property 、 scope 、 id对应 Struts 给出的 Api 说明如下: name: 包括要遍历 Collection 的 Jsp 页面的 bean 的名字(如果 property 没有被定义),或者是那些通过 getter 方法获得属性的 Jsp 中的 Bean 的名字,这些 getter 方法返回的是 Collection (如果 property 定义了)。 property: 在 name 命名的 Jsp bean 中定义的属性的名字,通过 getter 方法返回一个 Collection scope: 指示到哪里去寻找 name 为名字的 bean ,如果没有定义缺省为 any scope id: 如果 Collection 非空的话,在每次遍历时候 Collection 中每个元素的名字。其中除了 id 每个元素均为 Rt expr ,这儿的 rt expr 的意思就是 Run Time Expression 。明确的说就是,如果你对一个 Attribute 的 指定为 true ,你就可以在这样的属性中使用 之类的东东。这个配置文件在 tld 中。只有 id 是必须要说明的。关于 Api 说明的说明: id 只是一个临时标识,在下面的 bean:write 里面出现的 name 属性要和 id 一致才能打印出 bean:write 的 property ,而此 property 就是在 iterator 中的属性。举例说明以下代码生成一个阶梯状表格系统 资源 操作 soft3 res3 opt3 soft12 res12 opt1211 soft11 res11 opt1111在此之前传来一个 request.getAttribute(userPurview) ,所以有在第一个 logic 中的 userPurview, 就是在这个 request 里面寻找 userPurview返回的是一个 list 系统 资源 操作 /request 中的数值为” userPurview ”作用范围在 request 中 , 取的 ID 名为 targetSys / 这个 id 可以随便起名,但是要注意下文使用的一致性 / 此处 name 和上面 id 保持一致, property 就是第一个 list 里面的元素 结论:多级迭代和单层差不多,唯一注意的就是 id 和 bean:write 中的 name 的对应,上级 logic 的 id 与下级 logic 的 name 对应,并且取出来的要是个 Collection,name 和 id 不一定实际需要这个 bean ,都是虚拟的。Struts的logic标签(1)empty标签类名:org.apache.struts.taglib.logic.EmptyTag标签体:bodycontent=JSP引用logic:empty属性 attribute:name,property,scope功能:判断对象的值是否为空(2)equal类名:org.apache.struts.taglib.logic.EqualTag标签体:bodycontent=JSP引用logic:equal属性 attribute:cookie,header,name,parameter,property,scope,value功能:等于比较符(3) forwardorg.apache.struts.taglib.logic.ForwardTag标签体:bodycontent=empty引用logic:forward属性 attribute:name功能:页面导向,查找配置文件的全局forward(4) greaterEqual类名:org.apache.struts.taglib.logic.GreaterEqualTag标签体:bodycontent=JSP引用logic:greaterEqual属性 attribute:cookie,header,name,parameter,property,scope,value功能:大于等于比较符(5)greaterThan类名:org.apache.struts.taglib.logic.GreaterThanTag标签体:bodycontent=JSP引用logic:greaterThan属性 attribute:cookie,header,name,parameter,property,scope,value功能:大于比较符(6) iterator类名:org.apache.struts.taglib.logic.IterateTag标签体:bodycontent=JSP引用logic:iterator属性 attribute:collection,id,indexId,length,name,offset,property,scope,type功能:显示列表为collection的值(List ,ArrayList,HashMap等)(7)lessEqual类名org.apache.struts.taglib.logic.LessEqualTag标签体:bodycontent=JSPlogic:lessEqual属性 attribute:cookie,header,name,parameter,property,scope,value功能:小于等于比较符(8)lessThan类名:org.apache.struts.taglib.logic.LessThanTag标签体:bodycontent=JSPlogic:lessThan属性 attribute:cookie,header,name,parameter,property,scope,value功能:小于比较符(9)match类名:org.apache.struts.taglib.logic.MatchTag标签体:bodycontent=JSP引用logic:match属性 attribute:cookie,header,location,name,parameter,property,scope,value功能:比较对象(10)messagesNotPresent类名:org.apache.struts.taglib.logic.MessagesNotPresentTag标签:bodycontent=JSP引用logic:messagesNotPresent属性 attribute:name,property,message功能:ActionMessages/ActionErrors对象是否不存在(11)messagePresent类名:org.apache.struts.taglib.l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年关酒店安全培训课件
- 物业管理租赁合同书5篇
- 平面设计的色彩课件
- 体育赛事商业开发经纪合同5篇
- 平面与回转体相交课件
- 农发行郑州市新郑市2025秋招数据分析师笔试题及答案
- 农发行乌兰察布市集宁区2025秋招信息科技岗笔试题及答案
- 2025年工业互联网平台数据清洗算法在工业互联网平台数据采集中的应用报告
- 农发行钦州市浦北县2025秋招笔试创新题型专练及答案
- 私募股权投资热点行业2025年分析:退出策略与市场前景报告
- 2025年中小学国防教育知识竞赛活动考试题库200题(含答案)
- 校长讲法治课课件
- 村播培训直播课件
- 2025河南新乡长垣市公证处招聘合同制人员5人考试参考题库及答案解析
- 颈椎骨折课件导图
- 2025至2030中国工业云平台行业发展研究与产业战略规划分析评估报告
- 2025餐饮合伙经营合同协议书
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 故障录波器课件
- DB32-T 2665-2014机动车维修费用结算规范-(高清现行)
- 《区域经济学》讲义(1)课件
评论
0/150
提交评论