【学习笔记】struts-tag与jstl的异同
2014-07-16 00:47
344 查看
今天看马士兵老师的struts2讲struts-tag视频,边看边打代码,于是就想和jstl中的核心标签库的用法做比较。
OgnlAction:
页面返回到ognl.jsp
例如:输出<hr/>标签:
由于struts中应用了ognl表达式,所用的String都要用单引号引起来。
再例如:输出变量username(在通过action访问时用get方式为username赋值):
虽然都可以访问,但username的位置不同。struts访问的username存在于OgnlAction中,而jstl访问的位于request中
再例如:利用刚刚得到的username为其他几个变量赋值,同时为另外两个变量赋值:"username"
两者的效果完全相同。
由于在request中保存了username,所以试着分别用两种方式取值:
但如果用get传递Action中未定义的变量,比如age=10,那么这种方式貌似取不到 ,无解。
我们现在尝试用struts的set标签设定一个变量,然后用jstl读取,再用jstl修改这个变量的值,用struts读取:
bean 构造(以Dog为例):
需要注意的是,struts的bean装到了Stack Context中,而jsp的bean需要自己指定范围。
对于遍历集合,两种标签略有不同:
OgnlAction:
package com.sxt.ognl; import com.opensymphony.xwork2.ActionSupport; public class OgnlAction extends ActionSupport{ private String password; private String username; public String execute() { return SUCCESS; } /*省略getter和setter*/ }
页面返回到ognl.jsp
例如:输出<hr/>标签:
<!-- struts标签 --> <s:property value = "'<hr/>'" escape = "false"/> <s:property value = "'<hr/>'" escape = "true"/> <!-- jstl核心标签 --> <c:out value = "<hr/>" escapeXml = "false"/> <c:out value = "<hr/>" escapeXml = "true"/>
由于struts中应用了ognl表达式,所用的String都要用单引号引起来。
再例如:输出变量username(在通过action访问时用get方式为username赋值):
<!-- struts标签 --> <s:property value = "username"/> <!-- jstl标签 --> <c:out value = "${username}"/>
虽然都可以访问,但username的位置不同。struts访问的username存在于OgnlAction中,而jstl访问的位于request中
再例如:利用刚刚得到的username为其他几个变量赋值,同时为另外两个变量赋值:"username"
<!-- struts的set --> <s:set var = "adminname" value = "username"/> <s:set var = "logname" value = "'username'"/> <!-- c的set --> <c:set var = "adminname1" value = "${username }"/> <c:set var = "logname1" value = "username"/>
两者的效果完全相同。
由于在request中保存了username,所以试着分别用两种方式取值:
<!-- s从request取值 --> <s:property value = "#request.username"/> <!-- c从request取值 --> <c:out value = "${ requestScope.username}"/>
但如果用get传递Action中未定义的变量,比如age=10,那么这种方式貌似取不到 ,无解。
我们现在尝试用struts的set标签设定一个变量,然后用jstl读取,再用jstl修改这个变量的值,用struts读取:
<s:set var = "adminPwd" value = "password" scope = "page"/> <c:out value = "${pageScope.adminPwd }"/> <c:set var = "adminPwd" scope = "page" value = "hahaha"/> <s:property value = "#attr.adminPwd"/>由于范围是page,而在struts中page的读取较为复杂,这里用了另外一种读取方式:#attr
bean 构造(以Dog为例):
package com.sxt.ognl; public class Dog { private String name; public Dog(){} /*省略getter和setter*/ }
<!-- struts构造bean --> <s:bean var = "mylittledog" name = "com.sxt.ognl.Dog"> <s:param name = "name" value = "'oudy'"/> </s:bean> <!-- jsp构造bean --> <jsp:useBean id = "myBigDog" scope = "request" class = "com.sxt.ognl.Dog"/> <jsp:setProperty name = "myBigDog" property = "name" value = "oudy2"/> <!-- struts获得dog对象 --><s:property value = "#mylittledog"/> <!-- jsp获得dog对象 --> <c:out value = "${requestScope.myBigDog }"/> <!-- struts获得dog属性 --> <s:property value = "#mylittledog.name"/> <!-- jstl获得dog属性 --> <c:out value = "${requestScope.myBigDog.name }"/> <!-- jsp获得dog属性--> <jsp:getProperty property = "name" name = "myBigDog"/>
需要注意的是,struts的bean装到了Stack Context中,而jsp的bean需要自己指定范围。
对于遍历集合,两种标签略有不同:
<s:iterator value = "{'aaa','bbb','ccc'}" var = "x" status = "status"> 当前元素:<s:property/> 遍历过的元素总数:<s:property value = "#status.count"/> 遍历过的元素索引:<s:property value = "#status.index"/> 当前是偶数?:<s:property value = "#status.even"/> 当前是奇数?:<s:property value = "#status.odd"/> 第一个元素?:<s:property value = "#status.first"/> 最后一个元素?<s:property value = "#status.last"/> </s:iterator>
<c:forEach items = "aaa,bbb,ccc,ddd" var = "item" varStatus = "status"> 当前元素:<c:out value = "${item }"/> 遍历过的元素总数:<c:out value = "${status.count }"/> 遍历过的元素索引:<c:out value = "${status.index }"/> 项:<c:out value = "${status.current }"/> 当前是奇数?:<c:out value = "${status.count%2==1 }"/> 当前是偶数?:<c:out value = "${status.count%2==0 }"/> 第一个元素?:<c:out value = "${status.first }"/> 最后一个元素?:<c:out value = "${status.last }"/> </c:forEach>
相关文章推荐
- 关于ognl+struts-tag与el+jstl互相代替,以及el和jstl的学习笔记
- ognl+struts-tag与el+jstl互相代替,以及el和jstl的学习笔记
- Java for Web学习笔记(二九):JSTL(5)FMT Tag(上)
- JSTL Tag学习笔记(二)之<fmt: />
- struts学习笔记 [JSTL]<c:forEach>标签的使用
- JSTL Tag学习笔记之<fn: />
- [struts2学习笔记] 第四节 学着使用struts 2的tag标签
- Java for Web学习笔记(二八):JSTL(4)Core Tag(下)
- Struts 1 学习笔记-3-3(JSTL格式化标签库测试)
- [struts2学习笔记] 第四节 学着使用struts 2的tag标签
- 尚学堂Struts学习笔记2:JSTL_格式化库及函数库
- [struts2学习笔记] 第四节 学着使用struts 2的tag标签
- [struts2学习笔记] 第四节 学着使用struts 2的tag标签
- Struts 1 学习笔记-3-2(JSTL核心标签库测试)
- struts2.01学习笔记
- JSTL 学习笔记
- Struts 源码学习笔记
- Struts 学习笔记1 -Struts Framework 概览
- 学习Struts+spring+Hibernate的笔记.
- 学习笔记-JSTL标签库--C SQL