问题?JSTL中的核心标签库有哪些?c:if和c:forEach的用法及属性?
一、JSTL中的核心标签库有c:if和c:forEach
1.c:if
作用:判断是否为true,如果为true,那么标签的主体内容就会显示。
属性:
test:必须的。要求必须是boolean的。支持表达式(EL或Java表达式)
var:保存test运算结果的变量
scope: 保存的域范围。默认是page
2.c:forEach
遍历:数组、List、Set、Map
属性:
items:要遍历的目标对象。支持表达式
var:变量名。指向当前遍历的集合中的一个元素
begin:开始的索引(含)
end:结束的索引(含)
step:步长。默认是1
varStatus:取一个名字,引用了一个对象。
该对象有以下方法:
int getIndex():当前记录的索引号。从0开始
int getCount():当前记录的顺序。从1开始
boolean isFirst():是否是第一条记录
boolean isLast():是否是最后一条记录
举个例子说明:
注意:要用这两个核心标签,必须先导入JSTL的两个jar包standard.jar 和jstl.jar(必须导入web应用下的WEB-INF下的lib目录下),两个包的其它使用方法,在另外一篇《EL调用普通类的静态方法(EL自定义函数)》中有详细说明。及jar在我的资源中供下载
bean类:
package bean;
import java.io.Serializable;
import java.util.Date;
public class bean implements Serializable{
//80%的类都实现这个接口,虽然并不是都用,但是养成良好的习惯是好的
private String username="sssss";
private String password;
private boolean marry;
public bean(String username, String password, boolean marry) {
super();
this.username = username;
this.password = password;
this.marry = marry;
}
public bean() {
// TODO Auto-generated constructor stub
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isMarry() {//is和get是一样的
return marry;
}
public void setMarry(boolean marry) {
this.marry = marry;
}
}
jsp:
这里涉及到导入使用taglib指令,引入自定义的EL函数库,导入一下所示库:
<%@page import="bean.bean"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'EL_Label.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h3>EL核心标签:c:if主要用于判断</h3>
<%
session.setAttribute("p1", "Mr_Li13");
%>
<c:if test="${sessionScope.p1==null }">
对不起,重新登录!
</c:if>
<c:if test="${sessionScope.p1!=null }">
登录成功!欢迎:${sessionScope.p1}
</c:if>
<hr>
<%
List list=new ArrayList();
list.add("奶茶MM");
session.setAttribute("p2",list);
%>
<c:if test="${empty sessionScope.p2 }">
不存在,这个对象!
</c:if>
<c:if test="${!empty sessionScope.p2}">
找到了,是:${sessionScope.p2[0] }
</c:if><br>
<c:if test="${!empty sessionScope.p2}" var="result" scope="page">
保存的结果为:${result }<!-- 将保存在这个变量里的值取出来 -->
</c:if>
<hr>
<h3>EL核心标签:c:forEach主要是用于遍历</h3>
<%
String a[]={"a","b","c"};
pageContext.setAttribute("a",a);
List list1=new ArrayList();
list1.add("11");
list1.add("22");
list1.add("33");
pageContext.setAttribute("list1",list1);
Set set=new HashSet();
set.add("aa");
set.add("bb");
set.add("cc");
pageContext.setAttribute("set",set);
Map map=new LinkedHashMap();
map.put("a", "a的值");
map.put("b", "b的值");
map.put("c", "c的值");
pageContext.setAttribute("map",map);
%>
<c:forEach items="${a }" var="s">
${s }<br><!-- 将保存在这个变量里的值取出来 -->
</c:forEach>
<hr>
<c:forEach items="${list1 }" var="s1">
${s1 }<br>
</c:forEach>
<hr>
<c:forEach items="${set }" var="s2" begin="1" end="2" >
${s2 }<br>
</c:forEach>
<hr>
<c:forEach items="${map }" var="s3" step="2"><!-- step表示隔两个只要前面一个 -->
${s3.key }==${s3.value }<br>
</c:forEach>
<h3>bean类的使用</h3>
<%
List<bean> list3=new ArrayList<bean>();
list3.add(new bean("Mr_Li13","1",true));
list3.add(new bean("Mr_Li13","2",false));
list3.add(new bean("Mr_Li13","1",true));
pageContext.setAttribute("list3",list3);
%>
<c:forEach items="${list3 }" var="s4">
${s4.username },${s4.password==1?"男":"女" },${s4.marry==true?"已婚":"未婚" }<br>
</c:forEach>
<hr>
<table border="1" width="50%" style="text-align: center;">
<tr >
<th>索引号</th>
<th>是不是第一个</th>
<th>是不是最后一个</th>
<th>顺序</th>
<th>姓名</th>
<th>性别</th>
<th>婚姻</th>
</tr>
<c:forEach items="${list3 }" var="s4" varStatus="v">
<tr bgcolor="${v.index%2==0?'#003400':' #00689C '}">
<td>${v.index }</td>
<td>${v.first }</td>
<td>${v.last }</td>
<td>${v.count }</td>
<td>${s4.username }</td>
<td>${s4.password==1?"女":"男" }</td>
<td>${s4.marry==true?"已婚":"未婚" }</td>
</tr>
</c:forEach>
</table>
<hr>
<table border="1" width="50%" style="text-align: center;">
<tr >
<th>顺序</th>
<th>姓名</th>
<th>性别</th>
<th>婚姻</th>
</tr>
<c:forEach items="${list3 }" var="s4" varStatus="v">
<tr bgcolor="${v.index%2==0?'#BDBDBD':'#488A85'}">
<td>${v.count }</td>
<td>${s4.username }</td>
<td>${s4.password==1?"女":"男" }</td>
<td>${s4.marry==true?"已婚":"未婚" }</td>
</tr>
</c:forEach>
</table>
</body>
</html>
结果显示部分:
这个例子上传至资源供大家下载:http://download.csdn.net/download/mr_li13/9171783