1. 程式人生 > >EL表示式和jstl技術、filter過濾器、JAVA反射

EL表示式和jstl技術、filter過濾器、JAVA反射

三天看了三種新技術的教學視訊作為jsp學習的收尾吧,前幾天留言板小樣例的課堂講解反饋效果極差,其中一個原因就是裡面的程式碼太亂,顯示頁面巢狀過多java的邏輯程式碼,顯得極不規範,所以就想用EL表示式結合jstl的一些標籤儘量使得程式碼能夠整潔規範一些,剛好也可以將新學的東西運用在結課的課程設計專案上,perfect!

一、EL表示式和jstl技術

正規的JavaWeb開發注重程式碼的規範性,雖然jsp設計的初衷之一就是可以巢狀Java程式碼,對於初學者來說,除錯也比較方便,不像servlet和Javabean那樣,一旦修改就要重啟tomcat伺服器,但是熟練運用之後,就會發現大量java程式碼夾雜在jsp頁面中讓頁面顯得十分臃腫,不利於維護,這樣的程式碼嚴重背離了MVC的設計模式,與web各式框架的理念相悖,這就導致出現了EL表示式代替java獲取頁面引數,jstl提供代替java程式碼的邏輯語句(if、for迴圈等)。

下面簡單介紹一些近日學到的東西,不全,但入了門,以後要用就很方便了。

1.EL表示式的語法格式: ${識別符號}

    例如:¥{username} 

        它的意思是取出某一範圍內名稱為username的值。

2.EL表示式中屬性的範圍有PageScope、RequestScope、SessionScope、ApplicationScope。對應jsp的四種頁面屬性。當我們使用EL表示式從某個範圍取值時,他會依次從以上四個域中找,找到就不再繼續找,若都沒有則返回null值。如果你同時使用了下面兩條語句:

    request.setAttribute("username",username1);

    session.setAttribute("username",username2);

而你現在要取出session中的username2,為了避免返回的值不是request中的username1,你就可以寫成:

    ${sessionScope.username}

3.EL表示式內建物件${param}和${paramValues}的使用主要用於獲取表單提交的值:

    例如:

        ${param.username}    相當於java指令碼中的<% request.getParameter("username"); %>

如果複選框提交了多個(這裡為3個)使用者名稱:

        ${paramValues.username[0]} 

        ${paramValues.username[1]} 

        ${paramValues.username[2]} 

相當於<% request.getParameter("username") %>

4.jstl表示式使用需要匯入jar包,

官方地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

下載standard.jar和jstl.jar檔案,放到專案的lib資料夾下。

然後在使用頁面進行引入,

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

5.條件語句<C:if>

<c:if test="<1>0>" var="<string>" scope="<string>">
   //通過if條件後實際執行的程式碼,上面的var屬性跟scope屬性(預設為Page)可以不寫
</c:if>

6.迴圈語句<C:forEach>

<c:forEach var="i" begin="1" end="5">
   Item <c:out value="${i}"/><p>    //<c:out ...>相當於System.out.println(...);
</c:forEach>

二、filter過濾器

在servlet編寫,通過呼叫Filter介面中的doFilter方法可以實現對某些請求的攔截和過濾。字元編碼使用過濾器叫方便。

三、JAVA反射

學完了xml的反射技術,看完還是覺得不是很理解反射的作用或者優點,之前的java基礎課沒有上到相關的內容,去網上查疑解惑,發現這項技術是比較接近底層開發的,難度自然不言而喻,最後就推薦大家可以看看下面兩篇文章。

1.


學習java應該如何理解反射?--知乎

2.


JAVA反射與註解