- 浏览: 105582 次
- 性别:
- 来自: 南京
文章分类
最新评论
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:iterate叠代ArrayList的示例的对象引用关系和部分代码:
图中的persons列表是在ListAction中填充的,在这里只是简单的加入了三个Person对象,在实际的应用中这些数据应该取自数据库。具体的代码如下:
public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request, HttpServletResponse response) { ListForm listForm = (ListForm) form; List<Person> persons = new ArrayList<Person>(); Person person1 = new Person(); person1.setId("00001"); person1.setName("赵辰"); Person person2 = new Person(); person2.setId("00002"); person2.setName("李为芳"); Person person3 = new Person(); person3.setId("00003"); person3.setName("王微"); persons.add(person1); persons.add(person2); persons.add(person3); listForm.setPersons(persons); return mapping.findForward("success"); }
标签输出的结果为:
00001-->赵辰 00002-->李为芳 00003-->王微
logic:present
如果指定的值出现该标签就会创建其标签体内的内容。该标签用于以下情况:
- 检查具有指定名称的cookie是否出现。
- 检查具有指定名称的header是否出现。
- 检查具有指定名称的JSP Bean是否出现 或 检查具有指定名称的JSP Bean中的property属性是否出现。
- 检查request中指定名称的参数是否出现。
- 检查当前的认证用户是否与指定的安全角色相关联。
- 检查当前认证的主体是否具有指定的名字。
下面的代码示例了logic:present标签检查具有指定名称User-Agent的header是否出现:
<logic:present header="User-Agent"> 您的浏览器是<bean:header id="userAgent" name="User-Agent"/> <bean:write name="userAgent"/>。<br/> </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> <ul> <html:messages id="message"> <li><bean:write name="message"/></li> </html:messages> </ul> </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"> <div>集合persons为空!</div> </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标签。
发表评论
-
规范的模板化项目架构管理
2012-05-03 23:31 894总在寻找项目开发简单化、标准化、统一化的开发管理方法,在项目 ... -
Java的ftp上传下载工具
2012-04-05 22:17 1775自己写的利用apache的net包写的ftp的上传、下 ... -
SmartGWT学习注意事项(一)
2012-03-31 20:42 1583首先表明,我 ... -
J2ME程序开发全方位基础讲解汇总
2007-08-03 14:19 628一、J2ME中需要的Java基础知识现在有大部分人,都是从零开 ... -
使用J2ME技术开发RPG游戏
2007-08-03 14:24 557RPG(角色扮演游戏)是手机游戏中的一类主要类型,也是相对来说 ... -
移动视频: QuickTime for Java API 入门
2007-08-05 12:45 626在 Java 平台上创建 iPod 视频内容 ... -
技术交流:QuickTime流媒体和Java(图)
2007-08-05 12:46 635这并不是即将问世的Quic ... -
JMF下载安装与支持格式
2007-08-05 12:47 859JMF开发进度不是很快,所以目前还是比较薄弱。 JMF,全名 ... -
搭建J2ME开发环境
2007-08-05 12:48 569由于WTK并没有提供代码编辑的功能,因此本文讲述如何使用Ecl ... -
JMF系统介绍
2007-08-09 15:18 725一.简介 1.1JMF 体系结构 ... -
Experiments in Streaming Content in Java ME(一)
2007-08-13 13:43 584Since my book on Mobile Media A ... -
Experiments in Streaming Content in Java ME(二)----Creating an RTSP Protocol Handler
2007-08-13 13:44 1452Recall that RTSP is the actual ... -
Experiments in Streaming Content in Java ME(三)-----Back to RTPSourceStream and StreamingDataSource
2007-08-13 13:46 1033With the protocol handler in pl ... -
java中文件操作大全
2007-08-22 15:40 558一.获得控制台用户输入的信息 /***//**获得控 ... -
Pocket PC、Pocket PC Phone、Smartphone的区别
2007-08-23 16:59 663首先说明几个概念: 1、什么是Pocket PC?Pocket ... -
Struts配置文件详解(来自csdn)
2007-11-30 08:35 500Struts应用采用两个基于X ... -
jBPM开发入门指南(5)
2007-11-30 08:45 540jBPM开发入门指南(5) 前篇说起要讲在JBPM中实现用 ... -
jBPM开发入门指南(4)
2007-11-30 08:48 615jBPM开发入门指南(4) 7 jBPM 的客户端 ... -
jBPM开发入门指南(3)
2007-11-30 08:51 6435 安装 jBPM 的 Eclipse 开发插件 有 ... -
jBPM开发入门指南(2)
2007-11-30 08:52 6554 数据库初始化 jBPM 需要数据库支持, jBPM ...
相关推荐
在Struts框架中,控制器(Action)负责接收用户的请求,模型(Business Logic)处理业务逻辑,视图(JSP)展示结果,形成清晰的三层架构。 3. **Tomcat**:这是Apache软件基金会的开源Servlet容器,用于运行Java Web...
- **JSP标签库**:Struts提供了丰富的标签库,如logic、bean和html标签,简化了JSP页面的编写,减少了硬编码。 **Struts的优势** 使用Struts框架的好处包括: 1. **代码组织结构清晰**:通过MVC分离,代码结构更...
首先,我们来看"Struts标签库学习——html篇.doc"。这个文档详细介绍了Struts HTML标签库,它是用于构建用户界面的标签集合。HTML标签库提供了与HTML表单元素交互的能力,如`<html:text>`、`<html:password>`、`...
在JSP中,可以使用Struts的标签库如logic:iterate或c:forEach遍历Menu对象,生成HTML代码来展示菜单。 5. **使用JSP标签渲染**:在JSP页面上,使用Struts的自定义标签或者EL表达式来渲染Menu。例如,可以使用条件...
4. **JSP和标签库**:视图层可能使用JSP(JavaServer Pages)技术,结合Struts的自定义标签库(如logic标签、bean标签等)来动态生成HTML页面。你需要理解JSP的脚本元素、EL(Expression Language)和JSTL(Java...
9. **标签库**:Struts提供了丰富的标签库,如logic、bean、html等,可以简化JSP页面的编写,提高可读性和可维护性。 10. **ActionServlet**:Struts框架的入口点是ActionServlet,它是Servlet的子类,负责解析请求...
- **模型(Model)**:在Struts中,模型由两部分组成——系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由ActionForm对象表示,而事务逻辑则封装在Action类中,或者在ActionForm的方法中,具体取决...
- 在JSP页面中引入Struts标签库,如`<%@ taglib prefix="html" uri="/tags/html" %>`。 - 使用Struts配置文件来定义动作映射和表单bean,以驱动标签的行为。 6. **最佳实践** - 尽量避免在JSP中写Java代码,利用...
6. **Struts标签库**:Struts提供了丰富的标签库,如logic标签、bean标签和html标签,它们简化了JSP页面的编写,提高了代码的可读性和可维护性。书中会详细解读这些标签的使用方法和应用场景。 7. **iBatis整合**:...
Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC...通过实践,开发者可以更好地学习如何配置`struts-config.xml`,编写Action类和ActionForm,以及如何在JSP页面上使用Struts标签。
11. **Struts标签库**:Struts1.2提供了丰富的标签库,如logic标签、bean标签和html标签,使得在JSP页面中操作业务数据和控制流程变得更加简单。 通过深入学习这些Struts1.2的关键概念和机制,开发者能够更好地理解...
- `<%@taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>`:引入Struts Logic标签库。 - **HTML表单**:使用`<html:form>`标签定义了一个表单,通过`action`属性指定提交表单时的动作路径。此外,还使用了...
JSP页面可以通过Struts标签库(如logic:iterate、html:form等)与ActionForm和Action类进行交互。 5. **模型**:模型由Action类和相关的业务对象组成,负责处理业务逻辑和数据操作。 在留言板应用中,可能包含以下...
10. **定制JSP标记**和**Struts标签库**:Struts TagLib提供了许多预定义的JSP标签,如logic标签进行条件逻辑,bean标签操作JavaBeans,fmt标签处理国际化和日期格式化,以及html标签用于创建表单元素。 11. **资源...
打开`/WEB-INF/web.xml`文件,添加Struts的标签库定义,以便在JSP页面中使用Struts标签。添加以下代码到`</webapp>`标签之前: ```xml <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/WEB-...
4. `struts-logic.jar`:提供了逻辑标签,如条件判断、循环等,用于增强JSP页面的功能。 5. `struts-tiles.jar`:Tiles框架,用于构建可重用的页面布局和组合组件,实现复杂的页面结构。 6. `struts-nested.jar`:...
8. **Struts标签库**: - 提供了各种标签简化JSP页面开发,如、等。 9. **Struts 1与Struts 2的区别**: - Struts 2引入了更多现代特性,如拦截器、OGNL表达式语言,以及更丰富的标签库,使得开发更加便捷。 在...
Struts提供了丰富的标签库,如html、bean、logic和nested等,它们简化了视图层的开发,使得开发者可以更专注于业务逻辑而不是页面细节。 4. **01_test_servlet**: Servlet是Java Web的基础,Struts框架通常与...
8. **Struts标签库**:Struts提供了丰富的JSP标签,如logic标签、bean标签、html标签等,这些标签简化了视图层的开发,提高了代码的可读性。 9. **ActionServlet**:这是Struts的核心组件,它是一个实现了Servlet...
### Struts标签、动态ActionForm、上传组件及Struts验证框架知识点详解 #### 一、Struts标签 **Struts** 是一款基于 **MVC**(Model-View-Controller)设计模式的开源Java Web框架,它能够帮助开发者构建可扩展且...