`

struts-logic标签的使用

阅读更多

logic:iterate
logic:iterate标签用来迭代集合,您可以使用如下方式来为这个标签指定其要叠代的集合:

使用一个运行时表达式,这个表达式的值是一个集合。
用name属性引用一个JSP Bean,这个JSP Bean本身就是一个集合。
用name属性引用一个JSP Bean,这个JSP Bean的一个属性是一个集合,这时可以联合使用property来指定这个集合。
上面所提到的集合可以是:

对象类型或原子类型的数组(Array)。
java.util.Collection的实现,包括ArrayList,Vector。
java.util.Enumeration的实现。
java.util.Iterator的实现。
java.util.Map的实现,包括HashMap,Hashtable和TreeMap。
如果您叠代的集合中含有null的值,这时需要采取一定的措施,
因为这时logic:iterate不会在page作用域中创建对象。一般是使用<logic:present>标签或<logic:notpresent>标签来判断一下。</logic:notpresent></logic:present>

下面是logic:iterate叠代ArrayList的示例的对象引用关系和部分代码:

图示 3. logic:iterate中对象的引用关系
 
 

图中的persons列表是在ListAction中填充的,在这里只是简单的加入了三个Person对象,在实际的应用中这些数据应该取自数据库。具体的代码如下:

java 代码
  1. public ActionForward execute(ActionMapping mapping,ActionForm form,       
  2.  HttpServletRequest request,    
  3.  HttpServletResponse response) {    
  4.   
  5.     ListForm listForm = (ListForm) form;   
  6.     List <person></person>  persons = new ArrayList <person></person> ();   
  7.     Person person1 = new Person();     
  8.     person1.setId("00001");    
  9.   
  10.     person1.setName("赵辰");      
  11.     Person person2 = new Person();     
  12.     person2.setId("00002");     
  13.     person2.setName("李为芳");      
  14.   
  15.     Person person3 = new Person();     
  16.     person3.setId("00003");    
  17.    person3.setName("王微");     
  18.  persons.add(person1);     
  19. persons.add(person2);     
  20. persons.add(person3);      
  21. listForm.setPersons(persons);     
  22.  return mapping.findForward("success");   
  23. }   
  24.   

标签输出的结果为:

00001-->赵辰 00002-->李为芳 00003-->王微

logic:present
如果指定的值出现该标签就会创建其标签体内的内容。该标签用于以下情况:

检查具有指定名称的cookie是否出现。
检查具有指定名称的header是否出现。
检查具有指定名称的JSP Bean是否出现 或 检查具有指定名称的JSP Bean中的property属性是否出现。
检查request中指定名称的参数是否出现。
检查当前的认证用户是否与指定的安全角色相关联。
检查当前认证的主体是否具有指定的名字。
下面的代码示例了logic:present标签检查具有指定名称User-Agent的header是否出现:<logic:present header="User-Agent">

</logic:present>

logic:notPresent标签的应用正好和logic:present标签相反。

logic:messagesPresent
logic:messagesPresent标签用于以下情况:

在request作用域中存在一个ActionMessages对象,标签的property属性和ActionMessages中的property对应。
在request作用域中存在一个ActionErrors对象,标签的property属性和ActionErrors中的property对应。
存在一个String对象,将其转换(构造)成ActionMessage然后在添加到ActionMessages中。
存在一个String Array对象,将数组中的每一个String转换成一个ActionMessage,在将其添加到ActionMessages中。
标签的message属性值为true时将以Globals.MESSAGE_KEY为key在request作用域中查找Message,其它情况下,将name的值作为key查找,如果name 没有出现,默认值为Globals.ERROR_KEY。

下面的代码示例了logic:messagesPresent标签的典型用法:<logic:messagespresent>
</logic:messagespresent> 
标签logic:messagesNotPresent的应用正好和logic:messagesPresent的应用相反。

 

logic:empty
logic:empty标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况:

当Java对象为null时
当String对象为""时
当java.util.Collection对象中的isEmpty()返回true时
当java.util.Map对象中的isEmpty()返回true时
下面的代码示例了logic:empty标签判断集合persons是否为空:<logic:empty name="listForm" property="persons">集合persons为空!</logic:empty>
logic:notEmpty标签的应用正好和logic:empty标签相反。

 

logic:match
logic:match标签用来处理子串匹配问题。

如果指定的值匹配该标签就会创建其标签体内的内容。该标签用于以下情况:

检查具有指定名称的cookie是否与该标签的value匹配。
检查具有指定名称的header是否与该标签的value匹配。
检查具有指定名称的JSP Bean是否与该标签的value匹配 或 检查具有指定名称的JSP Bean中的property属性值是否与该标签的value匹配。
检查request中指定名称的参数值是否与该标签的value匹配。 
 

下面的代码示例了logic:match标签的典型用法:<logic:present header="User-Agent"><logic:match header="User-Agent" value="MSIE 6.0">
MS IE 6.0 
</logic:match></logic:present> 
logic:notMatch标签的应用正好和logic:match标签相反。

logic:equal
这里要介绍的不只是logic:equal(=)标签,而是要介绍一类标签,这类标签完成比较运算,包括:

logic:equal(=)
logic:notEqual(!=)
logic:greaterEqual(>=)
logic:lessEqual(<=)
logic:graterThan(>)
logic:lessThan(<)
该类标签的用法类似,我们只介绍logic:equal标签,其它的留给您自己去完成。

logic:equal是用来判断是否相等的。如果相等,该标签体中嵌入的内容就会被处理。该标签用于以下情况:

比较由该标签的cookie属性指定的cookie的值是否与该标签的value属性值相等。
比较由该标签的header属性指定的header的值是否与该标签的value属性值相等。
比较由该标签的name属性指定的JSP Bean是否与该标签的value属性值相等(property属性不出现)或
比较由该标签的name属性指定的JSP Bean中的property属性值是否与该标签的value属性值相等。
比较由该标签的parameter属性指定的参数值(request中)是否与该标签的value属性值相等。


logic:forward
我觉得将forward和redirect这两个动作放到一起对比着介绍更加有利于理解,
基于此原因也就将logic:forward和logic:redirect这两个标签也拿到这里一起介绍了。

让我们看看这两个动作的区别:

forward是在servlet内部执行,浏览器完全不会感知到这个动作,
原始的url也不会改变,浏览器重新装载的话也只是对原始的请求进行简单的重复。
redirect则分成两个步骤:第一步是web应用程序告诉浏览器第二个url,然后浏览器向第二个url发送请求。
 

redirect比forward慢,因为浏览器要做二次请求。还有就是要注意,在第一次的请求作用域(request作用域)内的bean对于第二次请求是不可见的。

理解了上面描述的区别也就知道了什么时候该选用logic:forward标签什么时候该选用logic:redirect标签了。
logic:forward标签完成PageContext.forward()或HttpServletResponse.sendRedirect(),
如何选择由控制器决定。logic:redirect标签完成HttpServletResponse.sendRedirect()。

在使用logic:redirect标签时我们可以向使用html:link一样构造baseurl和query参数。如果您感兴趣可以参考html:link标签。

 

分享到:
评论

相关推荐

    struts-logic标签

    struts-logic标签 自已讲课用的 初稿 PPT

    struts-logic iterate标签学习指南

    Struts-Logic Iterate标签是Apache Struts框架中的一个重要组件,用于在JSP页面中迭代集合对象,如数组、列表或Map。这个标签提供了一种简洁的方式来遍历数据,并且可以与Struts的其他标签(如`bean:write`)配合...

    Struts标签-logic标签-源代码

    Struts标签 logic标签所有应用源代码 看懂了这个,你就会明白bean标签所有的使用方法 我还上传了html标签、bean标签,这三种标签在Struts中用得最多的,希望能给你一些帮助

    struts的tld标签库文件

    ·struts-logic标签库。这个库可管理有条件的文本生成,在对象集合中循环以重复生成输出文本和应用程序流程管理。 ·struts-template标签库。在为具有相同的风格或格式生成动态JSP模板时,这个库所提供的标签会有很...

    Struts标签 -LOGIC标签

    在Struts框架中,逻辑标签(LOGIC标签)是JSP标签库的一部分,用于处理页面的流程控制和逻辑判断。这些标签简化了在JSP页面上进行条件判断和循环操作,从而使得代码更易读、更易于维护。 **1. `logic:iterate`标签*...

    struts-1.2.9-lib.zip和struts-1.2.9-src.zip

    2. **标签库**:包括`struts-bean.jar`、`struts-html.jar`、`struts-logic.jar`和`struts-nested.jar`等,提供了一系列预定义的JSP标签,如logic标签用于流程控制,bean标签用于展示数据,html标签则用于表单元素的...

    Struts1-Logic标签

    总的来说,Struts1的`Logic`标签库为开发者提供了强大的条件控制和流程管理工具,极大地提高了开发效率和代码可读性。通过这些标签,开发者可以在JSP页面中直接进行逻辑判断,避免了过多的Java脚本,使得页面更加...

    struts-1.3.8-lib(new)

    5. **struts-logic.jar**:提供了逻辑控制的标签,如if、iterate等。 6. **struts-navigator.jar**:提供了一些导航和辅助功能。 7. **struts-password.jar**:用于密码加密和安全相关的功能。 8. **struts-taglib....

    Struts标签库 Struts 标签库

    下面将详细阐述Struts2标签库的使用、功能和优势。 1. **Struts2标签库介绍** Struts2框架中的标签库是基于JSP标准标签库(JSTL)的扩展,它提供了一系列与动作、结果、表单和国际化相关的标签。这些标签能够帮助...

    struts-1.3.8-all.zip

    7. **JSP和Tags**:Struts提供了丰富的JSP标签库,如logic、bean、html和nested标签,使得开发者能更方便地创建动态Web页面。 在Struts 1.3.8中,可能包含以下部分: - **lib** 目录:包含了运行Struts应用所需的...

    logic标签汇总

    在孙卫琴老师的Struts书中,这些`logic`标签的用法和实例被详细讲解,通过实际操作和案例分析,可以帮助读者更好地理解和掌握这些标签的使用方法。对于初学者来说,这是一个很好的学习资源,能够快速提升在Struts...

    struts标签-手册

    3. **struts-logic标签**:这些标签提供了流程控制功能,如条件判断和循环。比如,`&lt;logic:equal&gt;`可以比较两个值是否相等,`&lt;logic:iterate&gt;`用于遍历集合并迭代输出,`&lt;logic:notEmpty&gt;`检查一个集合或者数组是否...

    Struts中logic标签的使用

    ### Struts中Logic标签的使用详解 #### 一、引言 在Web开发中,Struts框架因其灵活性和强大的功能而被广泛采用。其中,Logic标签库是Struts框架的一个重要组成部分,它提供了多种用于控制流程和数据处理的标签。...

    struts.zip

    struts-logic标签库主要包含一系列用于处理页面导航和流程控制的标签。例如: - `&lt;logic:iterate&gt;`:用于迭代集合数据,常用于表格展示。 - `&lt;logic:equal&gt;`和`&lt;logic:notEqual&gt;`:用于比较两个值是否相等或不...

    struts常用tld文件

    综上所述,struts-html.tld、struts-bean.tld和struts-logic.tld是Struts框架中非常重要的组件,它们提供了丰富的JSP标签,帮助开发者更加高效地构建MVC架构的Web应用程序。理解和掌握这些标签的使用,对于提升Java ...

    struts-1.2.9-lib.zip

    - `struts-taglib.jar`:这个库包含JSP标签库,如logic、bean、html和nested标签,便于在JSP页面中使用Struts的功能。 2. **依赖库**: - `commons-beanutils.jar`:Apache Commons BeanUtils库,提供了对...

    struts-1.3.8.rar

    6. **JSP Taglib**:一系列 JSP 标签库,如 `&lt;html:form&gt;` 和 `&lt;logic:iterate&gt;`,简化 JSP 页面的编写。 在 Struts 1.3.8 版本中,开发者可能会遇到以下关键特性: - **安全更新**:该版本可能包含了对之前版本中...

    struts-1.2.9-all-bin

    - 设计JSP页面:展示视图,使用Struts标签库(struts-bean、struts-html、struts-logic等)来绑定数据。 5. **运行环境** - Struts 1.2.9需要Java SE 5或更高版本,以及兼容的Servlet容器(如Tomcat)。 - 使用...

    struts-1.2.5-lib.zip

    5. **JSP(JavaServer Pages)**:作为视图层,JSP用于生成动态HTML响应,Struts通过定制标签库(如struts-bean、struts-html、struts-logic等)增强了JSP的功能。 6. **Tiles**:Struts 1.2.5中集成了Tiles框架,...

Global site tag (gtag.js) - Google Analytics