[size=medium][b]输出[/b][/size]
默认输出的是request中拥有的变量,为什么不是pageContext(当前页面)下面解释!
获取session中
以下只介绍request的情况,对于其session作用域的,只要在前面加个sessionScope就可以了。application作用域类似。
获取javabean属性
[size=medium][b]遍历:[/b][/size]
遍历数组
var 属性指代数组中的元素,varStatus顾名思义是记住一些遍历时候的状态信息,可以获取当前是第几个元素,已经循环了几个元素,第一个元素是什么之类的....
遍历list,
遍历map
特别的:获取集合类第某个元素的代码:
和数组的操作方式一样!list和map都是同样的,不存在get(index)这种东西。
如果要指定循环开始的index和步长,代码是这样
[size=medium][b]条件判断[/b][/size]
if else 标签是这样
[size=medium][b]运算符号 equals换成eq,其他的不变![/b][/size]
比如判断user的userName为指定的值
另有一个empty运算符,比如判断list是否为空,注:判断字符串为空也用这个
[size=medium][b]至于嵌套[/b][/size],list嵌套map,然后嵌套javabean。只要你熟知上面的语法规则。也是一样的。这里给出一个list签到map嵌套javabean的例子
[size=medium][b]fn函数[/b][/size]
fn函数库带了很多的方法。也不用刻意去记,几乎和java里面的名字是一摸一样的,比如对于String类,甚至是完全照搬,比如indexOf,replace,split,trim等。可以望文生义放心的直接来使用。
下面给出fn函数试用的一个例子,获取集合类(包括数组,list,map等等)的长度
[size=medium][b]另外:[/b][/size]介绍一下<c:set>和<c:remove>标签。假如,以上面的嵌套为例,假如我得到了list的第x个map的"supben" key 所对应的user的userName 为supben。
我在下面还要使用用来做文档的footer,我总不能用一遍遍历判断一次吧。这时候<c:set>标签就派上用场了
然后在使用的地方这么调用
<c:remove>,你用完不想要了。用下面的代码移除
[color=blue]注意:这两个标签都有scope属性,如果是把变量添加在request中,只需加上scope="request"。默认作用域是pageContext(当前页面中)。
这就带来了一个问题,就是本文一开始提到的,假如,在action(request)中有一个变量叫footer,我在页面中也用set标签定义了一个footer,那么我用${footer}取出来的结果是什么?答案是用set标签定义的!因为在mvc中,jsp极少自己定义变量极,而且你也可以完全可以控制做到用不同的变量名,所以el表达式默认的前缀对象是request!
反而移除是不会有问题。接着上面的步骤,我们在set 打印之后remove footer,再次输出,我们看到打出的值变成了request里面的那个footer!因为remove默认移除的是page中的变量,如果在remove标签里加个scope="session"呢?那么打印的结果是当前页面刚刚定义的footer!
[/color]
综上:介绍了显示,操作session和request,运算符,条件语句,循环语句。变量的定义和移除等。
这就基本能替换掉jsp页面所需要的java代码。
<c:out value="xxx"></c:out>
默认输出的是request中拥有的变量,为什么不是pageContext(当前页面)下面解释!
<c:out value="${userName}"></c:out>
获取session中
<c:out value="${sessionScope.userName}"></c:out>
以下只介绍request的情况,对于其session作用域的,只要在前面加个sessionScope就可以了。application作用域类似。
获取javabean属性
<c:out value="${user.userName}"></c:out>
[size=medium][b]遍历:[/b][/size]
遍历数组
int numbers = {1,2,3,4};
<c:forEach items="${numbers }" var="number" varStatus="indexs">
内容:<c:out value="${number}"></c:out>
当前元素在数组中的位置::<c:out value="${indexs.index}"></c:out>
</forEach>
var 属性指代数组中的元素,varStatus顾名思义是记住一些遍历时候的状态信息,可以获取当前是第几个元素,已经循环了几个元素,第一个元素是什么之类的....
遍历list,
List<User> users = new ArrayList<User>();
<c:forEach items="${users}" var="user" varStatus="indexs">
用户名:<c:out value="${user.userName}"> </c:out>
</forEach>
遍历map
<c:forEach items="${map}" var="mymap" >
<c:out value="${mymap.key}" />
<c:out value="${mymap.value}" />
</c:forEach>
特别的:获取集合类第某个元素的代码:
<c:out value="${intArray[0]"}</c:out>
和数组的操作方式一样!list和map都是同样的,不存在get(index)这种东西。
如果要指定循环开始的index和步长,代码是这样
<c:forEach items="${list}" var="option" begin="10" end="100" step="5">
</c:forEach>
[size=medium][b]条件判断[/b][/size]
if标签是这样
<c:if test="条件">
</c:if>
if else 标签是这样
<c:choose>
<c:when test="条件">
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
[size=medium][b]运算符号 equals换成eq,其他的不变![/b][/size]
比如判断user的userName为指定的值
<c:if test="${"supben" eq user.userName}">
</c:if>
另有一个empty运算符,比如判断list是否为空,注:判断字符串为空也用这个
if(users!=null || users.size()>0){
}
<c:if test="${!(empty users)}">
</c:if>
[size=medium][b]至于嵌套[/b][/size],list嵌套map,然后嵌套javabean。只要你熟知上面的语法规则。也是一样的。这里给出一个list签到map嵌套javabean的例子
List<Map<String,User>> maps= new ArrayList<Map<String,User>>();
<c:forEach items="${maps}" var="map">
<c:forEach items="${map}" var="mymap">
<c:out value="${mymap.value.userName}">
</c:forEach>
</c:forEach>
[size=medium][b]fn函数[/b][/size]
fn函数库带了很多的方法。也不用刻意去记,几乎和java里面的名字是一摸一样的,比如对于String类,甚至是完全照搬,比如indexOf,replace,split,trim等。可以望文生义放心的直接来使用。
下面给出fn函数试用的一个例子,获取集合类(包括数组,list,map等等)的长度
<c:out value="${fn:length(list)}"></c:out>
[size=medium][b]另外:[/b][/size]介绍一下<c:set>和<c:remove>标签。假如,以上面的嵌套为例,假如我得到了list的第x个map的"supben" key 所对应的user的userName 为supben。
我在下面还要使用用来做文档的footer,我总不能用一遍遍历判断一次吧。这时候<c:set>标签就派上用场了
<c:set value="xxxxxxxx" var="footer">
然后在使用的地方这么调用
<c:out value="${footer}"></c:out>
<c:remove>,你用完不想要了。用下面的代码移除
<c:remove var="footer"></c:remove>
[color=blue]注意:这两个标签都有scope属性,如果是把变量添加在request中,只需加上scope="request"。默认作用域是pageContext(当前页面中)。
这就带来了一个问题,就是本文一开始提到的,假如,在action(request)中有一个变量叫footer,我在页面中也用set标签定义了一个footer,那么我用${footer}取出来的结果是什么?答案是用set标签定义的!因为在mvc中,jsp极少自己定义变量极,而且你也可以完全可以控制做到用不同的变量名,所以el表达式默认的前缀对象是request!
反而移除是不会有问题。接着上面的步骤,我们在set 打印之后remove footer,再次输出,我们看到打出的值变成了request里面的那个footer!因为remove默认移除的是page中的变量,如果在remove标签里加个scope="session"呢?那么打印的结果是当前页面刚刚定义的footer!
[/color]
综上:介绍了显示,操作session和request,运算符,条件语句,循环语句。变量的定义和移除等。
这就基本能替换掉jsp页面所需要的java代码。