天天看點

JSP内置對象作用域與EL表達式

文章目錄

    • JSP内置對象作用域
    • EL表達式
      • EL執行表達式

JSP内置對象作用域

  • page、request、session、application

  • 都具有

    setAttribute、getAttribute

    方法來存取資料
  • page

    作⽤域:對應的内置對象是

    pageContext

  • request

    作⽤域:對應的内置對象是

    request

    。 利用轉發跳轉是同一個請求,重定向是不同的請求。
  • session

    作⽤域:對應的内置對象是

    session

  • application

    作⽤域:對應的内置對象是

    application

  • page < request < session < application

  • page

    隻在目前⻚⾯有效。
  • request

    在⼀次請求内有效。 轉發可以,重定向不可以。
  • session

    在⼀次會話内有效。 轉發和重定向都可以。
  • application

    對應整個 WEB 應⽤的。

    Tomcat

    不關閉,都可以進行存取資料。
  • 網站通路量統計
<%
        Integer count = (Integer) application.getAttribute("count");
        if (count == null){
            count = 1;
            application.setAttribute("count",count);
        }else{
            count++;
            application.setAttribute("count",count);
        }
    %>
    您是目前的第<%=count%>位訪客
           

EL表達式

  • Expression Language

    表達式語⾔,替代

    JSP

    ⻚⾯中資料通路時的複雜編碼,可以⾮常便捷地取出域對象

    (pageContext、request、session、application)

    中儲存的資料,前提是⼀定要先

    setAttribute,

    EL

    就相當于在簡化

    getAttribute

  • 文法:

    ${變量名}

    變量名就是

    setAttribute

    對應的

    key

    值。
<%
    String name = (String) request.getAttribute("name");
%>
<%=name%>
<hr/>
${name}
//二者功能相同
           
  • 1、EL 對于 4 種域對象的預設查找順序:
  • pageContext -》request-〉session-》application

  • 按照上述的順序進⾏查找,找到⽴即傳回,在

    application

    中也⽆法找到,則傳回

    null

  • 2、指定作⽤域進⾏查找

pageContext

${pageScope.name}

request

${requestScope.name}

session

${sessionScope.name}

application

${applicationScope.name}

資料級聯:

<%
// 		pageContext.setAttribute("name","page");
// 		request.setAttribute("name","request");
// 		session.setAttribute("name","session");
// 		application.setAttribute("name","application");
 		User user = new User(1,"張三",86.5,new Address(1,"⼩寨"));
 		System.out.println(user.toString());
		 pageContext.setAttribute("user",user);
	 %>
 <table>
 	<tr>
 		<th>編号</th>
 		<th>姓名</th>
 		<th>成績</th>
 		<th>位址</th>
 	</tr>
 	<tr>
 		<td>${user.id}</td>
 		<td>${user.name}</td>
 		<td>${user.score}</td>
 		<td>${user.address}</td>
	 </tr>
 </table>
           
  • ${user["id"]}

    :也可以取出,不如第一種常用

EL執行表達式

  • 寫到一個花括号裡面
${num1&&num2}
&& || ! < > <= <= ==

&& and
|| or
! not
== eq
!= ne
< lt
> gt
<= le
>= ge
empty 變量為 null,⻓度為0的String,size為0的集合
${empty num3}