JSP標準標籤庫:JSTL,jsp標準標籤jstl
JSTL(JSP Standard Tag Library),JSP標準標籤庫,可以嵌入在jsp頁面中使用標籤的形式完成商務邏輯等功能。
jstl出現的目的同el一樣也是要代替jsp頁面中的指令碼代碼。
JSTL標準標準標籤庫有5個子庫,但隨著發展,目前常使用的是他的核心庫
1.JSTL下載與匯入
JSTL下載:
從Apache的網站下載JSTL的JAR包。進入
“http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”網址下載 JSTL的安裝包。
jakarta-taglibs-standard-1.1.2.zip,然後將下載好的JSTL安裝包 進行解壓,此時,在lib目錄下可以看到兩個JAR檔案,分別為jstl.jar和standard.jar。
其中,jstl.jar檔案包含JSTL規範中定義的介面和相關類,standard.jar檔案包含用於實現JSTL的.class檔案以及JSTL中5個標籤庫描述符檔案(TLD)
將兩個jar包匯入我們工程的lib中
jsp檔案匯入方式:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
2.JSTL核心庫的常用標籤
if標籤樣本:
<% request.setAttribute("count", 10); %> <!-- jstl標籤經常會和el配合使用 --> <!-- test代表的返回boolean的運算式 --> <c:if test="${count==9 }"> xxxx </c:if>
for迴圈樣本:
<!-- forEach類比 for(int i=0;i<=5;i++){ System.out.println(i) } --> <c:forEach begin="0" end="5" var="i"> ${i }<br/> </c:forEach>
增強for迴圈:
<!-- 類比增強for productList---List<Product> for(Product product : productList){ System.out.println(product.getPname()); } --> <!-- items:一個集合或數組 var:代表集合中的某一個元素--> <c:forEach items="${productList }" var="pro"> ${pro.pname } </c:forEach>
if標籤的簡單應用:
根據使用者是否登入而顯示不同的資訊:
<% //類比使用者已經登入成功 User user = new User(); user.setId(100); user.setName("張三"); user.setPassword("123"); session.setAttribute("user", user); %>
<!-- 使用者沒有登入 --> <c:if test="${empty user}"> <li><a href="login.jsp">登入</a></li> <li><a href="register.jsp">註冊</a></li> </c:if> <!-- 使用者已經登入 --> <c:if test="${!empty user}"> <li>${user.name }</li> <li><a href="#">退出</a></li> </c:if>
for迴圈(forEach)標籤樣本:
<% //類比List<String> strList List<String> strList = new ArrayList<String>(); strList.add("qwer"); strList.add("asdf"); strList.add("zxcv"); strList.add("1234"); request.setAttribute("strList", strList); //遍曆List<User>的值 List<User> userList = new ArrayList<User>(); User user1 = new User(); user1.setId(2); user1.setName("lisi"); user1.setPassword("123"); userList.add(user1); User user2 = new User(); user2.setId(3); user2.setName("wangwu"); user2.setPassword("123"); userList.add(user2); application.setAttribute("userList", userList); //遍曆Map<String,String>的值 Map<String,String> strMap = new HashMap<String,String>(); strMap.put("name", "lucy"); strMap.put("age", "18"); strMap.put("addr", "China"); strMap.put("email", "lucy@qq.cn"); session.setAttribute("strMap", strMap); //遍曆Map<String,User>的值 Map<String,User> userMap = new HashMap<String,User>(); userMap.put("user1", user1); userMap.put("user2", user2); request.setAttribute("userMap", userMap); %> <h1>取出strList的資料</h1> <c:forEach items="${strList }" var="str"> ${str }<br/> </c:forEach> <h1>取出userList的資料</h1> <c:forEach items="${userList}" var="user"> user的name:${user.name }------user的password:${user.password }<br/> </c:forEach> <h1>取出strMap的資料</h1> <c:forEach items="${strMap }" var="entry"> ${entry.key }====${entry.value }<br/> </c:forEach> <h1>取出userMap的資料</h1> <c:forEach items="${userMap }" var="entry"> ${entry.key }:${entry.value.name }--${entry.value.password }<br/> </c:forEach>