JSTL常用标签之大聚集---中
<c:forEach>标签:
?? 主要功能为循环控制,可以将集合中的 成员进行迭代输出,功能与Iterator接口类似;
测试页面:
<% String info[] = {"JAVA","LINUX","C++"}; pageContext.setAttribute("info",info); %> 输出全部内容: <c:forEach items="${info}" var="mem"> ${mem }<br/> </c:forEach><br/>输出全部内容(间隔为2):<c:forEach items="${info}" var="mem" step="2"> ${mem }<br/> </c:forEach><br/> 输出前2个:<c:forEach items="${info}" var="mem" begin="0" end="1"> ${mem }<br/> </c:forEach>
?其属性:
No名称EL描述1var不支持用来存放集合中的每一个对象2items支持保存所有的集合,主要是数组,Collection(List,Set),及Map3varStatus不支持用于存放当前对象的成员信息4begin支持集合的开始位置,默认从0开始5end支持集合的结束为止,默认为集合的最后一个元素6step支持每次迭代的间隔数,默认为1?
List的输出:
<% List all = new ArrayList(); all.add("keith"); all.add("Jam"); all.add("Scora"); all.add("given"); pageContext.setAttribute("all",all); %> 输出全部: <c:forEach items="${all}" var="names"> ${names } </c:forEach>
?还可以输出set,只要是Collection接口的子接口或类都可以输出;输出Map时有点麻烦,所有保存在Map集合中的对象都是通过Map.Enty的形式保存的,所以要想分离出Key和Value,则需要通过Map.Enty提供的getKey()和getValue()方法;
测试页面:
<body> <% Map map = new HashMap(); map.put("name","keith"); map.put("age","21"); pageContext.setAttribute("info",map); %> <c:forEach items="${info}" var="mem"> ${mem.key }--->${mem.value }<br /> </c:forEach></body>
?<c:forTokens>标签:
?? 用于输出操作的,类似String类中的split()方法和循环输出的一种集合;
测试页面:
<% String info = "www.google.com"; pageContext.setAttribute("ref",info); %> 拆分的结果是: <c:forTokens items="${ref}" delims="." var="connect"> ${connect }, </c:forTokens>
?其属性是:
NO名称EL描述1var不支持用来存放集合中的每一个对象2items支持要输出的字符串3delims不支持定义分隔字符串的内容4varStatus不支持存放当前对象的相关信息5begin支持开始的输出位置,默认从0开始6end支持结束的输出位置,默认是最后一个7step支持迭代输出的问题<c:import />标签:
?? 可以将其他页面的内容包含进来一起显示,于<jsp:inlcude>很像,但是<c:import />可以包含互联网的上的页面:
测试页面:
<body> 导入google: <c:import url="http://www.google.com/"></c:import> </body>
?将google的页面导入进来,其属性如下:
No属性名称EL描述1url支持指定要包含的文件路径2context支持如果要访问在同一个web容器下的其他资源时,必须以"/"开头3var不支持存储导入的文件内容4scope不支持定义var的保存范围,默认为page范围5charEncoding支持定义字符编码6varReader不支持存储导入的文件内容,以Reader类型存入?
<c:url />标签:
?? 可以直接再产生一个URL地址,语法如下:
<c:url value="http://www.google.com.hk/" var="urlInfo"><c:param name="author" value="keith" /><c:param name="google" value="love" /></c:url><a href="${urlInfo }">GOOGLE</a>
?当然这个测试是不成功的!会跳到google的默认Error网页上(输出时仔细观察地址栏的地址);
此标签的属性是:
No属性名称EL描述1value支持要执行的URL2context支持如果要访问在同一个web容器下的其他资源时设置,必须以"/"开头3var不支持存储导入的文件内容4scope不支持定义var的保存范围,默认为page页面<c:redirect />标签:
在JSTL中提供一个与response.sendRedirect()操作相似的标签(进行客户端跳转):
<c:redirect url="main.jsp"><c:param name="name" value="keith" /><c:param name="url" value="http://google.com" /></c:redirect>
?此标签是完成客户端跳转,并且传递了两个参数!运行后观察地址栏URL!