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