- 浏览: 456936 次
- 性别:
- 来自: 湖南
最新评论
-
okhaoba:
show log 后可以在change history lis ...
如何把修改过的文件通过svn导出 -
XDKS59:
博主 我是用ssm写的不知道后台该怎么写 能帮帮我吗
fullCalendar制作一款简单的日历日程 -
会飞的鸭子20125:
很有帮助,谢谢
struts1的bean标签库 -
zxjlwt:
学习了素人派http://surenpi.com
Velocity的基本用法 -
spring_springmvc:
如何在java Web项目中开发WebService接口,地址 ...
Webservice接口开发简单例子
<logic:iterate>
<logic:iterate>标记用于在页面中创建一个循环,以此来遍历如数组,Collection,Map这样的对象。该标记的功能强大,在Struts应用的页面中经常使用到。
<logic:iterate id="array1" name="test1"length="3" offset="0" indexId="number">
<bean:write name="number"/>:
<bean:write name="array1"/>
</logic:iterate>
name属性用于指定某一存在的对象
id属性定义一个新的对象来引用name 属性所指定的对象
offset属性指定了从第几个元素开始输出
length属性指定了输出元素的个数
indexId属性,它指定一个变量存放当前集合中正被访问的元素的序号
<%
HashMapcountries = new HashMap();
countries.put("country1","中国");
countries.put("country2","美国");
countries.put("country3","英国");
countries.put("country4","法国");
countries.put("country5","德国");
pageContext.setAttribute("countries",countries);
%>
<logic:iterate id="country"name="countries">
<bean:write name="country"property="key"/>: <bean:writename="country" property="value"/>
</logic:iterate>
上面的代码首先定义了一个HashMap的对象,并向其中添加了5个元素,再把它存入pageContext对象中,命名为countries。令<logic:iterate>标记的name属性等于"countries",id为country。再让<bean:write>标记的name属性和<logic:iterate>标记的id属性相对应,令property一个为"key",一个为"value"。便会有以下输出结果:
country5: 德国
country3: 英国
country2: 美国
country4: 法国
country1: 中国
从效果上看出,<logic:iterate>标记确定遍历了HashMap的每一个元素,但它并未按添加的顺序将其显示出来。这是因为HashMap是无序存放的。
对List进行循环遍历
logic:iterate>标记也可以对List型的对象进行遍历,以下是一段示例代码。<%
ArrayList list1 = new ArrayList();
list1.add("str1");
list1.add("str2");
list1.add("str3");
list1.add("str4");
list1.add("str5");
pageContext.setAttribute("testlist",list1);
%>
<logic:iterate id="showlist" name="testlist"indexId="index">
<bean:write name="index"/>:
<bean:write name="showlist"/>
</logic:iterate>
运行效果如下:
0: str1
1: str2
2: str3
3: str4
4: str5
嵌套遍历
<logic:iterate>标记还可以进行嵌套遍历,以下是一段代码示例:
<%
String [] colors = {"red","green","blue"};
String [] countries1 = {"中国","美国","法国"};
String [] persons = {"乔丹","布什","克林顿"};
ArrayList list2 = new ArrayList();
list2.add(colors);
list2.add(countries1);
list2.add(persons);
pageContext.setAttribute("list2",list2);
%>
<logic:iterate id="first" name="list2"indexId="numberfirst">
<bean:writename="numberfirst"/>:
<logic:iterateid="second" name="first">
<bean:writename="second"/>
</logic:iterate>
<br>
</logic:iterate>
上面的代码使用了双重循环来遍历一个ArrayList对象,这个ArrayList对象内的每一个元素又是一个String型的数组。以下是运行效果:
0: red green blue
1: 中国 美国 法国
2: 乔丹 布什 克林顿
Logic比较标记
在Logic标记库中有以下六个比较标记:
- <logic:equal>:判断变量是否与指定的常量相等。
- <logic:notEqual>:判断变量是否与指定的常量不相等。
- <logic:greaterThan>:判断变量是否大于指定的常量。
- <logic:greaterEqual>:判断变量是否大于等于指定的常量。
- <logic:lessThan>:判断变量是否小于指定的常量。
- <logic:lessEqual>:判断变量是否小于等于指定的常量。
从标记的名称中可以看出它们各自的功能。以下是一个简单的程序
<%
pageContext.setAttribute("test1",newInteger(10000));
%>
<logic:equal name="test1"value="10000">
变量test1等于10000。
</logic:equal>
运行效果如下所示:变量test1等于10000。
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:linkpage="/logic-compare.jsp?testInt=12345">添加参数</html:link>
<logic:greaterThan parameter="testInt"value="10000">
参数testInt的值比10000大。
</logic:greaterThan>
name属性:该属性指定一个已经存在于某范围内的变量和value属性所指定的值进行比较。以下是一个例子:
<%
pageContext.setAttribute("test2","aaaab");
%>
<logic:lessThan name="test2"value="aaaac">
字符串"aaaab"比"aaaac"小。
</logic:lessThan>
上面的代码首先在pageContext对象内存入一个字符串"aaaab",并命名为test2。然后使用name属性指定该变量,并将它与字符串"aaaac"进行比较,如果比它小,则输出相应字符串。以下是运行效果:
字符串"aaaab"比"aaaac"小。
这里有一点值得注意,就是当相比较的两个字符串都可以转化为数字时,则按数字的大小来比较,当无法转成数字时,才按字符串进行比较。以下是一个例子
<%
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"小
Match标记
Match标记共有两个:
- <logic:match>:判断变量中是否包含指定的常量字符串。
- <logic:notMatch>:判断变量中是否不包含指定的常量字符串。
Match标记的功能有些类似于java.lang.String类中的indexOf方法。以下是一个简单的例子:
<%
pageContext.setAttribute("test","Hello,World");
%>
<logic:match name="test"value="Hello">
<bean:write name="test"/>
</logic:match>
上面的代码首先在pageContext内存入一个字符串对象"Hello,World",并将其命名为test。接下来使用<logit:match>标记的value属性指定一个子串"Hello",来判断它是否被包含在test字符串中。如果被包含,则显示出test字符串的内容。很显然,结果为真。运行结果如下所示:
Hello,World
location属性
location属性所能取的值只有两个,一个是"start",另一个是"end"。
是否与字符串开头或结尾
例如有以下代码示例:
<logic:notMatchname="test" value="Hello" location="end">
<bean:write name="test"/>
</logic:notMatch>
上面的<logic:notMatch>标记中使用了location属性,它的整句意思是判断test字符串是否是以"Hello"字符串结尾的,如果是则返回false,如果不是,则返回true。倘若将<logic:notMatch>标记改为<logic:match>标记,把location属性的值改为start则此时的意思就成了判断test字符串是否是以"Hello"字符串开始的,如果是则返回true,如果不是,则返回true。这就有点类似于java.lang.String类中的startWith()方法和endWith()方法。以下是运行结果:
Hello,World
Presence标记
Presence标记包括以下四个:
<logic:present>
<logic:notpresent>
<logic:messagesPresent>
<logic:messagesNotPresent>
<logic:present><logic:notpresent>
它们的功能是用于判断所指定的对象是否存在。例如有以下代码示例:
<%
pageContext.setAttribute("ExistingString","teststring");
%>
<logic:present name="ExistingString"scope="pageContext">
ExistingString的值为<bean:writename="ExistingString"/>
</logic:present>
上面的代码首先向pageContext对象中存入一个字符串对象,并命名为ExistingString。然后使用<logic:present>标记来判断是否存在"ExistingString"这个变量。如果存在,就将ExistingString变量的值输出。以下是运行效果:
ExistingString的值为teststring
header属性:判断是否存在header属性所指定的header信息。
parameter属性:判断是否存在parameter属性指定的请求参数。
cookie属性:判断cookie属性所指定的同名cookie对象是否存在。
name属性:判断name属性所指定的变量是否存在。
property属性:和name属性同时使用,当name属性所指定的变量是一个JavaBean时,判断property属性所指定的对象属性是否存在。
<%
TestPageBeantestbean = new TestPageBean("name of testbean","value");
pageContext.setAttribute("test",testbean);
%>
<logic:notPresent name="test"property="title">
<bean:write name="test"property="name"/>
</logic:notPresent>
上面的代码首先创建了一个TestPageBean的对象,并将该对象存入pageContext对象中,命名为test。接下来,使用<logic:notPresent>标记来判断test对象是否有一个属性叫title。如果有,则返回false,如没有,则返回true,并将test对象的name属性显示出来。由于TestPageBean对象只有两个属性,一个是name,一个是value。所以,title属性并不存在。运行效果如下所示:
name of testbean
<messagePresent>标记和<messageNotPresent>标记。这两个标记是来判断是否在request内存在特定的ActionMessages或ActionErrors对象。它们有几个常用的属性:
name属性:指定了ActionMessages在request对象内存储时的key值。
message属性:message属性有两种取值。当其为true时,表示使用Globals.MESSAGE_KEY做为从request对象中获取ActionMessages的key值,此时无论name指定什么都无效;当其为false时,则表示需要根据name属性所指定的值做为从request对象中获取ActionMessages的key值,倘若此时未设置name属性的值,则使用默认的Globals.ERROR_KEY。
property属性:指定ActionMessages对象中某条特定消息的key值。
以下是一段代码示例:
<%
ActionMessagesmessages = new ActionMessages();
messages.add("message1",newActionMessage("html.errors.error1"));
request.setAttribute(Globals.MESSAGE_KEY,messages);
%>
<logic:messagesPresent message="true"property="message1">
所查找的ActionMessage存在。
</logic:messagesPresent>
在上面的代码中,首先创建了一个ActionMessages对象,然后向其中添加了一个ActionMessage,将其命名为message1。再把这个ActionMessages对象存入requeset对象中,命名为Globals.MESSAGE_KEY。接下来,将<messagePresent>标记的message属性设为true(即默认在request中查找key值为Globals.MESSAGE_KEY的对象),property属性的值设为message1,判断是否存在这样一个ActionMessage对象,倘若存在,则输出相应文本。运行效果如下所示:
所查找的ActionMessage存在。
Empty标记
Empty标记共有两个:
- <logic:empty>:判断所指定的字符串是否为空。
- <logic:notEmpty>:判断所指定的字符串是否不为空。
这两个标记的使用比较简单,以下是代码示例:
<%
pageContext.setAttribute("test1","");
%>
<logic:empty name="test1">
test1变量为空!
</logic:empty>
上面的代码首先向pageContext对象中存入一个空字符串对象,命名为test1。然后使用<logic:empty>标记判断它是否为空。以下是实际运行效果:
test1变量为空!
转发与重定向
转发标记
<logic:forward>标记用于进行全局转发,使用到该标记的页面一般不再编写其它内容,因为随着转发,页面将跳转。原页面中的内容也就无意义了。<logic:forward>标记和struts-config.xml文件中的<global-forward>内的子项相对应,以下是示例代码。
<logic:forwardname="index"/>
当页面中包含有上面这样一句代码时,若用户请求该页面,则会自动跳转到主页。因此,用户在浏览器内看到的会是index.jsp。
重定向标记
<logic:redirect>标记用于进行重定向请求。在JavaWeb的基本常识中用户应能首先了解过转发和重定向的区别,在此就不再赘述。因此,该标记与<logic:forward>在效果上基本一样,但它有另外几个属性分别是:
href属性:将页面重定向到href指定的完整外部链接。
forward属性:该属性与struts-config.xml中的<global-forward>内的子项相对应。即将页面重定向到forward所指定的资源。
page属性:该属性指定一个本应用内的一个网页,标记将页面重定向到这个新的网页。
发表评论
-
文件下载用ajax请求后没响应
2019-08-16 10:14 1103文件下载用ajax请求后没响应 // $.ajax ... -
使用easyui datagrid 遇到的那些问题
2019-08-09 16:00 761问题一: easyui datagrid列头可拖动, 引 ... -
css :before的用法
2019-04-19 18:14 762<style> ol>li { ... -
把json中的对象按从from到to的顺序排序
2015-08-12 10:46 1820<script> //把数据中的对象按从 ... -
js图片放大镜效果-类似淘宝放大镜
2014-03-31 15:31 1735<%@ page language="ja ... -
jquery的get异步请求函数中使用return不起作用
2014-03-27 16:27 1697jquery的get异步请求函数中使用return不起作用, ... -
ueditor的使用及常见问题
2014-03-27 00:01 140541、js错误:“wordCountMsg”对象为null ... -
改造之后的fullCalendar(改事件背景、标题自定义、无星期、左右按钮)
2013-07-02 15:31 34872这是一款改造后的fullCalendar,这个样式是应用了 ... -
fullCalendar制作一款简单的日历日程
2013-06-26 09:50 10475//说什么都没有例子直观,这是个比较简单的日历日程,附件为 ... -
jquery文件上传例子(两种方式)
2013-03-20 11:09 166877<html xmlns="http://ww ... -
js下拉级联例子
2013-03-19 18:05 1549<html xmlns="http://w ... -
js看书笔记
2013-01-07 11:55 1619JavaScript和DOM编程艺术 1、W3C标准:只要 ... -
struts1的bean标签库
2012-11-09 11:29 4621<bean:header> <bea ... -
JS 代码调试经验总结(菜鸟必读)
2012-07-10 15:59 1294JS 代码调试经验总结(菜鸟必读) ... -
jqueryUI插件中Dialog的运用
2012-07-05 10:55 2925Jquery UI dialog 参数 ... -
jQuery UI Autocomplete
2012-07-05 10:33 1753jQuery UI Autocomplete主要支持字符串Ar ... -
单击查看放大图片js效果
2012-04-10 12:47 11817<%@ page language="java ... -
HTML5的常用标签
2012-03-27 17:02 1987以下为附件中的一些例子,只要在dreamweaver中编写就可 ... -
为表格中的某一行设置边框
2012-03-14 14:23 5066为表格中的某一行设置边框,主要是运用 style=" ... -
由上往下无间隙滚动文字
2012-03-06 16:46 1584由上往下无间隙滚动文字 <!DOCTYPE html ...
相关推荐
Struts1 标签库详解 Struts1 标签库是 Apache Jakarta 的一个著名的开源项目,目标是为构建基于 Java 的 web 应用程序提供一个框架。Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库中:...
·struts-logic标签库。这个库可管理有条件的文本生成,在对象集合中循环以重复生成输出文本和应用程序流程管理。 ·struts-template标签库。在为具有相同的风格或格式生成动态JSP模板时,这个库所提供的标签会有很...
3. **Logic标签库**:这些标签主要用于处理逻辑控制,如条件判断和循环。例如,`<logic:equal>`比较两个值是否相等,`<logic:iterate>`用于遍历集合对象。 4. **Template标签库**:与Tiles框架关联,现在使用较少。...
在Struts中,logic标签库是用于处理条件逻辑和流程控制的重要组成部分,它允许开发者在JSP页面上进行复杂的业务逻辑处理,而无需深入到Servlet或Action类中。下面我们将详细介绍如何在Struts中使用logic标签。 一、...
通过logic标签库,我们可以进行逻辑控制,避免过多的脚本代码;html标签库则简化了表单处理,提高了用户体验;而tiles库则帮助我们构建复杂的、可重用的页面结构。 总的来说,掌握Struts1的标签库对于Java Web开发...
3. `struts-logic.tld`:Logic标签库,提供了一些逻辑控制标签,如条件判断(`<logic:equal>`)、循环(`<logic:iterate>`)、导航(`<logic:forward>`)等,帮助开发者在JSP页面中实现复杂的业务逻辑。 4. `struts-...
Struts Logic标签库是Struts框架中的一个重要组成部分,它提供了一系列的HTML标签,用于处理页面逻辑,如条件判断、循环以及请求转发等。这些标签使得开发者可以在JSP页面上更直观地实现业务逻辑,而无需编写过多的...
`logic`标签库是Struts 1.x时代的产物,虽然现在已经被更先进的技术如Spring MVC所取代,但在很多遗留系统或教学环境中仍然有着广泛的应用。下面我们将深入探讨`logic`标签库中的主要标签和它们在增删改查中的应用。...
总的来说,Struts1的`Logic`标签库为开发者提供了强大的条件控制和流程管理工具,极大地提高了开发效率和代码可读性。通过这些标签,开发者可以在JSP页面中直接进行逻辑判断,避免了过多的Java脚本,使得页面更加...
用过struts1.x的人都知道,标签库有html、bean、logic、tiles, 而struts2.0里的标签却没有分类,只用在jsp头文件加上 <%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库
Logic标签库则提供了控制流程的标签,如`<logic:iterate>`用于迭代集合,`<logic:equal>`、`<logic:notEqual>`、`<logic:greaterThan>`等用于条件判断,`<logic:present>`、`<logic:notPresent>`用于检查请求、会话...
3. **Logic标签库**:包含了一系列用于逻辑控制的标签,如`<logic:if>`、`<logic:iterate>`等,它们用于根据条件展示内容或遍历集合。例如,`<logic:equal name="user" property="isAdmin" value="true">`可以用来...
Struts Logic 标签是一种功能强大的标签库,提供了多种逻辑判断和控制流程的功能。下面将对 Struts Logic 标签进行详细的解释和示例。 比较运算的 Logic 标签 * `<logic:equal>`:比较变量是否等于指定的常量 * `...
1. **Struts标签库介绍** - Struts标签库包括核心标签库(struts-tiles)和HTML标签库(struts-html),以及其他如逻辑标签库(struts-logic)、bean标签库(struts-bean)等。 - 核心标签库主要用于页面布局和...
Struts1.x 标签库详解 Struts1.x 标签库是 Apache Jakarta 项目的一部分,目标是为构建基于 Java 的 web 应用程序提供一个框架。Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库中:Bean ...
在Struts1中,标签库是其核心特性之一,它提供了丰富的UI组件,帮助开发者快速构建动态网页。以下是Struts1的五大标签库的详细解释: 1. **struts-html.tld**: 这个标签库主要用于处理HTML表单元素和用户交互。它...