當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
使用 el 能否定义作用域变量_Jsp之El表达和JSTL标签库
生活随笔
收集整理的這篇文章主要介紹了
使用 el 能否定义作用域变量_Jsp之El表达和JSTL标签库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
傳統獲取作用數據案例
<% request.setAttribute("str", "test");//往作用域中進行數據的存儲 User user = new User("tom", "123", "男", 25, "2015-01-12"); request.setAttribute("user", user);//往作用域中進行對象數據的存儲 List<Object> list = new ArrayList(); list.add("test1"); list.add("test2"); list.add("test3"); list.add(user); request.setAttribute("list", list);//往作用域中進行list數據的存儲 Map map = new HashMap(); map.put("str", "date"); map.put("user", user); request.setAttribute("map", map);//往作用域中進行map數據的存儲%> <%--傳統方式獲取數據--%> <%=request.getAttribute("str")%><br/>//獲取作用域中的數據 <%=((User)request.getAttribute("user")).getName()%>//獲取作用域中對象的數據 <%=((ArrayList)request.getAttribute("list")).get(1)%>//獲取作用域中list中的數據 <%=((User)(((ArrayList)request.getAttribute("list")).get(3))).getName()%>//獲取作用域中list中對象的數據 <%=((Map)request.getAttribute("map")).get("str")%>//獲取作用域中map中的數據 <%=((User)(((Map)request.getAttribute("map")).get("user"))).getName()%>//獲取作用域中map中對象的數據傳統方式在jsp中獲取作用域的數據的缺陷
1.在jsp中書寫java代碼獲取數據書寫比較繁瑣,需要強轉,導包不容易閱讀和維護
2.響應結果都是覆蓋顯示給用戶的
3.使用session進行的數據的流轉很方便但是session失效后,所有依賴session的功能都會出現問題
EL表達式獲取作用數據案例
<%--el表達式獲取數據--%> ${str}//獲取作用域中的數據 ${user.name}//獲取作用域中對象的數據 ${list[1]}//獲取作用域中list中的數據 ${list[3].name}//獲取作用域中list中對象的數據 ${map.str}//獲取作用域中map中的數據 ${map.user.name}//獲取作用域中map中對象的數據 <hr/> <%--el表達式獲取請求參數--%> ${param.name} //獲取請求參數key對應的value ${paramValues.fav[1]}//請求參數中key的同名的情況下獲取請求參數key對應的value <hr/> <%--el表達式獲取請求頭--%> ${header}//獲取請求頭中的所有數據 ${header["Accept-Language"]}//獲取請求頭的對應key的value ${headerValues["Accept-Language"][0]}//請求頭中的key同名的情況下獲取請求頭中key對應的value <%--el表達式獲取cookie中的數據--%> ${cookie.JSESSIONID.name}//獲取cookie的name ${cookie.JSESSIONID.value}///獲取cookie的值 <%--判斷數據是否為空--%> ${empty list}//判斷獲取的數據是否為空 <%--使用傳統方式往作用域進行存值--> <% pageContext.setAttribute("str", "pageContext");//往pageContext作用域中進行存值 request.setAttribute("str", "request");//往request作用域中進行存值 session.setAttribute("str", "session");//往session作用域中進行存值 application.setAttribute("str", "application");//往application作用域中進行存值 %> <%--獲取作用域數據--%> ${pageScope.str}//從pageContext作用域中取值 ${requestScope.str}//從request作用域中取值 ${sessionScope.str}//從session作用域中取值 ${applicationScope.str}//從application作用域中取值 ${str}//在作用域省略的情況下默認pageContext->request->session->application進行取值,找到的情況下執行返回響應EL表達式獲取數據的優點和缺陷
提升了jsp頁面邏輯編碼效率,提高了jsp頁面的可閱讀和可維護性,但是不適用于業務邏輯的處理
El表達式的作用
1.獲取請求數據.
2.獲取作用域數據
3.表達式進行邏輯運算
JSTL的使用流程及作用
導入jstl的jar包,使用jsp的taglib指令執行導入jstl的核心庫
jstl解決了el表達式不適用于業務邏輯的處理的問題
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>JSTL的使用案列
<c:out value="${test}" default="null"></c:out> //直接把數據value響應到客戶端,值為空時把默認值響應到客戶端 <c:set var="num" value="5" scope="request"></c:set>//往request作用域中進行存值 <c:remove var="str" scope="request"/>//刪除request作用域中值,需注意在不指定作用域的情況下,會刪除根據key來刪除所有作用域中的數據 //進行業務邏輯的判斷,滿足條件時執行if中的語句 <c:if test="${num>3}"> <b>test</b> </c:if> //多重選擇分支語句滿足一個<c:when test="${num>3}"><b>test1</b></c:when>就不繼續往下執行了,都不滿足執行<c:otherwise><b>test3</b></c:otherwise> <c:choose> <c:when test="${num>3}"><b>test1</b></c:when> <c:when test="${num<1}"><b>test2</b></c:when> <c:otherwise><b>test3</b></c:otherwise> </c:choose> <c:forEach begin="0" end="5" varStatus="i"> //進行遍歷,begin開始 end結束 step標簽 varStatus變量狀態 ${i.index}每次迭代的下標 ${i.count}迭代的次數 ${i.first}是否是第一次 ${i.last}是否是最后一次 ${i.index}--${i.count}--${i.first}--${i.last} </c:forEach> //遍歷list集合 <c:forEach items="list" var="u"> ${u.name} </c:forEach> //遍歷map集合 <c:forEach items="map" var="m"> //${m.key}獲取map中的對象的key ${m.value}獲取map中的對象的value ${m.key}--${m.value} </c:forEach>總結
以上是生活随笔為你收集整理的使用 el 能否定义作用域变量_Jsp之El表达和JSTL标签库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 给eth0增加一个IP
- 下一篇: nginx动静分离和负载均衡