第15章struts2标签讲解.docx
- 文档编号:4467252
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:12
- 大小:83.25KB
第15章struts2标签讲解.docx
《第15章struts2标签讲解.docx》由会员分享,可在线阅读,更多相关《第15章struts2标签讲解.docx(12页珍藏版)》请在冰豆网上搜索。
第15章struts2标签讲解
Struts标签:
1.通用标签:
(1)property
(2)bean
(3)param
(4)debug
2.控制标签:
(1)ifelseifelse
(2)iterator
一、property标签
类似于上节课的例子,
1.在WebRoot下新建一个index_tags.jsp:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
访问属性:
//localhost: 8080/ch2_example1/test/tags.action? username=aaa&password=bbb">tags 2.新建一个my.tags.TagsAction: packagemy.tags; importcom.opensymphony.xwork2.ActionSupport; publicclassTagsActionextendsActionSupport{ privateStringusername; privateStringpassword; publicStringexecute(){ this.addFieldError("fielderror.test","wrong! "); returnSUCCESS; } publicStringgetUsername(){ returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } } 3.修改struts.xml: 4.在WEB-INF/page下新建tags.jsp: <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <%@taglibprefix="s"uri="/struts-tags"%> DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
- property:
propertyvalue="username"/>
- property赋值为字符串:
propertyvalue="'username'"/>
- property设为默认值:
propertyvalue="admin"default="管理员"/>
- property设定HTML:
propertyvalue="'
'"escape="true"/>
测试:
在地址栏输入:
http:
//localhost:
8080/ch2_example1/index_tags.jsp
点击超链接tags
得到下面的结果:
1.property:
aaa
2.property赋值为字符串:
username
3.property设为默认值:
管理员
4.property设定HTML:
解释:
propertyvalue="username"/>
这个用法上节课已经讲过,不解释了。
propertyvalue="'username'"/>
这是把username作为字符串处理。
propertyvalue="admin"default="管理员"/>
这是给admin赋默认值,如果admin有值,则取它的值显示,如果没有,则显示默认值。
propertyvalue="'
'"escape="true"/>
如果把escape改为false,则将对
进行解析。
2、Bean标签:
Bean标签用于创建一个JavaBean的实例,创建实例时通过 param/>给JavaBean传入参数。 如果通过 param/>给JavaBean传入属性值则需要给JavaBean设置Setter方法,如果需要访问JavaBean的属性则需要设置Getter方法。 Bean标签有两个属性: 1.Name: 必填的属性,指定需要实例化的Java类 2.Var: 可选项。 如指定了该属性,则该JavaBean实例会被放入StackContext中(不是ValueStack),从而允许直接通过该var属性来访问该JavaBean的实例。 新建Person类 packagemy.ognl; publicclassPerson{ privateStringname; privateStringmajor; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetMajor(){ returnmajor; } publicvoidsetMajor(Stringmajor){ this.major=major; } publicStringmethod1(){ return"来自JavaBean的方法"; } publicStringmethod1(Stringname){ returnname+"来自JavaBean的方法"; } } 新建index1.jsp: <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <%@taglibprefix="s"uri="/struts-tags"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+": //"+request.getServerName()+": "+request.getServerPort()+path+"/"; %> DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--
-->
beanname="my.ognl.Person"> paramname="name"value="'zhangsan'"> param> mynameis: propertyvalue="name"/> bean> 访问该jsp,得到结果为: 修改index1.jsp:
beanname="my.ognl.Person"var="person"> paramname="name"value="'zhangsan'"> param>
bean>
mynameis:
propertyvalue="#person.name"/> 得到的结果是一样的。 如果想访问JavaBean中的方法,修改index1.jsp:
beanname="my.ognl.Person"var="person"> paramname="name"value="'zhangsan'"> param>
bean>
mynameis:
propertyvalue="#person.name"/> propertyvalue="#person.method1()"/> propertyvalue="#person.method1('ooo')"/> 测试结果为: 在tags.jsp中加入,通过debug标签查看结果 beanname="my.ognl.Dog"> bean> beanname="my.ognl.Dog"var="mydog"> paramname="name"value="'dagou'"> param> bean> debug> debug> 在tags.jsp中加入以下语句: 查看结果及值栈内容:
beanname="my.ognl.Dog"> paramname="name"value="'xiaogou'"> param> propertyvalue="name"/> debug> debug> bean> 结果为: 注意: bean>开始的时候,新建对象,放到栈顶。 执行结束,对象就不在栈中了。 所以一定要在 bean>中赋值和取值,否则取不到。 如果想在 bean>执行完之后还能使用,就用var。 修改var这一部分: beanname="my.ognl.Dog"var="mydog"> paramname="name"value="'dagou'"> param> bean> 取狗的名字: propertyvalue="#mydog.name"/> 注意: 此时mydog是放在了ActionContext中,可以通过#取出来。 三、fielderror标签 修改tags.jsp fielderrorfieldName="fielderror.test"theme="simple"> fielderror> 查看输出结果。 四、if、elseif、else标签 修改tags.jsp: age= propertyvalue="#parameters.age"/> 在地址栏输入: http: //localhost: 8080/ch2_example1/test/tags.action? username=aaa&password=bbb&age=8&age=10 得到一个集合 if,elseif,else: age=8,10 如果希望得到集合中的第一个值,则写为: age= propertyvalue="#parameters.age[0]"/> 在刚才的基础上使用分支控制标签: age= propertyvalue="#parameters.age[0]"/> iftest="#parameters.age[0]<0">wrongdata if> elseiftest="#parameters.age[0]<18">stillchild elseif> else>mrright! else> 修改地址栏传入的年龄值,查看不同的结果。 继续修改tags.jsp: 如果没有aaa这个属性,则可以这样判断: iftest="#parameters.aaa==null">aaaisnull if> 五、iterator标签 遍历集合: iteratorvalue="{1,2,3}"> property/>| iterator> 自定义变量: iteratorvalue="{'aaa','bbb','ccc'}"var="x"> propertyvalue="#x.toUpperCase()"/>| iterator> 1.遍历集合: 1|2|3| 2.自定义变量: AAA|BBB|CCC| 使用status: iteratorvalue="{'aaa','bbb','ccc'}"status="status"> property/>| 遍历的元素个数: propertyvalue="#status.count"/> 遍历的元素索引: propertyvalue="#status.index"/> 遍历的是否偶数: propertyvalue="#status.even"/> 遍历的是否奇数: propertyvalue="#status.odd"/> 遍历的是否第一个? propertyvalue="#status.first"/> 遍历的是否最后一个? propertyvalue="#status.last"/> iterator> 输出结果为: 1.使用status: aaa|遍历的元素个数: 1遍历的元素索引: 0遍历的是否偶数: false遍历的是否奇数: true遍历的是否第一个? true遍历的是否最后一个? false bbb|遍历的元素个数: 2遍历的元素索引: 1遍历的是否偶数: true遍历的是否奇数: false遍历的是否第一个? false遍历的是否最后一个? false ccc|遍历的元素个数: 3遍历的元素索引: 2遍历的是否偶数: false遍历的是否奇数: true遍历的是否第一个? false遍历的是否最后一个? true 修改tags.jsp: 映射: iteratorvalue="#{1: 'a',2: 'b',3: 'c'}"> propertyvalue="key"/>| propertyvalue="value"/> iterator> 映射: iteratorvalue="#{1: 'a',2: 'b',3: 'c'}"var="x"> propertyvalue="#x.key"/>| propertyvalue="#x.value"/> iterator> 结果为: 映射: 1|a2|b3|c 映射: 1|a2|b3|c 【作业】 设计一个jsp页面,要求包含以下标签,该页面的主题自定。 checkbox、checkboxlist、combobox date、doubleselect、label password、radio reset、select text、textarea、textfield 要求查阅struts文档,将这些标签的介绍和属性也要写在大作业中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 15 struts2 标签 讲解
![提示](https://static.bdocx.com/images/bang_tan.gif)