EL
EL概述和基本語法
EL表達式:expression language 表達式語言
要簡化jsp中java代碼開發。
它不是一種開發語言,是jsp中獲取數據的一種規範
${student }
EL表達式只能獲取存在4個作用域中的數據
EL的具體功能
t6:
<%
Student stu = new Student();
stu.setName("李四");
//request.setAttribute("student", stu);
session.setAttribute("student", stu);
request.getRequestDispatcher("/t7.jsp").forward(request, response);
%>
t7:
${student }<!-- 相當於pageContext.findAttribute()方法,會依次從四個作用域中查找,不存在的顯示"" -->
${student.name}<!-- 屬性導航 內部調用了getName()方法-->
${student.addr.district}
EL獲取集合中的數據
<%
List<String> list = new ArrayList<String>();
list.add("哈哈1");
list.add("哈哈2");
list.add("哈哈3");
list.add("哈哈4");
request.setAttribute("jihe", list);
Map<String,String> map = new HashMap<String,String>();
map.put("name", "lisi");
map.put("age","20");
map.put("sex","男");
pageContext.setAttribute("mapjihe", map);
%>
${jihe[1] }
${jihe[2] }
${mapjihe}
${mapjihe.age} ${mapjihe["sex"]}
empty操作和三元運算符。
<%
String s1 = "";
request.setAttribute("s1", s1);
String s2 = null;
request.setAttribute("s2", s2);
String s3 = "hello";
request.setAttribute("s3", s3);
List<String> list1 = new ArrayList<String>();
request.setAttribute("jihe", list1);
List<String> list2 = new ArrayList<String>();
list2.add("呵呵");
list2.add("哈哈");
list2.add("嘻嘻");
request.setAttribute("jihe2", list2);
int sex = 1;
request.setAttribute("gender", sex);
%>
${empty s1} --true
${empty s2}--true
${empty s3}--false
${empty jihe}--true
${empty jihe2}--false
${empty jihe2? "你太摳了,什麼都沒買":"購物車的商品如下:"}
<input type="radio" name="sex" ${gender==1 ?"checked='checked'":""} >男
<input type="radio" name="sex" ${gender==0 ?"checked='checked'":""}>女
下面我們可以獲取從表單提交過來的數據
${param.username }
${param.pwd }
${paramValues.hobby }
${header["User-Agent"] }
${cookie.JSESSIONID.value }
JSTL
JSTL(JavaServerPages Standard Tag Library)JSP標準標籤
使用JSTL實現JSP頁面中邏輯處理。如判斷、循環等。
在jsp界面引入taglib標籤,獲取類庫中的內容使用。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
核心標籤庫:
通用標籤: set、 out、 remove
<!-- 定義變量 -->
<c:set var="num" value="29" scope="request"></c:set>
<!-- 顯示變量的值 -->
<c:out value="${num}"></c:out>
<!-- 刪除變量 -->
<c:remove var="num" scope="request"/>
<c:out value="${num }" default="hello"></c:out>
條件標籤:if choose
<c:if test="${6>4 }">
aaaaaaaaaaa
</c:if>
<c:if test="${6<4 }">
bbbbbbbbbbbbb
</c:if>
<c:set var="num" value="${19 }"></c:set>
<c:choose>
<c:when test="${num==16 }">呵呵</c:when>
<c:when test="${num==17 }">哈哈</c:when>
<c:when test="${num==18 }">嘿嘿</c:when>
<c:otherwise>拜拜</c:otherwise>
</c:choose>
迭帶標籤:foreach
<c:forEach var="i" begin="1" end="10" step="2">
${i }
</c:forEach>
<!-- 實現增強for循環的功能 -->
<%
List<String> list =new ArrayList<String>();
list.add("java1");
list.add("java2");
list.add("java3");
list.add("java4");
list.add("java5");
request.setAttribute("jihe", list);
//for(String ss:list){}
%>
<c:forEach items="${jihe }" var="ss">
${ss }
</c:forEach>
<%
List<String> list =new ArrayList<String>();
list.add("java1");
list.add("java2");
list.add("java3");
list.add("java4");
list.add("java5");
list.add("java6");
list.add("java7");
request.setAttribute("jihe", list);
%>
<table border=1>
<tr>
<th>數據</th>
<th>索引</th>
<th>計數</th>
<th>第一個</th>
<th>最後一個</th>
<th>lala</th>
</tr>
<c:forEach items="${jihe}" var="ss" varStatus="vs">
<tr ${vs.count%2==0 ? "style='background-color:red'":"style='background-color:green'"}>
<td>${ss }</td>
<td>${vs.index }</td>
<td>${vs.count }</td>
<td>${vs.first }</td>
<td>${vs.last }</td>
<td>${vs.count }</td>
</tr>
</c:forEach>
</table>
c:forEach中的varStatus屬性。
指向一個字符串,該字符串引用一個對象。 map.put(“vs”,一個對象);
這個對象記錄着當前遍歷的元素的一些信息:
getIndex():返回索引。從0開始
getCount():返回計數。從1開始
isLast():是否是最後一個元素
isFirst():是否是第一個元素