struts标签使用举例--logic篇

合集下载

Struts2学习之二--Struts2标签介绍

Struts2学习之二--Struts2标签介绍

Struts2学习之二--Struts2标签介绍热12已有 14625 次阅读 2009-07-12 18:53[顶]3G移动--Android开发工程师全能班(转) Struts2学习之二--Struts2标签介绍在上一篇文章《为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节。

如果,您看完《为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我。

我的E-MAIL:Max.M.Yuan@。

在介绍常用标志前,我想先从总体上,对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较。

分类将标志库按功能分成HTML、Tiles、Logic和Bean等几部分严格上来说,没有分类,所有标志都在URI为“/struts-tags”命名空间下,不过,我们可以从功能上将其分为两大类:非UI标志和UI标志表达式语言(expression languages)不支持嵌入语言(EL)OGNL、JSTL、Groovy和Velcity以上表格,纯属个人总结,如有所不足或错误,请不吝指正好了,我要开始介绍“常用”(这里所谓的“常用”,是指在已往工作中使用Struts里经常用到的)的标志了。

1.非UI标志o if、elseif和else描述:执行基本的条件流转。

参数:名称必需默认类型描述备注test 是Boolean 决定标志里内容是否显示的表达式else标志没有这个参数id 否Object/String 用来标识元素的id。

在UI和表单中为HTML的id属性例子:<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Condition Flow</title></head><body><h3>Condition Flow</h3><!--这里有点小技巧:本来可以用#[0]来获得,请求中name的值。

struts1学习笔记

struts1学习笔记

struts1开发学习笔记使用一个简单的例子记录struts1开发过程。

0、 描述主要功能描述:index 界面上只有两个超链接,分别可以打开录入产品界面和显示产品列表界面。

newProduct.jsp 是录入的界面,searchProduct.jsp 是查询列表的界面。

ProductAction.java 是处理逻辑的action简单描述流程图:1、 构建环境在Myeclipse 中,新建一个工程StrutsTest ,选择该工程,右键Myeclipse->add srutscapapibality ,弹出界面,选择struts1.2支持。

如下图所示:添加完struts 支持后,lib 目录下会增添struts 的jar 包、增添struts 的配置文件:/WEB-INF/struts-config.xml 、同时在web.xml 中增添了struts 的配置。

2、 代码编写2)创建工具类Util.java,从数据库连接池中获得连接。

需要两个步骤第一步:在WebRoot/META-INF/下新建一个context文件,通过jndi方式配置数据源,第二步:在util类中读取配置获得连接,util.java如下:3)创建工具类EncodingFilter.java,自定义过滤器,并在web.xml中配置,参考web.xml配置中内容。

EncodingFilter.java的内容如下:4)修改web.xml,指定首页为index.jsp。

文件内容如下:最后定义了一个fileld 的过滤器,是用来过滤字符编码的,后面会提到。

6)index.jsp中提到productAction.action?method=viewAddForm,需要在在配置文件中配置了action的实现类,以及作为上传数据时用来保存数据的form:productForm10)searchProduct.jsp是查询结果界面,代码如下:http://localhost:8080/StrutsTest即可访问。

Struts2中的s标签 API Java Struts 程序开发

Struts2中的s标签 API Java Struts 程序开发
7. <s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajax
B:
1. <s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值
C:
R:
1.
2. <s:radio list=""></s:radio>-----单选按钮
3. <s:reset></s:reset>-----重置按钮
S:
1. <s:select list=""></s:select>-----单选框
2. <s:set name=""></s:set>-----赋予变量一个特定范围内的值
4. <s:iterator></s:iterator>-----用于遍历集合
L:
1. <s:label></s:label>-----只读的标签
M:
1. <s:merge></s:merge>-----合并遍历集合出来的值
O:
数据标签:
action:直接调用一个Action,根据executeResult参数,可以将Action的处理结果包含到页面中。
bean:创建一个JavaBean实例。。
date:格式化输出一个日期属性。
debug:生成一个调试链接,当单击该链接时,可以看到当前栈值中的内容。

htmllogic

htmllogic

Struts的Logic标签可以根据特定的逻辑条件来判断网页的内容,或者循环遍历集合元素,它和HTML,Bean标签是Struts应用种最常用的三个标签.它的功能主要是比较运算,进行字符串的匹配,判断指定的内容是否存在,循环遍历集合,进行请求转发和重定向,下面具体的说明标签的用途:<logic:equal>变量等于指定的常量<logic:notEqual>变量不等于指定的常量<logic:lessThan>变量小于指定的常量<logic:lessEqual>变量小于或者等于指定的常量<logic:greaterThan>变量大于指定的常量<logic:geraterEqual>变量大于或等于指定的常量以上这些标签都很类似, 有共同的属性,cookie属性指定cookie属性的值,然后用value设置的常量进行比较.header属性设置header请求头的值,也是通过value属性设置的值进行比较.parameter属性设置一个请求参数,然后也是通过value属性设置的值进行比较.name属性设置一个变量,然后用value比较.如果同时设置了name和property属性,此时name属性指定已经存在的JavaBean,property属性指定Bean的属性.这个标签感觉十分简单,用法也十分单一,下面研究一下进行字符串匹配的标签和判断特定内容的标签.< logic:match>标签是判断变量种是否包含常量字符串的,<logic:netMatch>也判断是否不包含字符串的,用name属性定义一个字符串变量,然后用value属性的值去判断变量是否包含这个字符串或者是不包含这个字符串,判断成功返回true.<logic:empty>和<logic:netEmpty>标签可以判断指定的变量是否为空的字符串,可以通过name属性来判断一个字符串是否为null.例如是请求参数的字符串.< logic:present>和<logic:notPresent>标签可以判断指定的对象是否为空,这个标签的属性很多. cookie属性判断Cookie是否存在.Header属性判断HTPP请求头是否存在.role属性是判断当前的权限的用户是否是指定的安全角色. user属性是判断当前通过权限验证的用户是否拥有指定的用户名.parameter属性是判断请求的参数是否存在.name属性是用来判断指定的Bean 是否存在.同时设置name和property属性就是判断Bean种的具体属性是否存在了.< logic:messagesPresent>和<logic:messagesNotPresent>标签是用来判断是否在request范围内的特定的ActionMessages或者是子类ActionErrors对象.name属性是用来检索ActionMessages对象的key,property指定从ActionMessages集合对象中检索某条消息key也就是具体的ActionMessage对象.进行循环遍历Logic标签是Logic标签库中最复杂的标签,也是用途最广泛的标签,它能够在一个循环中遍历数组,Collection,Enumeration,Irerator或者Map中的所有元素1) 遍历集合的标签< logic:iterate>的name属性指定需要进行遍历的集合对象,它每次从集合中检索出一个元素,然后存放在page范围内,并以id属性指定这个字符串来命名这个元素,最好是在里面嵌套一个<bean:write>标签,把刚刚遍历的第一个id指定的字符串输出,然后在循环在输出.length属性需要遍历的元素的数目,如果没有设置length属性,就遍历集合中的所有元素.offset属性指定开始遍历的其实位置,默认值是0.indexId属性定义一个代表当前被遍历元素的系列号,这个变量存放在page范围内,可以被<bean:write>标签访问输出输出的是int的数字.例如1.2.3.4等.可以用户输出输出的元素的系列号.2) 遍历Map 是通过<logic:iterate>标签,name属性指定一个HashMap,存放在request 范围,然后赋给id指定的变量, indexId可以指定索引编号,然后通过<bean:write>标签输出出来.在HashMap的每一个元素都是一个集合对象,所以可以嵌套使用.就是说<logic:inerate>这个标签既可以把Collection的元素弄出来负给一个变量也可以弄Map的.所以说它的功能强大.还有一个collection属性可以设置一个表达式,这个表达式返回的结果可以作为,<logic:inerate>标签输出的集合或者Map.这个属性类似name属性.最后研究一下进行请求转发和重定向的Logic 标签,<logic:forward>标签用于请求转发,它的name属性指定转发的目标,与Struts配置文件中的<global -forwards>元素和的子元素<forward>元素匹配.简单的说就是<logic:forward>标签的name属性定义的值,要去找到<golbal-forwards>子元素<forward>元素的匹配的name属性,然后通过path指定的路径进行转发.重定向用<logic:redierct>标签它的forward,href和page属性指定重定向的目标,这几个属性和<html:link>标签的属性用法十分相似.关于标签的部分我就说到这里,因为我个人觉得在Struts中最常用的无非也就是这三个标签库了.我以前还写过一个Struts的分页应用,过些天继续发布到我的Blog上.struts的LOGIC标签的多层迭代logic:Iterator 标签(以下简称“ 该标签” )是Struts 里非常常用的一个标签,其作用在于循环显示给定容器对象中的值。

Struts2标签使用

Struts2标签使用

Struts2标签使用(1):<s:textfield> ---- 文本输入框使用:<s:textfield name=”实体Bean。

属性”></s:textfield>(2):<s:textarea> ----- 文本域输入框使用:<s:textarea name=”实体Bean。

属性”></s:textarea>(3):<s:password> ----- 密码输入框使用:<s:password name=”实体Bean。

属性”></s:password>前三个基本都是一样的。

如果是要显示值的话可以这样:value = “实体Bean。

Get***()”。

(4):<s:radio list=””> ---- 单选按钮使用:<s:radio list=””>其中list 属性是必须要有的。

<1>:第一种方式:list = “#{‘male’:’男’,’female’:’女’}”<2>:第二中方式:list = “#request/session.list”。

---- 与action 结合起来了。

如果要默认选中的话后面加上value = “”.也可以通过javascript 的方式来默认选中。

(5):<s:url/> --- url连接<s:a/> --- 超链接这两个标签一般结合起来来使用。

使用:<s:url id = “id” action = “userAction”/><s:a href=”%{id}”/>(6):<s:form/> --- 获取相应form的值使用:<1>:<s:form action = “userAction”><2>:<s:url id=”userId” action = “userAction”> -- 定义了一个userId的指向userActionde 路径<s:form action=”%{userId}”>(7):<s:submit/> ---- 提交标签(8):<s:reset/> ---- 重置标签(9):<s:hidden/> ---- 隐藏域标签使用:<s:hidden name=”实体Bean。

struts 标签logiciterate用法详解用法详解

struts 标签logiciterate用法详解用法详解

<logic:iterate> 是Logic 标签库中最复杂的标签,也是用途最广的一个标签,它能够在一个循环中遍历数组、Collection、Enumeration、Iterator 或Map 中的所有元素。

1. 遍历集合<logic:iterate> 的name 属性指定需要进行遍历的集合对象, 它每次从集合中检索出一个元素, 然后把它放在page 范围内, 并以id 属性指定的字符串来命名这个元素, 例如:<%Vector animals = new Vector();animals.addElement("Dog");animals.addElement("Cat");animals.addElement("Bird");animals.addElement("Chick");request.setAttribute("Animals", animals);%><logic:iterate id="element" name="Animals"><bean:write name="element"/><br></logic:iterate>以上代码先定义了一个Vector 类型的集合变量Animals, 它存放在request 范围内. 接下来<logic:iterate> 标签在一个循环中遍历Animals 集合(这个集合名就是在标签中的nam e 属性的值)中所有元素, 每次检索到一个元素, 就把它命名为"element"(标签id 属性的值), 并存放在page 范围内.在<logic:iterate> 中, 还嵌套了一个<bean:write>标签, 它用于输出每个元素的内容. 以上代码的输出内容如下:DogCatBirdChicklength 属性指定需要遍历的元素的数目, 如果没有设置length 属性, 就遍历集合中的所有元素.offset 属性指定开始遍历的起始位置, 默认值为"0" , 表示从集合的第一个元素开始遍历.indexId 属性定义一个代表当前遍历元素序号的变量, 这个变量被存放在page 范围内,可以被标签主体的<bean:write> 标签访问. 例如:<logic:iterateid="element" // 指定输出元素的名与<bean:write> 中name 属性一致indexId="index" // 遍历元素序号的变量, 这个变量放在page 范围内name="Animals" // request 中的集合名, 从中取循环取出元素offset="1" // 从集合的第2 条记录开始取数length="2"> // 取出2 个元素<bean:write name="index"/>. // 输出每个元素的序号, 与indexId 的属性一致<bean:write name="element"/><br> // 输出每个元素的内容, 与id 的属性一致</logic:iterate>2. 遍历Map<logic:iterate> 标签还可以遍历HashMap 中的元素, 例如:<%HashMap months = new HashMap();months.put("Jan","January");months.put("Feb","February");months.put("Mar","March");request.setAttribute("month", months);%><logic:iterate id="element" indexId="ind" name="months"><bean:write name="ind"/>. // 序号<bean:write name="element" property="key"/>: // 键名<bean:write name="element" property="value"/> // 键值</logic:iterate>以上代码先定义一个名为"months" 的HashMap, 存放在request 范围内. 接下来在<log ic:iterate> 标签遍历months 对象的每一个元素, 每一个元素包含一对key/value . 在<lo gic:iterate> 标签主体中包含三个<bean:write> 标签, 分别输出每个元素的序号、key 和value. 以上代码的输出内容如下:0.Mar: March1.Feb: February2.Jan: January如果HashMap 中的每个元素的value 是集合对象, 则可以采用嵌套的<logic:iterate>标签遍历集合中的所有对象, 例如:<%HashMap h = new HashMap();String vegetables[] = {"pepper","cucumber"};String fruits[] = {"apple","orange","banana","cherry","watermelon"};String flowers[] = {"chrysanthemum","rose"};String trees[] = {"willow"};h.put("Vegetables", vegetables);h.put("Fruits",fruits);h.put("Flowers",flowers);h.put("Trees",trees);request.setAttribute("catalog",h);%><logic:iterate id="element" // 与<bean:write> 中的name 属性对应, 输出内容indexId="ind" // 与<bean:write> 中的name 属性对应, 输出序号name="catelog"> // 指定输出元素的名称<bean:write name="ind"/>. // 输出序号<bean:write name="element" // 与<logic:iterate>中id 属性对应property="key"/> // 集合中的键名<logic:iterateid="elementValue" // 与<bean:write> 中的name 属性对应name="element" // 指定输出元素的名称property="value" // 集合中的键值length="3" // 取3 个元素offset="1"> // 从第2 个位置取-------<bean:write name="elementValue"/></logic:iterate></logic:iterate>以上代码先定义一个名为"catelog" 的HashMap , 存放在request 范围内, 它的每个元素的value 为字符串数组.接下来外层的<logic:iterate>标签遍历HashMap 中的所有元素, 内层的<logic:iterate>标签访问每个元素的value 属性, 遍历value 属性引用的字符串数组中的所有元素.3. 设置被遍历的变量可以通过以下方式来设置需要遍历的变量(1) 设置name 属性, name 属性指定需要遍历的集合或Map, 例如:<logic:iterate id="element" name="Animals"><bean:write name="element"/></logic:iterate>(2) 设置name 属性和property 属性, name 属性指定一个JavaBean, property 属性指定JavaBean 的一个属性, 这个属性为需要遍历的集合或Map, 例如:<logic:iterate id="element" indexId="ind" name="catelog"><bean:write name="ind"/><bean:write name="element" property="key"/><logic:iterate id="elementValue" name="element" property="value" len gth="3" offset="1">--------<bean:write name="elementValue"/></logic:iterate></logic:iterate>(3) 设置collection 属性, collection 属性指定一个运行时表达式, 表达式的运算结果为需要遍历的集合或Map, 例如:<logic:iterate id="header" collection"<%=request.getHeaderNames()%>"> <bean:write name="header"/></logic:iterate>4. 读取JavaBean 中的数据(1) 在Jsp 页面中加入JavaBean 如:<jsp:useBean id="articleClasses" class="com.GetArticleClasses"/>上面这个JavaBean 要求必须存在一个集合数组对象,如Vector,Collection,ArrayList 等;在这个JavaBean 的构造函数中,取得数据库中的数据,并将其存入数组对象中。

struts标签说明

struts标签说明

常用Struts标签的使用说明Struts Html标签库1,<html:form>:生成HTML<form>元素,action属性用来指定用户提交表单后,处理用户请求的组建。

Struts 框架将参照struts配置文件来查找相应的action组建。

在struts-config.xml 文件中1,<html:form action=”user.do”> 与user.do对应得代码是:<action parameter="method" name="userForm" path="/user" scope="request" validate="false">2,<html:text/>:生成HTML<input type=”text”>标签的property属性指定字段的名字,对应ActionForm bean中的一个属性,代码如下:<html:text property=”loginName”/> 的对应的userForm bean属性private String login_Name;public String getLogin_Name() {return login_Name;}public void setLogin_Name(String login_Name) {this.login_Name = login_Name;}3,<html:radio/>:生成HTML<input type=”radio”>标签,使用方法与<html:text>相同。

<html:radio property=”isActive” value=”1”>启用</html:radio><html:radio property=”isActive” value=”0”>停用</html:radio>4,<html:select/>:生成HTML<select>标签。

Struts的Validator-rules.xml详解

Struts的Validator-rules.xml详解

validation.xml文件的文档结构是由validator_1_1_3.dtd文件定义,其文件头部内容如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE form-validation PUBLIC"-//Apache Software Foundation//DTD Commons Validator Rules C onfiguration 1.1.3//EN""/commons/dtds/validator_1_1_3.dtd">1.顶层元素<form-validation>,它包含<formset>和<global>子元素。

一般只需要定义<formset>元素,<formset>元素定义格式如下:<formset><constant></constant><form></form></formset>其中<constant />为可选子元素,而<form />子元素至少需要出现一次。

<form />子元素的定义格式如下:<form name=""><field property=""></field>..............<field property=" " depends=" " page=" " indexedListPr operty=" "></field></form>其中属性描述如下:l-- name:指定了表单的名字与配置文件中的form-bean的name相同;l --field:对应表单中验证的字段;l --property:对应ActionForm的属性;l-- depends:指定验证规则,例如:required、maxlength等;l-- page:ActionForm若是跨页表单,则与表单中的page属性对应。

Logic标签

Logic标签

E-MAIL:mldnqa@
< logic:iterate>标签属性
No. 属性名称 EL支持 描述
1
2 3 4 5 6 7 8 9
collection
id indexId length name scope offset property type

× × √ √ √ √ √ √
直接设置一个集合对象
判断内容是否为空 —— empty.jsp
<%@ page language="java" pageEncoding="GBK"%> <%@ page import="java.util.*"%> <%@ taglib uri="/struts/bean" prefix="bean"%> <%@ taglib uri="/struts/html" prefix="html"%> <%@ taglib uri="/struts/logic" prefix="logic"%> <html:html lang="true"> <head> <title>,MLDN高端Java培训</title> </head> <body> <% // 设置一个request范围的属性 List<String> all = new ArrayList<String>() ;// 定义集合,里面不设置内容 request.setAttribute("all",all) ; %> <logic:empty name="all" scope="request"> <!-- 判断属性是否为空 --> <h3>集合的内容为空(长度为0)!</h3> </logic:empty> <logic:empty name="author" scope="request"> <!-- 判断属性是否为空 --> <h3>没有发现author属性!</h3> </logic:empty> </body> </html:html>

STRUTS2标签中符号#,$,%的用法示例

STRUTS2标签中符号#,$,%的用法示例

#、%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分。

在这里笔者简单介绍它们的相应用途。

1.#符号的用途一般有三种。

1)访问非根对象属性,例如示例中的#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀。

实际上,#相当于ActionContext. getContext();#session.msg表达式相当于ActionContext.getContext().getSession(). getAttrib ute(”msg”) 。

2)用于过滤和投影(projecting)集合,如示例中的persons.{?#this.age>20}。

3)用来构造Map,例如示例中的#{’foo1′:’bar1′, ’foo2′:’bar2′}。

2.%符号%符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。

如下面的代码所示:构造Map<s:set name=”foobar” value=”#{’foo1′:’bar1′,‘foo2′:’bar2′}” /><p>The value of key “foo1″ is <s:property value=”#foobar['foo1']” /></p><p>不使用%:<s:url value=”#foobar['foo1']” /></p><p>使用%:<s:url value=”%{#foobar['foo1']}” /></p>3.$符号$符号主要有两个方面的用途。

在国际化资源文件中,引用OGNL表达式,例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在${min}同${max}之间。

Struts14

Struts14
http://localhost:55555/logictaglibs/LogicCompare.jsp?arg1=200
7/36
孙 丰 伟
4.设置name属性,此时name属性指定被比较的变量

比较运算标签调用变量的toString()方法,获得被比较的字符 串值.
<% request.setAttribute("intBean",new Integer(100)); %> <logic:equal name="intBean" value="100" > The value of intBean is "100".<p> </logic:equal > 在默认情况下,将依次在page、request、session和 application范围内寻找name的属性指定的变量。此外也可以 通过scope属性来指定变量的存在范围。
5/36
孙 丰 伟
13章中例子:
<bean:cookie id="cookie" name="cookiedemo" value="firsttime"/>
<% if (cookie.getValue().equals("firsttime")) { Cookie c = new Cookie("cookiedemo", "Hi Linda!"); c.setComment("A test cookie"); c.setMaxAge(3600); //60 seconds times 60 minutes response.addCookie(c); } %> The cookie value is: <bean:write name="cookie" property="value"/>

logic标签的使用规则

logic标签的使用规则

logic标签的使⽤规则项⽬引⼊struts后,在WEB-INF中会⽣成c.tld,struts-html.tld,struts-logic.tld等⽂件在jsp中引⽤相应标签的tld⽂件。

jsp中taglib⾥的uri和prefix分别对应tld⽂件中的uri和short-name:<%@ taglib uri="/tags-logic" prefix="logic"%>1.<logic:notEmpty判断bean值是否存在或⾮空:<logic:notEmpty name="user" scope="session"><!--⾼级查询的代码--></logic:notEmpty>2.<logic:equal判断bean是否相等:<logic:equal name="fwxx" property="uid" value="${er.uid}" ————>通过fwxx对象的uid属性值与value值⽐较来判断是否相等 <!--⾼级查询的代码--></logic:equal>例⼦:<c:forEach items="${list}" var="fwxx"><logic:equal name="fwxx" property="uid" value="${er.uid}"<!--⾼级查询的代码--></logic:equal></c:forEach>3.<logic:iterator显⽰列表数据:<logic:iterator id="fwxx" name="list"><a href='detail.do?fwid=${fwxx.fwid}'>${fwxx.title}</a></logic:iterator>超级好⽤:演⽰:<logic:notEmpty name="leatherRmd"><logic:iterate id="element" name="leatherRmd" offset="9" length="1"> //offset是从下标第⼏个元素取,lengthahi取⼏个数据<div style="padding: 5px 0px 0px; width: 124px;"class="goodsItem"><a href="#" target="_blank"><img style="border: currentColor; width: 64px; height: 64px; margin-right: 8px; float: left;"class="goodsimg" border="0" alt="${element.goodsName }"src="${ctx}${element.defaultImage}"></a><pstyle="width: 50px; height: 42px; line-height: 15px; padding-top: 20px;"><a title="${element.goodsName }"href="#" target="_blank">${element.goodsName }</a></p></div></logic:iterate></logic:notEmpty>版权声明:本⽂为博主原创⽂章,未经博主允许不得转载。

struts标签与jstl标签互换

struts标签与jstl标签互换

struts标签与jstl标签互换近期在做struts切换spring mvc时发现代码中使⽤了⼤量的struts标签,对常⽤的struts标签做了总结,⾸先需要引⼊<%@ taglib prefix="c" uri="/jsp/jstl/core" %>1.logic:emptylogic: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>可以使⽤jstl中的<c:if>来替换:<c:if test="${listForm.persons == '' || listForm.persons == null }"> <div>集合persons为空!</div></c:if><c:if> 标签属性和说明属性描述test需要判断的条件var保存判断结果 true 或 false 的变量名,该变量可供之后的⼯作使⽤(可选)scope变量的作⽤范围,若没有指定,默认为保存于 page 范围中的变量(可选)2.logic:notEmpty与logic:empty相反,⽤来判断⾮空:<c:if test="${listForm.persons != '' && listForm.persons != null }"> <div>集合persons不为空!</div></c:if>3.⽐较符logic:equal(=)logic:notEqual(!=)logic:greaterEqual(>=)logic:lessEqual(<=)logic:graterThan(>)logic:lessThan(<)这⼀类同样可以采⽤<c:if>来做替换4. logic:iterator⽤于显⽰列表为collection的值(List ,ArrayList,HashMap等)。

struts框架的原理和应用

struts框架的原理和应用

Struts是一个基于Java语言的开源Web应用程序框架,由Apache软件基金会开发和维护。

Struts框架基于MVC(模型-视图-控制器)设计模式,为构建企业级Java Web应用程序提供了一种简化和标准化的方法,使开发人员能够更加轻松地进行Web应用程序的设计和构建。

1. Struts框架的原理:Struts的工作原理主要是基于以下几个组件:* 控制器(ActionServlet):控制器是Struts框架的核心,负责接收浏览器发送的HTTP请求,根据请求调度处理程序,处理完请求后将结果返回给视图层。

* Action类:代表了一个具体的业务处理操作,负责处理来自用户的请求并响应。

每个Action类都需要继承框架提供的基本Action类,然后根据需求实现具体的业务逻辑。

* 配置文件(struts-config.xml):配置文件描述了Action对象、表单对象以及其他相关配置信息,例如URL映射关系、转发规则等。

控制器会根据配置文件里的信息执行相应的操作。

* 表单Bean(FormBean):表示Web页面提交表单的数据封装,用于在视图层和业务逻辑之间传递数据。

它们通常继承自框架提供的基本FormBean类,并定义表单中需要的属性和验证方法。

* 视图(JSP页面):视图层负责呈现Web应用程序的用户界面,通常使用JSP页面来实现。

JSP页面可以利用Struts自定义标签库(如:logic、html、bean等),方便地创建动态Web内容。

* Struts框架的应用:由于Struts框架简化了Web应用程序的开发过程且具有较高的稳定性和可扩展性,因此被广泛应用于企业级Java Web应用程序的开发。

例如在线商城、内容管理系统、企业信息管理系统等都可以使用Struts框架构建。

Struts框架的主要优点:* 结构清晰:基于MVC设计模式,将程序结构化为模型、视图和控制器三个部分,有利于代码的组织和维护。

struts2(checkbox_radio_select)表单标签的应用及详细事例

struts2(checkbox_radio_select)表单标签的应用及详细事例

一、表单标签_checkbox复选框如果集合为list<s:checkboxlist name="list"list="{'Java','.Net','RoR','PHP'}"value="{'Java','.Net'}"/>生成如下html代码:<input type="checkbox"name="list"value="Java" checked="checked"/><label>Java</label><input type="checkbox"name="list"value=".Net" checked="checked"/><label>.Net</label><input type="checkbox"name="list" value="RoR"/><label>RoR</label><input type="checkbox"name="list"value="PHP" /><label>PHP</label><input type="checkbox"name="list"value="PHP" /><label>PHP</label>************************************************ *****<br>如果集合为MAP<s:checkboxlist name="map"list="#{1:'瑜珈用品',2:'户外用品',3:'球类',4:'自行车'}"listKey="key"listValue="value"value="{1,2,3}"/>生成如下html代码:<input type="checkbox"name="map"value="1" checked="checked"/><label>瑜珈用品</label><input type="checkbox"name="map"value="2" checked="checked"/><label>户外用品</label><input type="checkbox"name="map"value="3" checked="checked"/><label>球类</label><input type="checkbox"name="map"value="4"/><label>自行车</label>******************************************************<br>如果集合里存放的是javabean(id和name为Person的属性)<%Person person1 = new Person(1, "第一个");Person person2 = new Person(2, "第二个");List<Person> list = new ArrayList<Person>();list.add(person1);list.add(person2);request.setAttribute("persons", list);%><s:checkboxlist name="beans"list="#request.persons"listKey="id"listValue="name"/>生成如下html代码:<input type="checkbox"name=“beans" value="1"/><label>第一个</label><input type="checkbox"name=“beans" value="2"/><label>第二个</label>************************************************ ******<br>表单标签_radio单选框<a href="radio.jsp">测试</a><br>表单标签_select单选框<a href="select.jsp">测试</a>代码运行结果如下:----------------------------------------------------------------------------------------------------------------------------二、表单标签_radio下拉选择框如果集合里存放的是javabean(id和name为Person的属性) <%Person person1 = new Person(1, "第一个");Person person2 = new Person(2, "第二个");List<Person> list = new ArrayList<Person>();list.add(person1);list.add(person2);request.setAttribute("persons", list);%>< s:radio name="beans" list="#request.persons" listKey="id"listValue="name"/> 生成如下html代码:<input type="radio"name="beans"id="beans1" value="1"/><label>第一个</label><input type="radio"name="beans"id="beans2" value="2"/><label>第二个</label>************************************************ **************<br>该标签的使用和checkboxlist复选框相同。

struts中logic标签详解

struts中logic标签详解

(1)empty标签类名:org.apache.struts.taglib.logic.EmptyTag标签体:bodycontent=JSP引用logic:empty属性attribute:name,property,scope功能:判断对象的值是否为空(2)equal类名:org.apache.struts.taglib.logic.EqualTag标签体:bodycontent=JSP引用logic:equal属性attribute:cookie,header,name,parameter,property,scope,value 功能:等于比较符(3) forwardorg.apache.struts.taglib.logic.ForwardTag标签体:bodycontent=empty引用logic:forward属性attribute:name功能:页面导向,查找配置文件的全局forward(4) greaterEqual类名:org.apache.struts.taglib.logic.GreaterEqualTag标签体:bodycontent=JSP引用logic:greaterEqual属性attribute:cookie,header,name,parameter,property,scope,value功能:大于等于比较符(5)greaterThan类名:org.apache.struts.taglib.logic.GreaterThanTag标签体:bodycontent=JSP引用logic:greaterThan属性attribute:cookie,header,name,parameter,property,scope,value功能:大于比较符(6) iterator类名:org.apache.struts.taglib.logic.IterateTag标签体:bodycontent=JSP引用logic:iterator属性attribute:collection,id,indexId,length,name,offset,property,scope,type 功能:显示列表为collection的值(List ,ArrayList,HashMap等)(7)lessEqual类名org.apache.struts.taglib.logic.LessEqualTag标签体:bodycontent=JSPlogic:lessEqual属性attribute:cookie,header,name,parameter,property,scope,value功能:小于等于比较符(8)lessThan类名:org.apache.struts.taglib.logic.LessThanTag标签体:bodycontent=JSPlogic:lessThan属性attribute:cookie,header,name,parameter,property,scope,value功能:小于比较符(9)match类名:org.apache.struts.taglib.logic.MatchTag标签体:bodycontent=JSP引用logic:match属性attribute:cookie,header,location,name,parameter,property,scope,value 功能:比较对象(10)messagesNotPresent类名:org.apache.struts.taglib.logic.MessagesNotPresentTag 标签:bodycontent=JSP引用logic:messagesNotPresent属性attribute:name,property,message功能:ActionMessages/ActionErrors对象是否不存在(11)messagePresent类名:org.apache.struts.taglib.logic.MessagesPresentTag标签:bodycontent=JSP引用logic:messagePresent属性attribute:name,property,message功能:ActionMessages/ActionErrors对象是否不存在(12)notEmpty类名:org.apache.struts.taglib.logic.NotEmptyTag标签:bodycontent=JSP引用logic:notEmpty属性attribute:name,property,scope功能:比较对象是否不为空(13)notEqual类名:org.apache.struts.taglib.logic.NotEqualTag标签:bodycontent=JSP引用logic:notEqual属性attribute:cookie,header,name,parameter,property,scope,value(14)notMatch类名:org.apache.struts.taglib.logic.NotMatchTag标签:bodycontent=JSP引用logic:notMatch属性attribute:cookie,header,location,name,parameter,property,scope,value 功能:比较对象是否不相等(15)notPresent类名:org.apache.struts.taglib.logic.NotPresentTag标签:bodycontent=JSP引用logic:notPresent属性attribute:cookie,header,name,parameter,property,role,scope,user 功能:request对象传递参数是否不存在(16)present类名:org.apache.struts.taglib.logic.PresentTag标签:bodycontent=JSP引用logic:present属性attribute:cookie,header,name,parameter,property,role,scope,user 功能:request对象传递参数是否存在(17)redirect类名:org.apache.struts.taglib.logic.RedirectTag标签:bodycontent=JSP引用logic:redirect属性attribute:anchor,forward,href,name,page,paramId,paramName,paramPr operty,paramScope,property,scope,transaction功能;页面转向,可传递参数例子:1、<logic:iterate id="row" name="formBean" property="list" indexId="index"><logic:equal name="row" property="unit" value="defaultValue"> ...</logic:equal></logic:iterate><logic:notEmpty name="info"><logic:iterate id="list" name="info"><bean:define id="curId" name="list" property="id" /><logic:equal parameter="id" value="<%= curId.toString() %>"> abcde</logic:equal></logic:iterate></logic:notEmpty>parameter要进行比较的HTTP请求参数的名称name如果要进行比较的是bean或bean的属性,则这个属性代表bean的名称property要进行比较的bean属性的名称logic使用使用struts中的<logic:iterate>标记,可以完成一些复杂的循环。

logic使用举例

logic使用举例
<bean:write name="index"/>.<bean:write name="user" property="name"/><br>
</logic:iterate>
eg3. logic:iterator标签的嵌套举例
优秀
</logic:greaterEqual>
7. logic:greaterThan
此为大于比较符,使用方法同logic:greaterEqual,略;
8. logic:lessEqual
此为小于等于比较符,使用方法同logic:greaterEqual,略;
<logic:iterate id="address" name="user" property="addressList" length="3" offset="1">
<bean:write name="address"/><br>
用于显示列表为collection的值(List ,ArrayList,HashMap等)。
eg1. 逐一输出用户列表(userlList)中用户的姓名:
<logic:iterate id="user" name="userList">
eg2. 检查在request范围内的name属性是否已“amigo”作为起始字符串:
<logic:match name="name" scope="request" value="amigo" location="start">

struts框架面试题及答案

struts框架面试题及答案

struts框架面试题及答案struts框架面试题及答案(一)1. 简单叙述ActionForm Bean的作用答案:1、ActionForm Bean也是一种JavaBean,除了具有一些JavaBean的常规方法,还包含一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默认值。

2、Struts框架利用ActionForm Bean来进行View组件和Controller组件之间表单数据的传递。

3、Struts框架把View组件接受到的用户输入的表单数据保存在ActionForm Bean中,把它传递给Controller组件,Controller组件可以对ActionForm Bean 中的数据进行修改JSP文件使用Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。

2 .叙述ActionForm执行步骤答案:(1)检查Action的映射,确定Action中已经配置了对ActionForm的映射 (2)根据name属性,查找form bean的配置信息(3)检查Action的formbean的使用范围,确定在此范围下,是否已经有此form bean的实例。

(4)假如当前范围下,已经存在了此form bean的实例,而是对当前请求来说,是同一种类型的话,那么就重用。

(5)否则,就重新构建一个form bean的实例(6)form bean的reset()方法备调用(7)调用对应的setter方法,对状态属性赋值(8)如果validatede的属性被设置为true,那么就调用form bean的validate()方法。

(9)如果validate()方法没有返回任何错误,控制器将ActionForm作为参数,传给Action实例的execute()方法并执行。

3、FormBean的作用答:FormBean是一种JAVABean,除了具有JAVABean的常规方法,还包含一些特殊方法,用于验证表单数据,以及将其属性重新设置为默认值。

Struts的使用指南

Struts的使用指南

Struts的使用指南一,通过Struts的二进制发布包安装Structs1.下载Struts的二进制发布版。

2.将Struts的二进制发布版进行解包。

(如果你是通过Struts源码构造Struts,build的结果就已经是已解包的Struts)。

解包后的Struts包含以下内容:lib/struts.jar - 这个文件包含了Struts的所有Java对象。

你需要把它拷贝到你的Web应用的WEB-INF/lib目录。

lib/structs.tld - 这是一个"tag library descriptor"文件,它描述了Struts 库的自由tag。

需要将它拷贝到你的Web应用的WEB-INF目录。

webapps/struts-documentation.war - 这是一个"web application archive"文件,包含了所有的Struts文档。

你可以将它安装到支持Servlet API 2.2或之后版本的servlet container(推荐使用tomcat)中。

webapps/struts-example.war - 这是一个web应用实例,它广泛地演示了Struts 的许多功能。

你可以将它安装到兼容Servlet2.2或之后版本以及JSP1.1或之后版本规范的servlet容器中(推荐使用tomcat)。

webapps/struts-test.war - 这个web应用包含了Struts支持的许多tag的测试网页,可以作为使用Struts tag的例子。

二,可通过以下的步骤在你自己的应用程序中使用Struts1,确保struts.jar在你的类路径上。

可以把struts.jar拷到你的/WEB-INF/lib目录下2,把struts目录下所有的.tld文件拷贝到你的WEB目录下的WEB-INF文件夹下3,修改web.xml文件,声明Struts ActionServlet<servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class></servlet><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>4,修改web.xml来声明在JSP中使用的Struts标签;[可选]<taglib><taglib-uri>/bean</taglib-uri><taglib-location>/WEB-INF/struts-bean.tld</taglib-location></taglib><taglib><taglib-uri>/form</taglib-uri><taglib-location>/WEB-INF/struts-form.tld</taglib-location></taglib><taglib><taglib-uri>/logic</taglib-uri><taglib-location>/WEB-INF/struts-logic.tld</taglib-location></taglib><taglib><taglib-uri>/template</taglib-uri><taglib-location>/WEB-INF/struts-template.tld</taglib-location></taglib>这样在JSP中可以这样使用这些标签库。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

struts标签使用举例--logic篇
1. logic:empty 该标签是用来判断是否为空的。

如果为空,该标签体中嵌入的内容就会被处理。

该标签用于以下情况:
1)当Java对象为null时;
2)当String对象为""时;
3)当java.util.Collection对象中的isEmpty()返回true时;
4)当java.util.Map对象中的isEmpty()返回true时。

eg.
<logic:empty name="userList">
...
</logic:empty>
该句等同于:
if (userList.isEmpty()) {
...
}
2. logic:notEmpty
该标签的应用正好和logic:empty标签相反,略。

3. logic:equal
该标签为等于比较符。

eg1. 比较用户的状态属性是否1,若为1,输出"启用";
<logic:equal name="user" property="state" value="1">
启用
</logic:equal>
eg2. 如果上例中的value值是动态获得的,例如需要通过bean:write输出,因struts不支持标签嵌套,可采用EL来解决该问题。

<logic:equal name="charge" property="num" value="${business.num}">
......
</logic:equal>
4. logic:notEqual
该标签意义与logic:equal相反,使用方法类似,略。

5. logic:forward
该标签用于实现页面导向,查找配置文件的全局forward。

eg. <logic:forward name="index"/>
6. logic:greaterEqual
为大于等于比较符。

eg. 当某学生的成绩大于等于90时,输出“优秀”:
<logic:greaterEqual name="student" property="score" value="90">
优秀
</logic:greaterEqual>
7. logic:greaterThan
此为大于比较符,使用方法同logic:greaterEqual,略;
8. logic:lessEqual
此为小于等于比较符,使用方法同logic:greaterEqual,略;
9. logic:lessThan
此为小于比较符,使用方法同logic:greaterEqual,略;
10. logic:match
此标签比较对象是否相等;
eg1. 检查在request范围内的name属性是否包含"amigo"串:
<logic:match name="name" scope="request" value="amigo">
<bean:write name="name"/>中有一个“amigo”串。

</logic:match>
eg2. 检查在request范围内的name属性是否已“amigo”作为起始字符串:
<logic:match name="name" scope="request" value="amigo" location="start">
<bean:write name="name"/>以“amigo”作为起始字符串。

</logic:match>
eg3.
<logic:match header="user-agent" value="Windows">
你运行的是Windows系统
</logic:match>
11. logic:notMatch
此标签用于比较对象是否不相同,与logic:match意义相反,使用方法类似,略。

12. logic:messagePresent
该标签用于判断ActionMessages/ActionErrors对象是否存在;
eg. 如果存在error信息,将其全部输出:
<logic:messagePresent property="error">
<html:messages property="error" id="errMsg" >
<bean:write name="errMsg"/>
</html:messages>
</logic:messagePresent >
13. logic:messagesNotPresent
该标签用于判断ActionMessages/ActionErrors对象是否不存在,使用方法与logic:messagePresent 类似,略
14. logic:present
此标签用于判断request对象传递参数是否存在。

eg1. user对象和它的name属性在request中都存在时,输出相应字符串:
<logic:present name="user" property="name">
user对象和该对象的name属性都存在
</logic:present>
eg2. 若有一个名字为“user”的JavaBean,输出对应字符串:
<logic:present name="user" >
有一个名字为“user”的JavaBean。

</logic:present>
eg3.
<logic:present header="user-agent">
we got a user-agent header.
</logic:present>
15. logic:notPresent
此标签用于判断request对象传递参数是否不存在,意义与了logic:present相反,使用方法类似,略。

16. logic:redirect
该标签用于实现页面转向,可传递参数。

eg1. <logic:redirect href=""/>
17. logic:iterator
用于显示列表为collection的值(List ,ArrayList,HashMap等)。

eg1. 逐一输出用户列表(userlList)中用户的姓名:
<logic:iterate id="user" name="userList">
<bean:write name="user" property="name"/><br>
</logic:iterate>
eg2. 从用户列表中输出从1开始的两个用户的姓名
<logic:iterate id="user" name="userList" indexId="index" offset="1" length="2">
<bean:write name="index"/>.<bean:write name="user" property="name"/><br>
</logic:iterate>
eg3. logic:iterator标签的嵌套举例
<logic:iterate id="user" indexId="index" name="userList">
<bean:write name="index"/>. <bean:write name="user" property="name"/><br>
<logic:iterate id="address" name="user" property="addressList" length="3" offset="1"> <bean:write name="address"/><br>
</logic:iterate>
</logic:iterate>。

相关文档
最新文档