Java_Web之JSTL和EL


今天學了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>

 

 

 

 


 


免責聲明!

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



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