JSTL中的核心标签库(EL)

问题?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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值