收藏 分享(赏)

struts1标签.doc

上传人:hwpkd79526 文档编号:9265425 上传时间:2019-07-31 格式:DOC 页数:26 大小:98KB
下载 相关 举报
struts1标签.doc_第1页
第1页 / 共26页
struts1标签.doc_第2页
第2页 / 共26页
struts1标签.doc_第3页
第3页 / 共26页
struts1标签.doc_第4页
第4页 / 共26页
struts1标签.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、Struts1 标签库 说明Struts 提供了五个标签库,即:HTML、Bean 、 Logic、Template 和 Nested。HTML 标签 : 用来创建能够和 Struts 框架和其他相应的 HTML 标签交互的 HTML 输入表单 Bean 标签: 在访问 JavaBeans 及其属性,以及定义一个新的 bean 时使用 Logic 标签: 管理条件产生的输出和对象集产生的循环 Template 标签:随着 Tiles 框架包的出现,此标记已开始减少使用 Nested 标签: 增强对其他的 Struts 标签的嵌套使用的能力标签的公共特征 styleId:命名自定义标签创建时的脚

2、本变量名。 name :指出关键字值,在该关键字下可以找到一个存在的 bean 。如果给出了 scope 属性,则仅仅在 scope 中查找。否则,根据标准的顺序在各种 scope 中查找。标准顺序为 (page, request, session, or application)。 property :指出 bean 中的某个属性,可以在其中检索值。如果没有标明,则使用对象本身的值。 标签、标签、标签、标签、 标签、标签、 标签都有一个 property 属性,最后会被转换成 HTML 中的 name 属性 scope :定义了 Bean 在哪个范围(page, request, sessi

3、on, or application)中被查找。如果没有标明按顺序查找。脚本变量(见 styleId)将在相同的范围中创建。 说明: 1. Struts 标签也支持嵌套引用。eg:property=“foo.bar.baz“这相当于进行下面的调用:getFoo().getBar().getBaz();或者做为 setter:getFoo().getBar().setBaz(value); 2. 虽然 Struts 标签的设计原意是为了避免使用 scriptlet,scriptlet 的表达式还能够提供给所有的 Struts 标签使用。但请确保使用完整的表达式。错误:/index.jsp正确:

4、/ 表达式必须提供整个属性值 Html 标签库struts 标签使用举例-HTML1、 html:base 表示所包含页面的绝对位置。这个标签只有内嵌在 head 标签中才有效。此行代码解析后:同 html 的 base 元素。Html 的 base 的作用:2、 html:cancel该标签生成一个取消按钮。当点击该按钮后 action servlet 会绕过相应的 form bean 的 validate()方法,同时将控制权交给相应的 action。在 action 中可使用 Action.isCancelled(HttpServletRequest)方法判断是否被取消了。如果返回tru

5、e 表示这个 action 被取消了,否则表示这个 action 没有被取消。eg. 取消3、 html:form1) 标签中必须包含一个 action 属性,它是这个标签中唯一必需的属性。如果不具备该属性则 JSP 页面会抛出一个异常。之后你必须给这个 action 属性指定一个有效值。一个有效值是指应用程序的 Struts 配置文件中元素里的任何一个子元素的访问路径。而且相应的元素中必须有一个 name 属性,它的值是 form bean 的名称。如果你有上述一个标签 ,那么你的 Struts 配置文件的元素中必须有一个如下显示为粗体的元素: / 这就是说一个 form 标签是和 form

6、 bean 相关联的2) 任何包含在中用来接收用户输入的标签(、 、 )必须在相关的 form bean 中有一个指定的属性值。比如,如果你有一个属性值被指定为“username”的标签,那么相关的 form bean 中也必须有一个名为“username”的属性。输入标签中的值会被用于生成 form bean 的 userName 属性。3)可以用 focus 属性来生成 JavaScript,它会 “定焦”(focus)到该 form 所包含的一个元素上。使用 focus 属性时你需要给它指定元素的名称。User Name: Password: 代码解析后:User Name: Passw

7、ord: 4、 html:select 标签该标签生成一个 select 元素。multiple 属性决定是否为多选。如果指定了 multiple=“true“则为多选,此时对应的属性应该是一个数组。否则,此时对应的属性应该是标量。注意:为了正确的处理未作选择的情况,在 ActionForm 中的 reset()方法中必须将标量属性设置为默认值而将数组的长度置为0。另外的一个重要问题就是 struts 如何生成 option 元素了,这个任务 struts 交给了 html:option、html:options 和html:optionsCollection 三个标签。1)html:opti

8、on该标签生成一个 HTML 的 option 元素。该标签必须嵌在 html:select 标签中。它的显示文本来自其标签体,也可以来自于资源文件。eg. red blue来自于资源文件:它和配置文件中的元素的 key 属性匹配 中配置的资源文件为 HtmlSelectColors.properties,相关内容为 htmlselect.red=RED2)html:options该标签生成多个 HTML 的 option 元素。该标签必须嵌在 html:select 标签中。A.指定 collection 属性的方式举例如下:(label) 注意:orgCollection 是在某个引藏对象

9、范围(pageContext,rqeust,) 内存在的B.未指定 collection 属性方式的举例如下:3)html:optionsCollection 标签该标签生成多个 HTML 的 option 元素。其功能和 html:options 标签的相同。注意:orgs 一定是在 ActionForm 里面出现的一个 Collection 类型的 Bean5、 html:checkbox 标签该标签生成 checkbox 元素egbbccdd在名为 studentForm 中有一个名为 loves 的 String 类型的数组来与此标签对应,这样才能在 studentForm 中接收到该

10、标签的多选值6、 html:multibox 标签该标签用法同 html:checkbox8、 html:radio 标签该标签生成 radio 元素eg男在名为 studentForm 中有一个名为 sex 的 String 类型的属性来与此标签对应,这样才能在 studentForm 中接收到该标签的单选值9、 html:img 标签最重要的属性 page:图象文件的路径,前面必须带有一个斜线。其它属性:heignt、width、alt。10、html:link 标签Click demo此行代码解析后:Click demo11、html:html 标签它有两个属性:locale 和 xht

11、ml,两者都不是必需的。此行代码解析后:说明:生成的结果取决于 Struts 应用程序所位于的服务器的 locale。如果你将应用程序部署到一个不同 locale 的服务器,你不需要改变代码,Locale 会自动调整。12、html:errors(不常用)通过一个简单的 标签,你就可以在一个 JSP 页面上显示完全自定义的错误信息。功能超强大!说明:1. 这个标签在 Request 对象的属性集合中查找 reserved key。如果它找到一个 reserved key,它就假设这个 key 是一个String、或是一个 String 数组 (它包含在模块的 MessageResources

12、中查找的 message keys) 、或是类型为org.apache.struts.action.ActionErrors 的一个对象。2. 如果在应用程序资源中存在相应的信息,那么就可以用下面这些可选的 message keys: errors.header or errors.prefix:相应的信息在错误信息的单独列表前显示。 errors.footer or errors.suffix:相应的信息在错误信息的单独列表后显示。13、html:passwordeg:该标签中的一个很重要的属性是“redisplay“,它用于重新显示以前输入到这个区域中的值。该属性的缺省值为 true。然而

13、,为了使 password 不能被重新显示,你或许希望将该属性的值设为 false。struts 标签使用举例-logic1、 logic:empty 该标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况:1)当 Java 对象为 null 时;2)当 String 对象为“时; 3)当 java.util.Collection 对象中的 isEmpty()返回 true 时;4)当 java.util.Map 对象中的 isEmpty()返回 true 时。eg. . 该句等同于:if (userList.isEmpty() . 2、 logic:notE

14、mpty该标签的应用正好和 logic:empty 标签相反,略。3、 logic:equal该标签为等于比较符。eg1. 比较用户的状态属性是否 1,若为 1,输出“启用“;启用eg2. 如果上例中的 value 值是动态获得的,例如需要通过 bean:write 输出,因 struts 不支持标签嵌套,可采用 EL 来解决该问题。4、 logic:notEqual该标签意义与 logic:equal 相反,使用方法类似,略。5、 logic:forward该标签用于实现页面导向,查找配置文件的全局 forward。eg. 6、 logic:greaterEqual为大于等于比较符。eg.

15、当某学生的成绩大于等于 90 时,输出“优秀”:优秀7、 logic:greaterThan此为大于比较符,使用方法同 logic:greaterEqual,略;8、 logic:lessEqual此为小于等于比较符,使用方法同 logic:greaterEqual,略;9、 logic:lessThan此为小于比较符,使用方法同 logic:greaterEqual,略;10、 logic:match此标签比较对象是否相等;eg1. 检查在 request 范围内的 name 属性是否包含“amigo“串: 中有一个“amigo” 串。eg2. 检查在 request 范围内的 name 属

16、性是否已“amigo”作为起始字符串:以“amigo” 作为起始字符串。eg3. 你运行的是 Windows 系统11、 logic:notMatch此标签用于比较对象是否不相同,与 logic:match 意义相反,使用方法类似,略。12、 logic:messagePresent该标签用于判断 ActionMessages/ActionErrors 对象是否存在;eg. 如果存在 error 信息,将其全部输出:13、 logic:messagesNotPresent该标签用于判断 ActionMessages/ActionErrors 对象是否不存在,使用方法与 logic:messag

17、ePresent 类似,略14、 logic:present此标签用于判断 request 对象传递参数是否存在。eg1. user 对象和它的 name 属性在 request 中都存在时,输出相应字符串:user 对象和该对象的 name 属性都存在eg2. 若有一个名字为“user”的 JavaBean,输出对应字符串:有一个名字为“user”的 JavaBean。eg3. we got a user-agent header.15、 logic:notPresent此标签用于判断 request 对象传递参数是否不存在,意义与了 logic:present 相反,使用方法类似,略。16

18、、 logic:redirect该标签用于实现页面转向,可传递参数。eg1. 17、 logic:iterator用于显示列表为 collection 的值(List ,ArrayList,HashMap 等)。eg1. 逐一输出用户列表(userlList) 中用户的姓名:eg2. 从用户列表中输出从 1 开始的两个用户的姓名 :.eg3. logic:iterator 标签的嵌套举例. struts 标签使用举例-BEAN1、 bean:write 该标签将指定的 bean 的属性值写到当前的 JspWriter 中,并且可以对输出进行格式化。例如在 struts 的 action 着那个

19、通过 request.setAttribute(“names“, “dddd“);将属性值 dddd 中放入 names,可在 jsp 页面中通过 bean:write 将 names 属性输出。eg:对于日期型的属性,可在 bean:write 标签中指定 format 来输出日期格式,eg:如果要输出某对象的某属性,例如属性名为 person 的对象的 name 属性,可通过如下方式:eg:2、 bean:message该标签用来从指定的 locale 中取回国际化的消息并输出,在这个过程中我们还可以传递 5 个以内的参数。 message key 可以通过 key 直接指定,也可以通过

20、name 和 property 间接的指定。eg1. 该句要求在资源文件中有 welcome.title.content 的键值对(资源文件 ApplicationSource.properties 在 struts的配置文件中指定)。eg2. 传递参数信息的 bean:message 的用法,在资源文件中 greeting 的配置举例如下: greeting = hello, 0, 1. 3、 bean:parameter 该标签取回请求中的参数值。如果没有指定 multiple 属性则依据刚取回的值创建一个 String 类型的 bean,否则根据刚取回的值创建一个 String类型的数组

21、。然后用 id 属性值将 String 或 String绑定到 page 作用域中 (这种绑定是为了其它标签能够使用该值) ,并创建对应的 scripting 变量( 这种变量是为了 JSP 脚本能够使用该值) 。 eg. 当请求如下的 jsp 页面时:http:/localhost:8080/test.jsp?orgId=1 在 test.jsp 页中可通过如下方式获得 orgId 参数: 4、 bean:size 该标签创建一个 java.lang.Integer 类型的 bean,该值为该标签指定的 Collection 或 Map,List 中所含元素的个数。它可和 logic:ite

22、rate 标签配合使用。 如下语句输出 userList 属性中元素的个数: eg. struts 标签使用举例 -NESTEDStruts Nested 标签库的分两部分:1)一部分用于表达 JavaBean 之间的嵌套关系2)另一部分能够在特定的嵌套级别提供和其他 Struts 标签相同的功能。 a) ,定义一个新的嵌套级别 b) ,输出当前嵌套级别信息 c) 标签可以表达 JavaBean 之间的嵌套关系eg.以三个 JavaBean 为例,分别是:PersonForm Bean,Person Bean 和 Address Bean,在 PersonForm Bean 中包含一个 Per

23、son Bean 类型的属性 person,在 Person Bean 中又包含一个 Address Bean 类型的属性 address。则用 nested 标签表示如下:定义两个标签,第一个标签嵌套在 标签中,如下:LastName:.以上标签的上层 JavaBean 位于 表单标签对应的 PersonForm Bean,标签的 property 属性为“person“,代表 PersonForm Bean 的 person 属性,这个person 属性代表 Person Bean,因此嵌套在 标签内部的 Nested 标签都相对于这个 Person Bean,例如第一个标签的 prope

24、rty 属性”lastName“,代表 Person Bean 的 lastName 属性。第二个标签嵌套在第一个标签内部:如下.Current nesting is :Street 1:在以上代码中,第二个标签的 property 属性为“address“,代表 PersonBean 的 address属性,这个 address 属性代表 Address Bean,因此嵌套在第二个标签内部的 Nested 标签都相对于这个 Address Bean。第二个标签内还嵌套了一个 标签,它显示当前的嵌套级别,输出结果为”person.address“.在默认情况下,标签的 property 属性为

25、当前 ActionForm Bean 的某个属性,或者位于上层标签对应的 JavaBean 的某个属性。可以使用标签来显式指定顶层级别的 JavaBean。标签的 name 属性指定 JavaBean 的名字,嵌套在 标签中的标签的 property 属性为这个 JavaBean 的某个属性。和其他标签库中的标签功能相同的 Nested 标签许多 Nestd 标签库中的标签具有和其他标签库中的标签相同的功能,区别在于 Nested 标签库中的标签属性相对于当前的嵌套级别,例如Last name :上面的标签和标签具有相同的功能,都可以生成文本框,两者的区别在于标签的 property 属性为位

26、于当前嵌套级别对应的 JavaBean 的某个属性,而 标签的 property 属性为於当前表单对应的 ActionForm Bean 的某个属性。比如我有一个 User 类和一个 UserInfo 类,前者记录用户的帐号密码,后者记录用户的详细信息。前者也有一个UserInfo 属性,这样它们两者是嵌套了。 现在我要把这个用户的帐号和详细信息都显示到界面上。 一种方式是在 actionForm 中用两个属性 User user 和 UserInfo userInfo 来存储,在 jsp 中就可以用如下方式显示出来: 帐号: 姓名: 性别: 由于 user 和 userInfo 本身就是嵌套

27、的,所以第二种方式就在 actionForm 中使用一个 User user 属性即可: 帐号: 姓名: 性别: 这样处理是不是很方便了,actionForm 可以直接放上数据存储对象,如果使用了 hibernate 做数据持久层,我们就可以直接把持久化对象放入 actionForm 来显示到界面上,不用在 actionForm 里写很多属性来分别存储数据,也免去了给这些属性分别赋值的过程。 如果我们把上边例子中的标记换成 ,这就类似于标记,是一个输入框,这样我们就可以把界面上输入一次提交到 actionForm 中的这个数据存储对象,比如 user。我们在action 中就可以直接获得这个 user 进行处理,非常方便。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报