- Logic比较标记
- 在Logic标记库中有以下六个比较标记:
- <logic:equal>:判断变量是否与指定的常量相等。
- <logic:notEqual>:判断变量是否与指定的常量不相等。
- <logic:greaterThan>:判断变量是否大于指定的常量。
- <logic:greaterEqual>:判断变量是否大于等于指定的常量。
- <logic:lessThan>:判断变量是否小于指定的常量。
- <logic:lessEqual>:判断变量是否小于等于指定的常量。
- 从标记的名称中可以看出它们各自的功能。以下是一个简单的程序小示例:
- <%
- pageContext.setAttribute("test1",new Integer(10000));
- %>
- <logic:equal name="test1" value="10000">
- 变量test1等于10000。
- </logic:equal>
- 上面的代码首先在pageContext内存入一个整型变量,命名为test1。然后使用<logic:equal>标记把test1变量和常量值 10000进行比较,如果比较值为真,则显示"变量test1等于10000"的字符串。可以看出,在<logic:equal>标记中使用value 属性来指定常量值,使用name属性指定一个已经在某个范围内存在的变量,这个范围可以是pageContext,request等。运行效果如下所示:
- 变量test1等于10000。
- Logic标记库的六个比较标记的属性具有基本相同的含义,如上面提到的value属性,它总是代表一个常量,用来作为比较的参照。以下是几个通用的属性介绍:
- header属性:它的值表示HTTP请求中的header信息,以下是一个使用header的例子。
- <logic:equal header="host" value="localhost:8080">
- 主机地址为localhost:8080
- </logic:equal>
- 上面的代码从HTTP请求中读出host信息,与value属性所指定的值进行比较,当相同时同输出"主机地址为localhost:8080"的信息。下面是运行效果:
- 主机地址为localhost:8080
- parameter属性:它的值表示HTTP请求中的请求参数名,以下是一个使用parameter参数的例子。
- <html:link page="/logic-compare.jsp?testInt=12345">添加参数</html:link>
- <logic:greaterThan parameter="testInt" value="10000">
- 参数testInt的值比10000大。
- </logic:greaterThan>
- 上面的代码首先设置了一个链接,该链接依然链回相同的页面,只不过在页面后面添加了参数testInt并令其值为12345。接下来使用<logic:greaterThan>标记来判断testInt这个请求参数的值是否大于10000,如若比10000大,则显示"参数testInt的值比10000大" 这样的字符串。其中parameter属性来指定"testInt"这个请求参数。运行效果如下所示,用户首先点击"添加参数"的链接为页面添加参数就可以看到标记的效果了。
- 添加参数
- 参数testInt的值比10000大。
- cookie属性:它的值表示一个cookie的name。以下是一个使用cookie参数的例子。
- <%
- javax.servlet.http.Cookie newcookie = new javax.servlet.http.Cookie("cookiename","cookievalue");
- newcookie.setComment("new Cookie");
- newcookie.setMaxAge(3600);
- response.addCookie(newcookie);
- %>
- <logic:equal cookie="cookiename" value="cookievalue">
- 存入的Cookie的name是cookiename,value是cookievalue。
- </logic:equal>
- 上面的代码首先定义了一个name为"cookiename",value为"cookievalue"的Cookie对象,并将其存入response中。接下来使用 cookie参数来指定该对象,并判断它的值是否为cookievalue。倘若相等,则显示"存入的Cookie的name是cookiename,value是 cookievalue"的字符串。用户第一次访问该页面是,该Cookie不存在,所以并不会显示上述字符串。而需要用户关闭浏览器再次访问时,才可以看到。运行效果如下所示:
- 存入的Cookie的name是cookiename,value是cookievalue。
- name属性:该属性指定一个已经存在于某范围内的变量和value属性所指定的值进行比较。以下是一个例子:
- <%
- pageContext.setAttribute("test2","aaaab");
- %>
- <logic:lessThan name="test2" value="aaaac">
- 字符串"aaaab"比"aaaac"小。
- </logic:lessThan>
- 上面的代码首先在pageContext对象内存入一个字符串"aaaab",并命名为test2。然后使用name属性指定该变量,并将它与字符串 "aaaac"进行比较,如果比它小,则输出相应字符串。以下是运行效果:
- 字符串"aaaab"比"aaaac"小。
- 当使用name属性时,如果指定的变量并不是一个字符串,而是一个JavaBean,则还需要一个property属性和其配合使用。该property 属性指定了JavaBean的某个属性,然后将该属性的值与value属性所指定的常量进行比较。如下面的代码:
- <%
- TestPageBean testbean = new TestPageBean("testname","testvalue");
- pageContext.setAttribute("test3",testbean);
- %>
- <logic:lessEqual name="test3" property="name" value="testname">
- TestPageBean对象的name属性的值小于等于"testname"。
- </logic:lessEqual>
- 以下是运行效果:
- TestPageBean对象的name属性的值小于等于"testname"。
- 这里有一点值得注意,就是当相比较的两个字符串都可以转化为数字时,则按数字的大小来比较,当无法转成数字时,才按字符串进行比较。以下是一个例子
- <%
- pageContext.setAttribute("a1","10000");
- %>
- <logic:greaterThan name="a1" value="9999.00">
- 10000比9999.00大
- </logic:greaterThan>
- <logic:lessThan name="a1" value="9999.00t">
- "10000"比"9999.00t"小
- </logic:greaterThan>
- 上面的代码将一个字符串"10000"存入pageContext对象中,然后将其先后与"9999.00"和"9999.00t"两个字符串作比较。可以看出当"10000"与"9999.00"作比较时是将之做为数字来进行的,而与"9999.00t"比较时,因为无法将其转成数字,则按字符串比较。以下是运行效果:
- 10000比9999.00大
- "10000"比"9999.00t"小
logic:iterate(2)
最新推荐文章于 2014-06-05 16:09:22 发布