`

Struts logic标签库

阅读更多

逻辑比较运算

logic:equal/logic:notEqual

logic:equal 变量等于常量时结果为 true ,否则为 false

logic:notEqual 变量不等于常量时结果为 true

logic:greaterEqual/logic:greaterThan

logic:greaterEqual 变量大于或等于常量时结果为 true ,否则为 false

logic:greaterThan 变量大于常量时结果为 true ,否则为 false

logic:lessEqual/ logic:lessThan

logic:lessEqual 变量小于或等于常量时结果为 true ,否则为 false

logic:lessThan 变量小于常量时结果为 true ,否则为 false

用法

所有比较运算标记都比较一个变量和一个常量的大小。如果结果为 true ,则执行标签主体的内容,否则不执行任何动作。

常量由 value 属性指定。变量可以有五种指定方法

1.  使用 cookie 属性指定变量为某个 cookie 的关键字的名称。

2.  使用 header 属性指定变量为 HTTP 头的某个关键字的名称。

3.  使用 parameter 属性指定变量为某个请求参数

4.  使用 name 属性指定变量为任何范围的某个已存在的变量。若指定了 scope 属性则变量限定在由 scope 指定的某个范围里

5.  使用 name property 属性指定变量为任何范围的某个已存在的 JavaBean 的某个字段。若指定了 scope 属性则变量限定在由 scope 指定的某个范围里

注意

1.         如果变量不存在则比较结果为 false ,而不是抛出异常。

2.         如果两个字符串都可以转换成数字,就比较数字的大小,否则进行字符串的比较如:
    <%
    request.setAttribute( "str" , "100" );
    
%>
     < logic:greaterThan name = "str" value = "90" > greater </ logic:greaterThan >
结果为 true 。又如:
    <%
    request.setAttribute( "str" , "100x" );
    
%>
     < logic:greaterThan name = "str" value = "90x" > greater </ logic:greaterThan >
结果为 false

字符串匹配

logic:match / logic:notMatch

logic:match 判断变量是否包含指定常量,如果是则执行标记主体内容,否则不做任何动作。 logic:notMatch logic:match 相反。

用法

该标记本质上提供了 String 对象的 indexOf() startsWith() endsWith() 方法。所有匹配区分大小写。

location 属性:如果没有指定则执行 indexOf() 方法。如果指定为 start 则标记执行 startsWith 方法;如果指定为 end 则执行 endsWith() 方法。

常量由 value 属性指定。变量可以有五种指定方法

6.  使用 cookie 属性指定变量为某个 cookie 的关键字的名称。

7.  使用 header 属性指定变量为 HTTP 头的某个关键字的名称。

8.  使用 parameter 属性指定变量为某个请求参数

9.  使用 name 属性指定变量为任何范围的某个已存在的变量。若指定了 scope 属性则变量限定在由 scope 指定的某个范围里

使用 name property 属性指定变量为任何范围的某个已存在的 JavaBean 的某个字段。若指定了 scope 属性则变量限定在由 scope 指定的某个范围里

判断指定内容是否存在

logic:empty/logic:notEmpty

判断指定变量是否为 null 或空字符串 ””

如果指定的变量为空或不存在(即即变量没有定义或其值为 null ), logic:empty 返回 true ,否则 logic:empty 返回 false logic:notEmpty 相反。

变量可以有 2 种指定方法

1.         使用 name 属性指定变量为任何范围的某个已存在的变量。若指定了 scope 属性则变量限定在由 scope 指定的某个范围里

2.         使用 name property 属性指定变量为任何范围的某个已存在的 JavaBean 的某个字段。若指定了 scope 属性则变量限定在由 scope 指定的某个范围里

logic:present /logic:notPresent

判断角色、用户、 cookie header parameter JavaBean 或某个范围的变量是否存在

如果指定变量不存在(即变量没有定义或其值为 null ), logic:present 范围 false ,如果存在(即使其值是空字符串),则返回 true logic:notPresent logic:present 相反

此标签除了进行标准的存在性检查外还提供了与 J2EE 安全系统交互的机制,以确定授权的用户是否具有指定的用户名

变量的指定有以下七种方法

1.  指定 cookie 属性

2.  指定 header 属性

3.  指定 parameter 属性

4.  指定 name 属性

5.  指定 name property 属性

6.  指定 user 属性 判断当前通过授权的用户是否具有指定的用户名。可以设置多个用户名,用逗号分开如: user=”user1,user2”

7.  指定 role 属性判断当前通过授权的用户是否具有指定的安全角色。可以设置多个安全叫色,用逗号分开如: user=”role1,role2”

logic:present empty 的区别

变量为空是指变量的值为空字符串如 String numberEmpty=””

变量为 null 值变量的值未指定如 String numbserNull = null

变量未定义是指变量没有声明。

变量是否存在是指变量是否为 null 或变量有没有定义。

logic:present 主要有两个区别

1.  logic:notEmpty 当变量是存在且变量不为空时结果为 true logic:present 当变量存在时为 true

2.  logic:empty 只能比较某个范围的变量, logic: 除了检查某个范围的变量外,还能检查 cookie,header,parameter 的某个值是否存在,还能进行安全性的检查。

logic:messagesPresent/ logic:messagesNotPresent

判断 request 范围内是否存在指定的 ActionMessages (或取子类 ActionErrors )对象,以及在此对象中是否存在指定的信息。

logic:messagesPresent 判断指定的信息是否存在。 logic:messagesNotPresent logic:messagesNotPresent 相反。

name 属性:指定 request 范围内检索 ActionMessages 对象的属性 key ,默认为 Globals.ERROR_KEY

message 属性:如果为 true 则设定 request 范围内检索 ActionMessages 对象的属性 key Globals.MESSAGE_KEY 。此时 name 属性无效。如果为 false ,则由 name 指定 key

property 属性:如果指定则检查指定的 message 是否存在,否则检查 ActiionMessages 是否存在。

举例如下:

    meessagesPresent 用法 < br >

    <%

      ActionErrors errors = new ActionErrors();

      errors.add( "errmsg" , new ActionMessage( " 信息内容 " ));

      request.setAttribute(Globals.ERROR_KEY,errors);

     %>

< logic:messagesPresent > 存在 message </ logic:messagesPresent >

logic:messagesPresent 标记的执行结果为 true

循环遍历

logic:iterate

遍历集合中的元素。

要遍历的集合通过以下三种方式指定:

1.  collection 属性指定一个运行时的表达式

2.  name 属性指定

3.  name property 属性指定

集合必须是以下集中类型:

1.  基本类型或引用类型的数组

2.  java.util.Collection 类型,包括 ArrayList Vector

3.  Enumeration 类型

4.  Iterator 类型

Map 类型,包括 HashMap, Hashtable, TreeMap. 当遍历一个 Map 类型对象时,实际遍历的对象是 Map.Entry ,他包含两个属性
key –
关键字
value –
关键字对应的值
所以当你遍历 Map 时需要同时使用 name property 属性指定 Map 和某个属性( property=”key” property=”value”

id 属性保存遍历出的每个元素。

indexId 保存此元素在集合中的位置。

length 属性指定要遍历元素的最大个数。不指定则便利集合中的所有元素。

offset 属性指定遍历的开始位置。默认从 0 开始。

scope 属性指定集合所在范围。没有指定则依次从 page,request,session,application 范围搜索集合。

举例如下:
    <%
      HashMap course = new HashMap();
      course.put(
"math" , new Integer(120));
      course.put(
"english" , new Integer(122));
      course.put(
"chinese" , new Integer(100));
      course.put(
"physics" , new Integer(111));
      course.put(
"chymistry" , new Integer(129));
      course.put(
"biology" , new Integer(111));
      course.put(
"politics" , new Integer(98));
      course.put(
"geography" , new Integer(132));
      course.put(
"history" , new Integer(98));
      pageContext.setAttribute(
"course" ,course);
     
%>
     < bean:size id = "course_length" name = "course" />
     < logic:present name = "course" >
       < logic:iterate id = "c" name = "course" length = "<%= course_length.toString() %> " offset = "3" indexId = "course_id" >
         < bean:write name = "c" property = "key" /> : < bean:write name = "c" property = "value" /> - < bean:write name = "course_id" />< br >
       </ logic:iterate >
     </ logic:present >
结果显示如下:
english:122 - 3
physics:111 - 4
history:98 - 5
geography:132 - 6
math:120 - 7
politics:98 – 8

转发或重定向

logic:forward

相当于在 struts 内部执行 PageContext.forward() or HttpServletResponse.sendRedirect()

该标记根据 name 属性在 Struts 配置文件中查找一个 forward ,再根据该 forward 的定义决定转至特定的 URL 。如果 forward redirect 属性设置为 ”true” 则标记将重定向,否则直接转至。

redirect 向浏览器发送一个响应,提示浏览器加载另一个页面。 forward 直接转至要加载的页面

forward 只能转到相同服务器上的 URL redirect 可以转到任何的 URL

logic:redirect

相当于在 struts 内部执行 HttpServletResponse.sendRedirect() 。浏览器不显示本页面的 URL 而是重定向后的 URL

有以下三种方法指定 URL

l  forward 属性

l  page 属性

l  href 属性

(以上三种方法的用法跟 link:rewrite 方法相同)。

l  action 属性。指向一个 action

指定参数的方法有以下两种:

指定一个参数。
参数名由 paramId 指定,参数值由一个 JSP 变量指定,这个变量的值就作为 paramId 对应的参数的值。指定 JSP 变量有两种方法:
一种是由 paramName 属性指定。如:
    <%
      pageContext.setAttribute( "name" , "rolia" );
    
%>
     < logic:redirect forward = "showparams"
                     
paramId = "name"
                     
paramName = "name"
                     
scope = "page" />
一种是由 paramName 属性指定一个 JavaBean paramProperty 属性指定这个 bean 的某个属性,这个属性的值作为参数值。

指定多个参数。
多个参数保存在一个 Map 对象中,它里面的每个 map.entry 对象作为一个参数名 / 值对传递。
指定 Map 对象有两种方法:
一种是由 name 属性指定。如:
    <%
      HashMap course = new HashMap();
      course.put(
"math" , new Integer(120));
      course.put(
"english" , new Integer(122));
      course.put(
"chinese" , new Integer(100));
      course.put(
"physics" , new Integer(111));
      course.put(
"chymistry" , new Integer(129));
      course.put(
"biology" , new Integer(111));
      course.put(
"politics" , new Integer(98));
      course.put(
"geography" , new Integer(132));
      course.put(
"history" , new Integer(98));
      pageContext.setAttribute(
"course" ,course);
    
%>
     < logic:redirect forward = "showparams"
                     
name = "course" />

一种是由 name 属性指定一个 JavaBean property 属性指定 JavaBean 的某个属性,这个属性为一个 Map 对象。

小结

l  逻辑标签判断条件是否为 true ,是则执行标签主体的内容。

l  多数标签可以设置 name 属性,和 property 属性,用法一样。 scope 属性指定范围。如果没有指定,依次在 page,request,session application 范围里查找。

l  nest 标记库

分享到:
评论

相关推荐

    struts logic标签库使用手册

    Struts Logic标签库是Struts框架中的一个重要组成部分,它提供了一系列的HTML标签,用于处理页面逻辑,如条件判断、循环以及请求转发等。这些标签使得开发者可以在JSP页面上更直观地实现业务逻辑,而无需编写过多的...

    struts1标签库详解

    Logic Tags 是 Struts 中的逻辑标签库,包含的标签可以用来进行逻辑判断、集合迭代和流程控制。 * logic:equal:判断两个值是否相等。 * logic:forward:将请求转发到另一个.action。 * logic:iterate:迭代一个...

    Struts标签库 Struts 标签库

    Struts2标签库是Java开发Web应用程序时常用的一个强大工具,尤其在构建MVC(Model-View-Controller)架构的应用程序中发挥着重要作用。Struts2框架提供了丰富的自定义标签库,极大地简化了视图层的开发,使得开发者...

    struts logic 标签解释 跟例子

    Struts Logic 标签是一种功能强大的标签库,提供了多种逻辑判断和控制流程的功能。下面将对 Struts Logic 标签进行详细的解释和示例。 比较运算的 Logic 标签 * `&lt;logic:equal&gt;`:比较变量是否等于指定的常量 * `...

    Struts logic标签及增删改查

    在Struts框架中,`logic`标签库是其核心组件之一,用于处理应用程序中的逻辑控制,如导航、循环等。这篇博文主要探讨了如何使用`logic`标签来实现数据的增删改查操作,以及它们在实际项目中的应用。 `logic`标签库...

    Struts标签库学习.rar

    接着,"struts标签使用举例--logic篇.doc"涵盖了Struts Logic标签库。Logic标签库主要用于控制流程,处理页面跳转和条件判断。比如,`&lt;logic:iterate&gt;`标签可以遍历集合,`&lt;logic:equal&gt;`和`&lt;logic:notEqual&gt;`用于...

    struts1标签库运用总结

    通过logic标签库,我们可以进行逻辑控制,避免过多的脚本代码;html标签库则简化了表单处理,提高了用户体验;而tiles库则帮助我们构建复杂的、可重用的页面结构。 总的来说,掌握Struts1的标签库对于Java Web开发...

    Struts 标签库

    这个标签库主要由Struts HTML标签库、Struts Bean标签库、Struts Logic标签库和Struts Tiles标签库组成,每个库都有其特定的功能。 Struts HTML标签库是其中最基础的部分,主要用于生成HTML元素和表单,以及处理...

    struts2标签库

    ### Struts2 标签库详解 Struts2框架作为Struts1的升级版,在功能性和易用性方面有了显著的提升。对于那些已经熟悉Struts1的人来说,学习Struts2将是一个相对平滑的过程。Struts2标签库是其核心组件之一,它提供了...

    纯struts带标签

    - **Struts Logic标签库**:提供逻辑控制标签,如`&lt;logic:iterate&gt;`遍历集合,`&lt;logic:equal&gt;`检查两个值是否相等。 - **Struts Bean标签库**:用于访问和显示JavaBeans的属性,如`&lt;bean:write&gt;`显示Bean的属性值...

    Struts之logic标签库详解

    本文将深入探讨Struts的logic标签库,这个库包含了多种用于控制流程和数据比较的标签。 1. **logic:empty** `logic:empty` 标签用于判断一个对象是否为空。如果对象是null,或者是一个空字符串,或者是一个空的...

    Struts配置及标签库详解

    3. `struts-logic.tld`:Logic标签库,提供了一些逻辑控制标签,如条件判断(`&lt;logic:equal&gt;`)、循环(`&lt;logic:iterate&gt;`)、导航(`&lt;logic:forward&gt;`)等,帮助开发者在JSP页面中实现复杂的业务逻辑。 4. `struts-...

    Struts标签库Struts标签库Struts标签库案例

    - Struts标签库包括核心标签库(struts-tiles)和HTML标签库(struts-html),以及其他如逻辑标签库(struts-logic)、bean标签库(struts-bean)等。 - 核心标签库主要用于页面布局和组件管理,而HTML标签库则...

    struts标签的写法

    #### 五、Struts Logic标签库详解 ##### 1. Logic标签库的作用 Logic标签库主要用于实现页面上的逻辑控制,如条件判断、循环等。这对于动态显示内容或根据用户的输入进行响应非常有用。 ##### 2. 常用Logic标签...

    Struts标签库 ppt教程

    本章主要介绍了五个主要的Struts标签库,分别是HTML标签库、Bean标签库、Logic标签库、Nested标签库和Tiles标签库。 **HTML标签库**是用于创建与Struts框架交互的HTML输入表单的标签。它包括生成HTML基本元素的标签...

    struts tag

    Struts Logic标签库是Apache Struts框架的一部分,用于在JSP页面中实现逻辑控制和流程管理。这些标签简化了在视图层处理条件判断、循环和请求转发等任务,使得开发者能够更专注于业务逻辑,而不是复杂的Java代码。...

    struts logic标签(ppt)

    在Struts框架中,`struts-logic`标签库提供了一系列的标签,用于处理页面逻辑,使得开发者可以在JSP页面中进行条件判断、循环等操作,而无需过多地编写Java脚本。这些标签极大地提高了代码的可读性和维护性。 1. `...

Global site tag (gtag.js) - Google Analytics