今天學了JSTL和EL,替換了以前for循環,感覺代碼越來越少了,十分方便。JSTL和EL密不可分。
一、什么是EL表達式?
什么是EL
EL即Expression Language(表達式語言)
EL的功能
替代JSP頁面中的復雜代碼
EL的語法
${ EL exprission }
${ bean.name } 或 ${ bean['name'] }
二、EL的特點
自動轉換類型
EL得到某個數據時可以自動轉換類型
對於類型的限制更加寬松
使用簡單
相比較在JSP中嵌入Java代碼,EL應用更簡單
三、EL的語法
EL語法
以“
${”作為開始,以“
}”作為結束
直接使用變量名獲取值$
${ username }
變量屬性范圍名稱

四、EL中的運算符和EL隱式對象
EL運算符
運算符”[ ]”
運算符”.”
作用
獲取對象屬性
獲取對象集合中的數據
在Session中保存了一個(list)集合users
什么是JSTL?
使用JSTL實現JSP頁面中邏輯處理
什么是JSTL
JSTL(JavaServerPages Standard Tag Library)JSP標准標簽庫
JSTL通常會與EL表達式合作實現JSP頁面的編碼
二、JSTL的環境搭建
使用JSTL的步驟
創建Web工程,選擇JSTL1.1(目前使用的版本不需要配置,高版本集合在一起)
在JSP頁面添加taglib指令
使用JSTL標簽
JSTL標准標簽庫介紹
通用標簽
條件標簽
迭代標簽
JSTL和EL案例
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; session.setAttribute("username","小明"); List list = new ArrayList(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); request.setAttribute("aa",list); Map map = new HashMap(); map.put("name","admin"); map.put("pwd","adminpassword"); request.setAttribute("map",map); session.setAttribute("map",map); application.setAttribute("c","123456"); application.setAttribute("c","789"); entity.User user = new entity.User(); user.setUsername("aa"); user.setPassword("bb"); session.setAttribute("user",user); //request.getParameter();//------param:獲取表單項 //request.getParameterValues();//------paramValues:獲取多個表單項 %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> </head> <body> <!-- 注意: EL表達式默認范圍:request 如果沒有確定范圍;那么EL表達式就會按照范圍的順序按個進行查找:request-session-page-appplication 直到遍歷JSP9大內置對象找到相對應的值為止 --> 以前的方式: <%=session.getAttribute("username") %><br/> EL表達式:${sessionScope.username }<br/> ${applicationScope.c }<br/> EL表達式在request取出集合:${aa}<br/> 取出map集合:${map["name"] }<br/> ${map.pwd }<br/> EL取出session中map集合:${sessionScope.map.name }<br/> ${sessionScope.user.username } <form action="success.jsp" method="post"> username:<input type="text" name="username" /><br/> password:<input type="password" name="password" /><br/> love:<input type="checkbox" name="love" value="a" />吃飯<br/> <input type="checkbox" name="love" value="b" />睡覺<br/> <input type="checkbox" name="love" value="c" />敲代碼<br/> <input type="submit" /> </form> </body> </html>
處理頁
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; String name = request.getParameter("username"); String[] love = request.getParameterValues("love"); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'success.jsp' starting page</title> </head> <!-- JSTL的出現是為了替代以往下載jsp頁面中的java邏輯判斷和選擇判斷語句 EL表達式的出現是為了替代以往的表達式 JSTL一般與EL表達式合作開發動態的jsp頁面 --> <% //if(條件) %> <body> <p> <c:set var="abc" value="${99+1}" scope="session" /> 輸出值:<c:out value="${abc}"/> 刪除值:<c:remove var="abc" scope="session" /> 刪除之后:<c:out value="${abc}" default="null" /> </p> <c:if test="${1==1}" var="if1" > 是真的 </c:if> <!-- empty:判斷當前值是否為空null 如果為null則返回true 否則返回false --> <c:if test="${not empty null }" var="if2"></c:if> <p> 輸出if1結果:<c:out value="${if1}" /><br/> 輸出if2結果:<c:out value="${if2}" /><br/> </p> 用戶名:${param.username }<br> 密 碼:${param.password }<br> love:${paramValues.love[0] },${paramValues.love[1] },${paramValues.love[2] } 長度:${fn:length(paramValues.love) } <div style="margin-top: 50px"> <% List list = new ArrayList(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); request.setAttribute("list",list); %> <table border="1"> <c:forEach items="${list}" var="m" varStatus="statu"> <tr><td>${m }=====${statu.index }</td></tr> </c:forEach> </table> </div> </body> </html>