`c:forEach`
forEach为循环标签,相当于Java中的while和for
- 之前我们在使用EL表达式获取到集合的数据,遍历集合都是用scriptlet代码循环,现在我们学了forEach标签就可以舍弃scriptlet代码了。
- 向Session中设置属性,属性的类型是List集合
<% List list = new ArrayList<>(); list.add("zhongfucheng"); list.add("ouzicheng"); list.add("xiaoming"); session.setAttribute("list", list); %>
- 遍历session属性中的List集合,items:即将要迭代的集合。var:当前迭代到的元素
<c:forEach var="list" items="${list}" > ${list}<br> </c:forEach>
- 效果:
- 遍历Map对象有稍微地不一样,我们来看一下,var属性保存的不是每个迭代的对象,而是Map.Entry。
<% Map map = new HashMap(); map.put("1", "zhongfucheng"); map.put("2", "xiaohong"); map.put("3", "xiaoming"); session.setAttribute("map",map); %> <c:forEach var="me" items="${map}" > ${me.key} ${me.value}<br> </c:forEach>
- begin默认从0开始、end默认为集合的最后一个元素、step默认为1
- varStatus代表着当前对象被迭代的信息,它有以下的属性。
- index【返回当前是第几个对象,从0开始计数】
- count【已经遍历多少个对象了,从1开始计数】
- first【是否是第一个】
- last【是否是最后一个】
- current【当前被迭代的对象】
- begin【开始的位置】
- end【最后的位置】
- step【步长】
<c:forEach var="list" items="${list}" varStatus="varStatus" > ${list}您的下标是:${varStatus.index}<br> </c:forEach>
- 效果:
`c:forTokens`
该标签类似于String类的split()和for循环的一种集合
它与forEach标签非常相似,都有begin、end、step、items、var、varStatus属性,不同的是forTokens标签的items属性里面是字符串,这个字符串会被delims属性的内容分割成多个字符串!
<c:forTokens items="zhongfucheng,ouzicheng,xiaoming,xiaohong" var="name" delims="," > ${name} </c:forTokens>
- 效果图:
`c:import`
import标签类似于JSP行为<jsp:include/>
和JSP指令<%include>
import标签的属性:
- url【指定要包含的路径,Internet所有的url都可以】
- context【访问同一个web容器的其他资源,以"/"开头】
- var【保存导入的文件的内容,以String类型存储】
- socpe【保存的范围,默认是page】
- charEncoding【字符编码】
- varReader【保存导入文件的内容,以Reader类型存储】
当然了,import标签功能更加更大!强大在哪里呢?import标签可以引入Internet网页上的内容,也就是说,csdn也可以引入进来!
- 我们来用一下把!
<c:import url="http://www.csdn.net" charEncoding="UTF-8" />
- 我们一看,是没有样式的:
- 打印csdn的源代码:
<c:import url="http://www.csdn.net" charEncoding="UTF-8" var="net"/> CSDN的源码是:<br><br><br><br><br> <c:out value="${net}" escapeXml="true"></c:out>
- 效果:
`c:param`
- 在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。标签可以嵌套在、或标签内,为这些标签所使用的URL地址附加参数。
- 标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,则将其转换为“%d6%d0%b9%fa”后再附加到URL地址后面,这也就是使用标签的最大好处。
`c:url`
url标签十分实用!在浏览器禁用Cookie的时候,我们之前学Servlet时解决办法是:response.encodeURL()。url标签也可以实现这样的功能,再配合param标签使用,就十分实用了!
- 我们配合param标签来使用一下吧!
<c:url value="2.jsp" var="url"> <c:param name="name" value="中国!"> </c:param> </c:url> <a href="${url}">我经过了URL地址重写!</a>
- 效果:
`c:redirect`
redirect标签用于实现Redirect功能,当然了,此标签也能够配合param标签使用!
- 简单使用一下,重定向到2.jsp,带了一个参数:
<c:redirect url="2.jsp" > <c:param name="name" value="zhongfucheng"> </c:param> </c:redirect>
- 在2.jsp中获取到参数
fmt标签库
fmt标签库也叫做国际化标签库。这里就不详细说明了,等我讲到Web 国际化的时候才讲吧!