EL主要是用於作用域獲取數據,雖然可以做運算判斷,但是得到的都是一個結果,做展示。
EL不存在流程控制。比如判斷。
EL對於集合只能做單點存取,不能實現遍歷操作。比如回圈。
JSTL :全稱Java Server Pages Standard Tag Library
JSP標準標籤庫(JSTL)是一個JSP標籤集合。
(第一步)匯入兩個jar檔案:standard.jar 和 jstl.jar 檔案拷貝到/WEB-INF/lib/下
(第二步)在JSP頁面引入標籤庫<% @taglib uri=「http://java.sun.com/jsp/jstl/core」 prefix=「c」>
<!-- test屬性中是條件, 但是條件需要使用EL表達式來書寫-->
<h3>條件標籤: if</h3>
<c:if test="${8>2}">
8大於2是成立的
</c:if>
<c:if test="${8<2}">
8小於2是成立的
</c:if>
語法:
< c:choose>
<c:when test=「條件 1」>結果1 < /c:when>
<c:when test=「條件2」>結果2< /c:when>
<c:when test=「條件3」>結果3< /c:when>
<c:otherwise >結果4< /c:otherwise>
< /c:choose>
<h3>條件標籤: choose(等價於java中多重if)</h3>
<%-- 測試成績等級>90優秀 >80 良好 >70中等 >60及格--%>
<c:set var="score" value="80"></c:set>
<C :choose>
<c:when test="${score>=90 }">優秀</c:when>
<c:when test="${score>=80 }">良好</c:when>
<c:when test="${score>=70 }">中等</c:when>
<c:when test="${score>=60 }">及格</c:when>
<c :otherwise>不及格</c:otherwise>
< /c :choose>
語法
<c:foreach
var=「變數名」
items=「集合」
begin=「起始下標」
end=「結束下標」
step=「間隔長度」
varstatus=」遍歷狀態」 >
< /c:foreach>
<h3>測試list集合遍歷獲取學生列表</h3>
<table border="1" width=" 80%" bordercolor="red" cellspacing="0" align= " center ">
<tr>
<th>學號</th>
<th>姓名</th>
<th>成績</th>
<th>班級</th>
<th>是否是第一個</th>
<th>是否是最後一個</th>
<th>計數count</th>
<th>索引index</th>
</tr>
<!-- varStatus :變數狀態:遍歷出的每一項內容的狀態:
first是否是第一行
last是否是最後 一行
count當前行數
index當前元素的下標-->
<!-- var :遍歷出的每-項使用變數先儲存
items:集合(使用E1表達式)-->
<c:forEach var="stu" items="${students}" varStatus="vs" >
<tr>
<td>${stu.1d}</td>
<td>${stu.name }</td>
<td>${stu.score}</td>
<td>${stu.classes}</td>
<td>${vs.first}</td>
<td>${vs.last}</td>
<td>${vs.count}</td>
<td>${vs.index}</td>
</tr>
</c:forEach>
</table>
程式碼:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.wlw.entity.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>JSTL標籤庫1</title>
</head>
<body>
<%
request.setAttribute("username","tom123");
request.setAttribute("age",58);
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
request.setAttribute("list",list);
List<User> users = new ArrayList<>();
users.add(new User("tom","123456"));
users.add(new User("marry","123456"));
users.add(new User("jack","123456"));
users.add(new User("gavin","123456"));
request.setAttribute("users",users);
%>
${username}
<c:if test="${username eq 'tom'}">
<h1>歡迎您,${username}</h1>
</c:if>
<c:if test="${username ne 'tom'}">
<h1>請您重新登錄!</h1>
</c:if>
<hr/>
<c:choose>
<c:when test="${age < 18}" ><h1>少年</h1></c:when>
<c:when test="${age>=18 && age<30}"><h1>青年</h1></c:when>
<c:when test="${age >=30 && age<50}"><h1>中年</h1></c:when>
<c:otherwise><h1>老年</h1></c:otherwise>
</c:choose>
<c:forEach var="s" items="${list}" begin="0" end="4" step="1" varStatus="i">
<h1>${s} ${i.first} ${i.last} ${i.count} ${i.index}</h1>
</c:forEach>
<hr/>
<%
for(String s : list){
out.println(s);
}
%>
<hr/>
<c:forEach var="user" items="${users}">
<h1>${user.username}:${user.password}</h1>
</c:forEach>
</body>
</html>
<c:url context='${pageContext.request.contextPath}' value='/xxxController' />
//在form表單的action中巢狀動態路徑
<form action=" <c:url context='${pageContext.request.contextPath}' value='/xxxController' />">
</form>
程式碼:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>JSTL標籤庫2</title>
</head>
<body>
<%
String newURL = response.encodeRedirectURL(request.getContextPath()+"/jstl/jstl1.jsp");
%>
<%=newURL%>
<a href="<%=response.encodeRedirectURL(request.getContextPath()+"/jstl/jstl1.jsp")%>">跳轉</a>
<br/>
<c:url context="${pageContext.request.contextPath}" value="/jstl/jstl1.jsp"></c:url>
<a href="<c:url context='${pageContext.request.contextPath}' value='/jstl/jstl1.jsp'></c:url>">跳轉2</a>
</body>
</html>
將現有的EmpProject專案逬行整合,使用EL+JSTL替換指令碼程式碼
<%@ page import="java.util.List" %>
<%@ page import="com.wlw.emp.entity.Emp" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>顯示所有員工</title>
</head>
<body>
<table border="1">
<tr>
<td>編號</td>
<td>姓名</td>
<td>工資</td>
<td>年齡</td>
<td colspan="2">操作</td>
</tr>
<%--
<%
List<Emp> emps = (List<Emp>)request.getAttribute("emps");
for (Emp emp:emps){
%>
<tr>
<td><%=emp.getId()%></td>
<td><%=emp.getName()%></td>
<td><%=emp.getSalary()%></td>
<td><%=emp.getAge()%></td>
<td><a href="<%= request.getContextPath()+"/manager/safe/removeEmpController?id="+emp.getId()%>">刪除</a></td>
<td><a href="<%= request.getContextPath()+"/manager/safe/showEmpController?id="+emp.getId()%>">修改</a></td>
</tr>
<%
}
%>
--%>
<c:forEach var="emp" items="${requestScope.emps}">
<tr>
<td>${emp.id}</td>
<td>${emp.name}</td>
<td>${emp.salary}</td>
<td>${emp.age}</td>
<td><a href=" <c:url context='${pageContext.request.contextPath}'
value='/manager/safe/removeEmpController?id=${emp.id}'></c:url>">刪除</a></td>
<td><a href=" <c:url context='${pageContext.request.contextPath}'
value='//manager/safe/showEmpController?id=${emp.id}'></c:url>">修改</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
<%@ page import="com.wlw.emp.entity.Emp" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>修改員工資訊頁面</title>
</head>
<body>
<%--
<%
Emp emp = (Emp) request.getAttribute("emp");
%>
<!--<form action="/empproject/manager/safe/updateEmpController" method="post"> -->
<form action="<%=request.getContextPath()+"/manager/safe/updateEmpController" %>" method="post">
編號:<input type="text" name="id" value="<%=emp.getId()%>" readonly><br/>
姓名:<input type="text" name="name" value="<%=emp.getName()%>"><br/>
工資:<input type="text" name="salary" value="<%=emp.getSalary()%>"><br/>
年齡:<input type="text" name="age" value="<%=emp.getAge()%>"><br/>
<input type="submit" value="修改">
</form>
--%>
<form action="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/updateEmpController'></c:url>
" method="post">
編號:<input type="text" name="id" value="${emp.id}" readonly><br/>
姓名:<input type="text" name="name" value="${emp.name}"><br/>
工資:<input type="text" name="salary" value="${emp.salary}"><br/>
年齡:<input type="text" name="age" value="${emp.age}"><br/>
<input type="submit" value="修改">
</form>
</body>
</html>