逻辑比较运算
logic:equal
变量等于常量时结果为
true
,否则为
false
。
logic:notEqual
变量不等于常量时结果为
true
logic:greaterEqual
变量大于或等于常量时结果为
true
,否则为
false
。
logic:greaterThan
变量大于常量时结果为
true
,否则为
false
。
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
相反。
用法
该标记本质上提供了
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
指定的某个范围里
判断指定变量是否为
null
或空字符串
””
。
如果指定的变量为空或不存在(即即变量没有定义或其值为
null
),
logic:empty
返回
true
,否则
logic:empty
返回
false
。
logic:notEmpty
相反。
变量可以有
2
种指定方法
1.
使用
name
属性指定变量为任何范围的某个已存在的变量。若指定了
scope
属性则变量限定在由
scope
指定的某个范围里
2.
使用
name
和
property
属性指定变量为任何范围的某个已存在的
JavaBean
的某个字段。若指定了
scope
属性则变量限定在由
scope
指定的某个范围里
判断角色、用户、
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
的某个值是否存在,还能进行安全性的检查。
判断
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框架中的一个重要组成部分,它提供了一系列的HTML标签,用于处理页面逻辑,如条件判断、循环以及请求转发等。这些标签使得开发者可以在JSP页面上更直观地实现业务逻辑,而无需编写过多的...
Logic Tags 是 Struts 中的逻辑标签库,包含的标签可以用来进行逻辑判断、集合迭代和流程控制。 * logic:equal:判断两个值是否相等。 * logic:forward:将请求转发到另一个.action。 * logic:iterate:迭代一个...
Struts2标签库是Java开发Web应用程序时常用的一个强大工具,尤其在构建MVC(Model-View-Controller)架构的应用程序中发挥着重要作用。Struts2框架提供了丰富的自定义标签库,极大地简化了视图层的开发,使得开发者...
Struts Logic 标签是一种功能强大的标签库,提供了多种逻辑判断和控制流程的功能。下面将对 Struts Logic 标签进行详细的解释和示例。 比较运算的 Logic 标签 * `<logic:equal>`:比较变量是否等于指定的常量 * `...
在Struts框架中,`logic`标签库是其核心组件之一,用于处理应用程序中的逻辑控制,如导航、循环等。这篇博文主要探讨了如何使用`logic`标签来实现数据的增删改查操作,以及它们在实际项目中的应用。 `logic`标签库...
接着,"struts标签使用举例--logic篇.doc"涵盖了Struts Logic标签库。Logic标签库主要用于控制流程,处理页面跳转和条件判断。比如,`<logic:iterate>`标签可以遍历集合,`<logic:equal>`和`<logic:notEqual>`用于...
通过logic标签库,我们可以进行逻辑控制,避免过多的脚本代码;html标签库则简化了表单处理,提高了用户体验;而tiles库则帮助我们构建复杂的、可重用的页面结构。 总的来说,掌握Struts1的标签库对于Java Web开发...
这个标签库主要由Struts HTML标签库、Struts Bean标签库、Struts Logic标签库和Struts Tiles标签库组成,每个库都有其特定的功能。 Struts HTML标签库是其中最基础的部分,主要用于生成HTML元素和表单,以及处理...
### Struts2 标签库详解 Struts2框架作为Struts1的升级版,在功能性和易用性方面有了显著的提升。对于那些已经熟悉Struts1的人来说,学习Struts2将是一个相对平滑的过程。Struts2标签库是其核心组件之一,它提供了...
- **Struts Logic标签库**:提供逻辑控制标签,如`<logic:iterate>`遍历集合,`<logic:equal>`检查两个值是否相等。 - **Struts Bean标签库**:用于访问和显示JavaBeans的属性,如`<bean:write>`显示Bean的属性值...
本文将深入探讨Struts的logic标签库,这个库包含了多种用于控制流程和数据比较的标签。 1. **logic:empty** `logic:empty` 标签用于判断一个对象是否为空。如果对象是null,或者是一个空字符串,或者是一个空的...
3. `struts-logic.tld`:Logic标签库,提供了一些逻辑控制标签,如条件判断(`<logic:equal>`)、循环(`<logic:iterate>`)、导航(`<logic:forward>`)等,帮助开发者在JSP页面中实现复杂的业务逻辑。 4. `struts-...
- Struts标签库包括核心标签库(struts-tiles)和HTML标签库(struts-html),以及其他如逻辑标签库(struts-logic)、bean标签库(struts-bean)等。 - 核心标签库主要用于页面布局和组件管理,而HTML标签库则...
#### 五、Struts Logic标签库详解 ##### 1. Logic标签库的作用 Logic标签库主要用于实现页面上的逻辑控制,如条件判断、循环等。这对于动态显示内容或根据用户的输入进行响应非常有用。 ##### 2. 常用Logic标签...
本章主要介绍了五个主要的Struts标签库,分别是HTML标签库、Bean标签库、Logic标签库、Nested标签库和Tiles标签库。 **HTML标签库**是用于创建与Struts框架交互的HTML输入表单的标签。它包括生成HTML基本元素的标签...
Struts Logic标签库是Apache Struts框架的一部分,用于在JSP页面中实现逻辑控制和流程管理。这些标签简化了在视图层处理条件判断、循环和请求转发等任务,使得开发者能够更专注于业务逻辑,而不是复杂的Java代码。...
在Struts框架中,`struts-logic`标签库提供了一系列的标签,用于处理页面逻辑,使得开发者可以在JSP页面中进行条件判断、循环等操作,而无需过多地编写Java脚本。这些标签极大地提高了代码的可读性和维护性。 1. `...