jsp--EL表達式&&標簽庫


EL表達式是為了替代jsp表達式,標簽是為了替代jsp腳本。有了這兩個技術就能避免在jsp頁面中盡量不寫java代碼,減輕了jsp的復雜度,增加了代碼的整潔程度。

EL表達式

語法:${變量或表達式}

作用:向瀏覽器輸出域對象中的變量值或者表達式計算的結果。

代碼示例:

1)基本數據類型輸出

 1 <body>
 2     <%-- 基本類型輸出  --%>
 3     <%
 4         pageContext.setAttribute("name", 12, PageContext.PAGE_SCOPE);
 5         pageContext.setAttribute("name", true, PageContext.REQUEST_SCOPE);
 6         pageContext.setAttribute("name","session域", PageContext.SESSION_SCOPE); 
 7         pageContext.setAttribute("name", "context域", PageContext.APPLICATION_SCOPE); 
 8     %>
 9     ${name }<br/><%-- 默認在pageScope、requestScope和sessionScope中搜索 --%>
10     <%--在指定域中搜索 --%>
11     ${pageScope.name}<br/>
12     ${requestScope.name}<br/>
13     ${sessionScope.name}<br/>
14     ${applicationScope.name}<br/>
15 
16 </body>

注意:單獨${name}會默認在pageScope、requestScope和sessionScope中搜索。

2)對象類型輸出

1 <%--對象類型輸出  --%>
2 <%
3     Student student = new Student("小名",12);
4     pageContext.setAttribute("student", student);
5 %>
6 ${student.name }

3)list對象輸出

 1 <%--list類型輸出  --%>
 2 <%
 3     List<Student> list = new ArrayList<Student>();
 4     list.add(new Student("小明",10));
 5     list.add(new Student("小紅",20));
 6     list.add(new Student("小王",30));
 7     pageContext.setAttribute("list", list);
 8 %>
 9 list類型輸出:
10 ${list[0].name }
11 ${list[1].name }
12 ${list[2].name }

4)map對象輸出

 1 <%--Map類型輸出  --%>
 2  <%
 3   Map<String,Student> map = new HashMap<String,Student>();
 4   map.put("100", new Student("校長",60));
 5   map.put("101", new Student("老師",30));
 6   map.put("102", new Student("學生",20));
 7   pageContext.setAttribute("map", map);
 8  %>
 9  Map類型輸出:
10  ${map['100'].name }
11  ${map["101"].name }
12  ${map["102"].name }

注意:EL表達式輸出的變量一定是在域對象中存在的。

5)EL輸出表達式

 1 <body>
 2     <%--
 3         1)算術表達式
 4           +  -  *  /
 5      --%>
 6      ${10+5 }<br/>
 7      ${10*5 }
 8      <hr/>
 9      <%--
10         2)比較運算
11         >  <  >=  <=  ==   !=
12      --%>
13      ${10>5 }<br/>
14      ${10<5 }<br/>
15      ${10!=10 }
16      <hr/>
17      <%--
18         3)邏輯運算
19          &&  ||  !
20      --%>
21      ${true && false }<br/>
22      ${true || false }<br/>
23      ${!false }<br/>
24      <hr/>
25       <%--
26         4)判空
27         null 或 空字符串:  empty
28      --%>
29      <%
30          //String name = "eric";
31          //String name = null;
32          String name = "";
33          pageContext.setAttribute("name",name);
34       %>
35       判斷null: ${name==null }<br/>
36       判斷空字符: ${name=="" }<br/>
37      判空:  ${name==null || name=="" }
38      另一種判空寫法: ${empty name }
39      
40          
41   </body>

標簽庫

作用:替換java腳本。

分類:

  1)內置標簽(動作標簽):不需要在jsp頁面中導入標簽。

  2)jstl標簽:需要在jsp頁面中導入標簽。

  3)自定義標簽:開發者自行定義,需要在jsp頁面導入標簽。

(1)內置標簽(動作標簽)

轉發標簽

<jsp:forward page="library2.jsp"></jsp:forward>

參數標簽

<jsp:param value="dev" name="name"/>

包含標簽

<jsp:include page="header.jsp"></jsp:include>

注意:此處的包含為動態包含,即包含和被包含的頁面先各自翻譯成java源文件,然后再運行時合並在一起。

靜態包含和動態包含的區別:

1)語法不同

  靜態包含:<%@ include file="被包含的頁面"%>

  動態包含:<jsp:include page="被包含的頁面">

2)參數傳遞不同

  靜態包含:不能向被包含的頁面傳遞參數

  動態包含:可以向被包含的頁面傳遞參數

3)原理不同

  靜態包含:先合並在翻譯。

  動態包含:先翻譯再合並。

傳遞參數的案例:

主頁面

<body>
    <jsp:include page="header.jsp">
        <jsp:param value="nick" name="name"/>
        <jsp:param value="123" name="pwd"/>
    </jsp:include>
    <hr>
    <font color="blue">正文</font>
    <jsp:forward page="library2.jsp">
        <jsp:param value="dev" name="name"/>
    </jsp:forward>
    
</body>

被包含頁面

<font size='12' color='red'>頭文件</font><br/>
名字:<%= request.getParameter("name") %>
密碼:<%= request.getParameter("pwd") %>

被轉發頁面

<body>
    用戶名:<%=request.getParameter("name") %>
</body>

(2)jstl標簽

1)核心標簽庫的重點標簽

<1>設置屬性標簽

<%--設置屬性 --%>
<c:set var="name" value="nick" scope="request"></c:set>

常用標簽屬性:

  var:設置變量名。

  value:設置變量值。

  scope:設置變量的保存域。

注意:--c:set標簽默認保存到page域中。

<2>獲取屬性標簽

<%--獲取屬性 --%>
<c:out value="${requestScope.name }" ></c:out>
<% 
    String age = null;
    pageContext.setAttribute("age", age);
%>
<br>
<c:out value="${age }" default="<font>默認值</font>" escapeXml="true"></c:out>

常用標簽屬性:

  value:獲取標簽的值。

  default:當標簽值value為null時,可使用默認值default。

  escapeXml:是否對value進行轉義,false不轉義,true轉義。

<3>單條件判斷標簽

<%--if單條件標簽 --%>
<c:if test="${empty age}">
    條件成立
</c:if>

常用標簽屬性:

   test:判斷條件

<4>多條件選擇標簽

<%--多條件標簽 --%>
<c:set var="score" value="68"></c:set>
<c:choose>
    <c:when test="${score>=90 }">
        優秀
    </c:when>
    <c:when test="${score>=80 && score<90}">
        良好
    </c:when>
    <c:when test="${score>=70 && score<80 }">
        一般
    </c:when>
    <c:when test="${score>=60 && score<70 }">
        及格
    </c:when>
    <c:otherwise>
        啥也不是
    </c:otherwise>
</c:choose>

<5>forEarch循環語句

<%-- for-earch循環語句 --%>
<%
    //list存儲
    List<Student> list = new ArrayList<Student>();
    list.add(new Student("張三",10));
    list.add(new Student("李四",20));
    list.add(new Student("王五",30));
    pageContext.setAttribute("list", list);
    //map存儲
    Map<String,Student> map = new HashMap<String,Student>();
    map.put("100",new Student("小張",10));
    map.put("101",new Student("小李",10));
    map.put("102",new Student("小王",10));
    pageContext.setAttribute("map", map);
%>
<c:forEach items="${list }" var="student" varStatus="status" >
    用戶id:${status.count }--用戶名:${student.name }--年齡:${student.age }
    <br/>
</c:forEach>
<hr>
<c:forEach items="${map }" var="entry">
    用戶id:${entry.key }--名字:${entry.value.name }--年齡:${entry.value.age }<br>
</c:forEach>

常用標簽屬性:

  begin:開始遍歷的位置

  end:結束遍歷的位置

  step:遍歷步長

  items:遍歷目標對象

  var:遍歷出的對象

  varStatus:遍歷狀態,其中的count屬性可以獲得索引值。

(6)forTokens循環語句

<%-- forTokens循環語句 --%>
<%
    String str = "哈哈哈-呵呵呵-嘿嘿嘿";
    pageContext.setAttribute("str", str);
%>
<c:forTokens items="${str }" delims="-" var="s">
    ${s }--
</c:forTokens>

常用標簽屬性:

  forEarch有的屬性forTokens都有。

  delims:分隔符

<7>重定向標簽

<%-- 重定向標簽 --%>
<c:redirect url="http://www.baidu.com"></c:redirect>

 

 2)eclipse中使用jstl標簽庫

  <1>導入jstl.jar、standard.jar2個jar包;

    此處提供兩個下載地址:

      CSDN:http://download.csdn.net/detail/czxt0605/7671781

      百度雲盤:https://pan.baidu.com/s/1qYnVbAG

  <2>把c.tld文件拷貝到WEB-INF目錄下;

  <3>web.xml加上如下配置

<jsp-config>
      <taglib>
          <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
          <taglib-location>/WEB-INF/c.tld</taglib-location>
      </taglib>
  </jsp-config>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM