1. 程式人生 > >JavaWeb學習——EL表示式&JSTL

JavaWeb學習——EL表示式&JSTL

一、EL技術
1.EL 表示式概述
  EL(Express Lanuage)表示式可以嵌入在jsp頁面內部,減少jsp指令碼的編寫,EL出現的目的是要替代jsp頁面中指令碼的編寫。

2.EL從域中取出資料(EL最重要的作用)
  jsp指令碼:<%=request.getAttribute(name)%>
  EL表示式替代上面的指令碼:${requestScope.name}

 EL最主要的作用是獲得四大域中的資料,格式${EL表示式}
  EL獲得pageContext域中的值:${pageScope.key};
  EL獲得request域中的值:${requestScope.key}

;
  EL獲得session域中的值:${sessionScope.key};
  EL獲得application域中的值:${applicationScope.key};
  EL從四個域中獲得某個值${key};—取全域,同樣是依次從pageContext域,request域,session域,application域中獲取屬性,在某個域中獲取後將不在向後尋找

    <%
        //儲存字串
        String str = "aaaaaa";
        pageContext.setAttribute("str", str);
    %>
<% //儲存物件 User user = new User(); user.setUsername("zhangsan"); user.setPassword("123"); request.setAttribute("user", user); %> <% //存貯集合 User user1 = new User() ; user1.setUsername("lisi") ; user1.setPassword("123"
); User user2 = new User() ; user2.setUsername("wangwu"); user2.setPassword("345") ; List<User> list = new ArrayList<User>() ; list.add(user1); list.add(user2); session.setAttribute("list", list) ; %>
<!-- 指令碼法取資料 通過內建物件 --> <!-- 獲得普通字串 --> <%=pageContext.getAttribute("str")%> <!-- 獲得User物件的值 --> <% User requestUser = (User) request.getAttribute("user"); out.write(requestUser.getUsername()); %> <!-- 獲得List<User>的值 --> <% List<User> listUser =(List) session.getAttribute("list"); out.write(listUser.get(1).getUsername()); %> <hr/> <!-- el表示式取資料 --> <!-- 獲得普通字串 --> ${pageScope.str} <!-- 獲得User物件的值 --> ${requestScope.user.username} <!-- 獲得List<User>的值 --> ${sessionScope.list[1].username } <hr/> <!-- 全域el --> <!-- 獲得普通字串 --> ${str } <!-- 獲得User物件的值 --> ${user.username } <!-- 獲得List<User>的值 --> ${list[0].username } ${list[1].username }

3.EL的內建物件11個
  pageScope,requestScope,sessionScope,applicationScope
     —- 獲取JSP中域中的資料
  param,paramValues - 接收引數.
    相當於request.getParameter() rquest.getParameterValues()
  header,headerValues - 獲取請求頭資訊
    相當於request.getHeader(name)
  initParam - 獲取全域性初始化引數
    相當於this.getServletContext().getInitParameter(name)
  cookie - WEB開發中cookie
    相當於request.getCookies()—cookie.getName()—cookie.getValue()
  pageContext - WEB開發中的pageContext.
    pageContext獲得其他八大物件

${pageContext.request.contextPath}:獲得專案的路徑

4.EL執行表示式
 例如:

${1+1}
${empty user}:empty表示判斷物件是否為空,為空返回true,否則返回false。
${user==null?true:false}

二、JSTL技術
1.JSTL概述
  JSTL(JSP Standard Tag Library),JSP標準標籤庫,可以嵌入在jsp頁面中使用標籤的形式完成業務邏輯等功能。jstl出現的目的同el一樣也是要代替jsp頁面中的指令碼程式碼。JSTL標準標準標籤庫有5個子庫,但隨著發展,目前常使用的是他的核心庫
JSTL概述
2.JSTL下載與匯入
  JSTL下載:
  從Apache的網站下載JSTL的JAR包。進入“http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”網址下載 JSTL的安裝包。jakarta-taglibs-standard-1.1.2.zip,然後將下載好的JSTL安裝包 進行解壓,此時,在lib目錄下可以看到兩個JAR檔案,分別為jstl.jar和standard.jar。 其中,jstl.jar檔案包含JSTL規範中定義的介面和相關類,standard.jar檔案包含用於 實現JSTL的.class檔案以及JSTL中5個標籤庫描述符檔案(TLD)。
  第一步:將jstl.jar和standar.jar兩個jar包匯入工程的lib中即可。
  第二步:使用jsp的taglib指令匯入核心標籤庫

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

3.JSTL核心庫的常用標籤
  1)<c:if test=””></c:if>標籤
    其中test是返回boolean的條件

<!-- if判斷 -->
    <c:if test="true">
        xxx
    </c:if>
    <c:if test="false">
        123
    </c:if>
    <c:if test="true?true:false">
        1=1
    </c:if>
    <!-- 此處的1=1不會輸出,因為true?true:false三目判斷是無用的,因為test裡面只能接受true或者false,其他字元或者表示式都預設為false -->

  2)<c:forEach></c:forEach>標籤
    使用方式有兩種組合形式:
    方式1——for迴圈:

<c:forEach begin="從多少開始" end="到多少結束" var="每次迴圈的變數"></c:forEach>
對應: for(   i=?         ;   i<>==?      ;     int i )

    方式2——增強for:

<c:forEach items="objs" var="obj "></c:forEach>
對應:   foreach(Object obj : objs)

  注:標籤中間是顯示輸出的資料,因此可以在標籤中間加入html程式碼
  1)遍歷List<String>的值
  2)遍歷List<User>的值
  3)遍歷Map<String,String>的值
  4)遍歷Map<String,User>的值
  5)遍歷Map<User,Map<String,User>>的值
    entry.key—–User
    entry.value——List

    <!-- foreach方式1——普通for迴圈 -->
    <c:forEach begin="0" end="5" var="i">
        <br/>${i }
    </c:forEach>
    <br/>
    <%
        //List<String>
        List<String> stringList = new ArrayList<String>() ;
        stringList.add("zhangsan");
        stringList.add("lisi");
        stringList.add("wangwu");
        request.setAttribute("stringList", stringList);

        //List<User>
        User user1 = new User() ;
        user1.setUsername("zhangchi") ;
        user1.setPassword("123");
        User user2 = new User() ;
        user2.setUsername("shige") ;
        user2.setPassword("123");
        User user3 = new User() ;
        user3.setUsername("dashabi");
        user3.setPassword("345") ;  

        List<User> userList = new ArrayList<User>();
        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        session.setAttribute("userList", userList);

        //Map<String,String>
        Map<String,String> stringMap = new HashMap<String,String>() ;
        stringMap.put("name", "zhangsan");
        stringMap.put("sex", "nan");
        stringMap.put("eamil", "[email protected]");
        pageContext.setAttribute("stringMap", stringMap);

        Map<String,User> userMap = new HashMap<String,User>();
        userMap.put("user1",user1);
        userMap.put("user2",user2);
        userMap.put("user3",user3);
        application.setAttribute("userMap", userMap);
    %>

    <!-- foreach方式2——增強for -->
    <h1>遍歷stringList的值</h1>
    <c:forEach items="${stringList }" var="str">
        str=${str }<br/>   
    </c:forEach>

    <h1>遍歷userList的值</h1>
    <c:forEach items="${userList }" var="user">
        user=${user.username }<br/>
    </c:forEach>

    <h1>遍歷stringMap的值</h1>
    <c:forEach items="${stringMap }" var="map">
        ${map }<br/>
    </c:forEach>

    <h1>遍歷userMap的值</h1>
    <c:forEach items="${userMap }" var="usermap">
        ${usermap.value.username }<br/>
    </c:forEach>

三、javaEE的開發模式
1.什麼是模式
  模式在開發過程中總結出的“套路”,總結出的一套約定俗成的設計模式
2.javaEE經歷的模式
  model1模式:
    技術組成:jsp+javaBean
    model1的弊端:隨著業務複雜性 導致jsp頁面比較混亂
  model2模式
    技術組成:jsp+servlet+javaBean
    model2的優點:開發中 使用各個技術擅長的方面
       servlet:擅長處理java業務程式碼
       jsp:擅長頁面的現實

  MVC:—- web開發的設計模式
    M:Model—模型 javaBean:封裝資料
    V:View—–檢視 jsp:單純進行頁面的顯示
    C:Controller—-控制器 Servelt:獲取資料–對資料進行封裝–傳遞資料– 指派顯示的jsp頁面

3.javaEE的三層架構
  伺服器開發時 分為三層
    web層:與客戶端互動
    service層:複雜業務處理
    dao層:與資料庫進行互動
   開發實踐時 三層架構通過包結構體現

  MVC與三層架構有什麼關係?
MVC與三層架構
  javaEE三層架構+MVC

    web層:收集頁面資料,封裝資料,傳遞資料,指定響應jsp頁面
    service層:邏輯業務程式碼的編寫
    dao層:資料庫的訪問程式碼的編寫

相關推薦

JavaWeb學習——EL表示式&JSTL

一、EL技術 1.EL 表示式概述   EL(Express Lanuage)表示式可以嵌入在jsp頁面內部,減少jsp指令碼的編寫,EL出現的目的是要替代jsp頁面中指令碼的編寫。 2.EL從域中取出資料(EL最重要的作用)   jsp指令碼:<

javaweb jsp&el表示式&jstl 解析

JSP & EL & JSTL jsp Java Server Page 什麼是jsp 從使用者角度看待 ,就是是一個網頁 , 從程式設計師角度看待 , 其實是一個java類, 它繼承了servlet,所以可以直接說jsp 就是一個Se

java基礎學習JavaWebEL表示式

其他更多java基礎文章: java基礎學習(目錄) 一、EL表示式 EL 全名為Expression Language。JSP中可以使用EL表示式,EL表示式是用"${}"括起來的指令碼,用來更方便地讀取物件,EL表示式寫在JSP的HTML程式碼中,而不能寫在"<%%>"引起的JSP指令

JavaWeb基礎Day17 (JSP EL表示式 jstl標籤庫 beanutil工具類)

JSP jsp的實質就是指在html介面中嵌入Java程式碼 jsp指令碼 <%  Java程式碼  %>  相當於寫在service方法中。 <%=java 變數或者表示式 %> 相當於在service 內部寫了  out.println

javawebEL表示式

EL表示式簡介: EL 全名為Expression Language。 EL主要作用: 獲取資料: •EL表示式主要用於替換JSP頁面中的指令碼表示式,以從各種型別的web域 中檢索java物件、獲取資料。(某個web域 中的物件,訪問javabean的屬性、訪問list集

JavaWebEL表示式

簡化Java程式碼 1. 使用方式 ${物件名.成員} 2. 操作符 如果值存在下標,直接使用[],如果沒有下標,使用.去取值 3. 內建物件 作用域相關 pageScope requestScopesessionScopeapplicationScop

javaWeb(五)EL表示式

1.語法結構 --${作用域的key}--- 如果多個作用域的a相同的時候 那麼獲取到的是作用域最小的key --如果要指定獲取到指定作用域中的key值 則可以使用 作用域+Scope .a 來指明 2.[] 與 . 運算子 兩張運算子都是用來導航資料, 代表的意思是一

Java Web複習(12)EL表示式jstl標籤庫

1 EL概述1.1 EL的作用JSP2.0要把html和css分離、要把html和javascript分離、要把Java指令碼替換成標籤。標籤的好處是非Java人員都可以使用。JSP2.0 – 純標籤頁面,即:不包含<% … %>、<%! … %>,以

java學習 EL表示式輸出實體物件

既然是為了輸出實體物件,那麼肯定是要匯入實體物件的: 下面是用到的實體類: package com.mldn.wq.vo; public class Dept { private int deptno; private String dn

JavaWeb學習筆記及案例(一)JSP與EL表示式JSTL

1.JSP 1.1JSP的三大指令 page include taglib 指令的寫法 <%@ 指令名字 %> 1.1.1jsp的page指令 1.extends 用於指定jsp翻譯成java檔案後,繼承的父類是誰,一般不改 2.s

JAVAWEB學習(10) - EL表示式JSTL

EL表示式和JSTL 一、EL表示式 1.1. EL表示式是什麼 是一套簡單的運算規則,用於給jsp標籤的屬性賦值,也可以脫離jsp標籤,直接使用。 1.2. EL表示式的使用 1.2.1. 讀取bean的屬性值 javabean指的是一個符合如下要求的Java類:

JavaWeb學習總結——EL表示式JSTL標籤

uJSP標準標籤庫(JSTL)是一個JSP標籤集合,它封裝了JSP應用的通用核心功能。 uJSTL支援通用的、結構化的任務,比如迭代,條件判斷,XML文件操作,國際化標籤,SQL標籤。 除了這些,它還提供了一個框架來使用整合JSTL的自定義標籤。 u核心標籤是最常用的

Javaweb學習筆記6—EL表示式JSTL及自定義標籤

 前幾天部落格被黑了,導致部落格登陸不上,把前幾天應該發的東西的東西重新發一遍 今天來講javaweb的第六階段學習。 EL表示式與JSTL及自定義標籤是對上篇文章介紹的JSP的擴充套件,不能說是

JavaWeb學習之動態頁面技術(JSP/EL/JSTL

常用標簽 cat lang each ems tty com HR html4 JSP技術 1、jsp腳本和註釋 jsp腳本: 1、<% java代碼%> 內部的Java代碼翻譯到service方法的內部 2、<%

JavaWeb - JSTLEL 表示式

一、EL表示式 簡介   - EL表示式介紹及作用:Expression Language(表示式語言),目的是替代JSP頁面中的複雜程式碼。   - EL表示式語法:“${變數名}”。 EL表示式的語法有兩個要素:$ 和 {}。 例如: 點號記法:${Be

JavaWeb基礎JSP頁面ELJSTL表示式

文章目錄 jsp 怎麼用JSP 指令寫法 page指令 include taglib JSP 動作標籤 JSP內建物件 四個作用域的區別

JSP的學習(二)——ELJSTL表示式

一、EL表示式 ①基本概念 EL表示式: expression language表示式語言 EL(Expression Language) 是為了使JSP寫起來更加簡單。表示式語言的靈感來自於 ECMAScript 和 XPath 表示式語言,它提供了在 JSP 中簡化

JavaWeb學習(二十二)———EL表示式

一、EL表示式簡介   EL 全名為Expression Language。EL主要作用:  1、獲取資料    EL表示式主要用於替換JSP頁面中的指令碼表示式,以從各種型別的web域 中檢索java物件、獲取資料。(某個web域 中的物件,訪問javabean的屬性、訪問list集合、訪問map集合、訪

Java學習——JSTL標籤與EL表示式之間的微妙關係

       很高興,今天能和大家分享剛學的一些新知識。我們在java開發過程中經常會在jsp中嵌入一些java程式碼,比如<%=request.getParameter("id")%>

【java學習之旅】——JSTL+EL表示式讓jsp頁面簡潔化

【前言】 jsp2.0之後,頁面上幾乎不使用Java指令碼了,其實不難理解,因為在計算機中程式分工越來越明確,三層,mvc的使用都是程式劃分層次結構的產物,jsp只能用做頁面的顯示,所以JSTL標