1. 程式人生 > >JSP中EL表示式與JSTL標籤庫

JSP中EL表示式與JSTL標籤庫

EL表示式格式:${}

u s e r . n a

m e {user.name}或 {user[“name”]}效果相同.

JSP中的EL表示式:
在這裡插入圖片描述
使用案例:

 <div class="head_unused">
        <a id="unused" name="head_type" href="javascript:checkType(1)">
            <c:choose>
                <c:when test="${unusedCount eq 0}">
                    <font class="head_font active">未使用</font>
                </c:when>
                <c:when test="${unusedCount lt 100}">
                    <font class="head_font active">未使用(${unusedCount})</font>
                </c:when>
                <c:when test="${unusedCount ge 100}">
                    <font class="head_font active">未使用(99+)</font>
                </c:when>
            </c:choose>
        </a>
        <div class="head_line" id="unusedLine"></div>
    </div>

2種情況除外:
a.包含特殊字元

${user.first-name}此時應這樣取值:${user["first-name"]}

b.通過變數進行動態取值

${user[param]}根據使用者傳入的param變數進行取值

EL變數的範圍大小:

PageScope < RequestScope < SessionScope < ApplicationScope

el中的隱含物件:

1)pageContext 唯一一個即是jsp的隱含物件,又是el的隱含物件。jsp頁面的上下文
        pageContext.servletContext
        pageContext.session
        pageContext.request
        pageContext.response
  2)param 
  3)paramValues
  4)cookie
  5)initParam
  6)pageScope
  7)requestScope
  8)sessionScope
  9)applicationScope

JSP中的九大內建物件:

  1)out     jsp中用於寫到頁面的輸出流
  2)page        表示當前頁面
  3)pageContext 當前頁面的上下文
  4)request     jsp封裝的請求資訊
  5)response    jsp中封裝的響應資訊
  6)session     jsp中的會話Session
  7)application 當前應用
  8)config      配置資訊
  9)exception   異常資訊

JSTL標籤的四大分類及JSTL函式,注意JSTL標籤庫和JSTL函式在使用他們之前都應該先將他們引入進來

核心標籤庫:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>

A.<c:out></c:out>
<c:out value="${person.name}"></c:out>

 1).直接輸出常量value=“常量”
2).輸出變數,變數不存在時有一個預設值value=“${name}” default="error"
3).通過escapeXml="false",value="&lt標籤&gt"設定輸出轉義字元後的值

B.<c:set></c:set>
1)將一個day的變數存到scope中,
<c:set value=“today” var=“day” scope=“session”></c:set>或者
<c:set var=“age” scope=“application”>100</c:set>
2)存值到javabean中
<jsp:useBean id=“person” class=“com.ecjtu.modles.person”></jsp:useBean>
<c:set target="${person}" property=“name” value=“李四”></c:set>

C.<c:remove></c:remove> remove掉某個變數,不能remove bean中的某個屬性,var屬性是必選的
scope屬性是可選的
1)<c:remove var=“today” scope=“session”></c:remove>
表示移除掉session中的變數名為today的變數

D.<c:catch var="error">
包含一些可能出錯的標籤,然後在外面就可以輸出變數名為error的錯誤資訊 </c:catch>

E.var變數儲存比較的結果true或false
<c:if test="${score>=90}" var=“resutl” scope=“session”>
<c:out value=“您的成績為優秀”></c:out>
</c:if>

F.choose,when,otherwise標籤的用法:通常這三個標籤放在一起使用
1.choose作為when和otherwise標籤的父標籤來使用
2.choose和when標籤一起組合使用
用法一:3個標籤同時使用
<c:choose>
<c:when test=“條件1”>
業務邏輯1
<c:when test=“條件2”>
業務邏輯2
<c:otherwise>
其它的業務邏輯
</c:choose>
用法二:兩個標籤同時使用
<c:choose>
<c:when test=“條件1”>
業務邏輯
</c:choose>

迴圈控制標籤<c:forEach></c:forEach>一般用來遍歷集合:
var 設定變數名用於儲存從集合中取出來的元素(必須無預設值)
items指定要遍歷的集合(必須無預設值)
begin,end用於指定遍歷的起始位置和結束位置(有預設值)
step指定迴圈的步長(有預設值)
varStatus有index,count,first,last幾個狀態,分別表示元素的索引,第幾個元素,
是否是第一個和最後一個元素,描述begin和end子集中的元素的狀態
用法一:全部遍歷
<:forEach var=“customer” items=“customers”>
操作var變量表示的值
</c:forEach>
用法二:部分遍歷
<:forEach var=“customer” items=“customers” begin=“1” end=“5”>
操作var變量表示的值
</c:forEach>
用法三:部分遍歷中指定步長
<:forEach var=“customer” items=“customers” begin=“1” end=“5” step=“3”>
操作var變量表示的值
</c:forEach>
用法四:部分遍歷中指定步長並且輸出元素的狀態
<:forEach var=“customer” items=“customers” begin=“1” end=“5” varStatus=“com”>
操作var變量表示的值
<c:out value=“index屬性:${com.index}”></c:out> </c:forEach>

forTokens標籤的用法:
用於瀏覽字串,並根據指定的字元將字串擷取,他同樣有forEach中begin,end,step,varStatus這幾個屬性
items指定被迭代的字串
delims指定使用的分隔符
var指定用來存放遍歷到的成員
<c:forTokens items=“038-3823-323” delims="-" var=“num”>
<c:out value="${num}"></c:out>
</c:forTokens>

URL操作標籤的用法:
import可以把其它的靜態或動態檔案包含到本JSP頁面,匯入網路上的絕對路徑,可能會出現異常,一般放到cache標籤中,也可以匯入相對路徑的檔案,

屬性:
url:被匯入資源的URL路徑
context:相同伺服器下其他的web工程,必須以"/"開頭
引入的是同一伺服器下的其他web工程的頁面,首先修改tomcat的釋出路徑,
再修改tomcat目錄下的conf/context.xml檔案中context標籤中的屬性:
crossContext=“true”
var:以String型別存入被匯入的檔案的內容可以存到session或其他範圍中
Scope:變數的JSP範圍
charEncoding:被匯入檔案的編碼格式
varReader:以Reader型別儲存被包含檔案內容

redirect標籤的用法,實現了請求的重定向

屬性:url:指定重定向的頁面地址
context:用於匯入其他web工程中的頁面
<c:redirect url="">
<c:param name=“username”>zhangsan</c:param>
<c:param name=“password”>123456</c:param>
</c:redirect>

url標籤的用法:用於動態生成一個String型別的URL
可以同<c:param></c:param>共同使用,也可以使用html的標籤實現超連結

屬性:
value:表示url的路徑
var:將url路徑儲存在var的變數中
scope:var變數的一個範圍

格式化標籤:
<%@ taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt” %>
日期的格式化:
<fmt:formatDate type=“both” dateStyle=“full” timeStyle=“full” value="${currentTime}" />

type: 可以是time,date或both。控制是否只生成時間,只生成日期,或者時間日期都生成。 dateStyle:
可以是short, medium, long 或 full(default)。控制列印日期使用的具體格式。 timeStyle:
可以是short, medium, long 或 full(default)。控制列印時間使用的具體格式。 value:
這是一個java.util.Date 型別的值,用於生成日期和時間。 pattern:日期的格式:yyyy-MM-dd HH:mm:ss

數字的格式化:
<fmt:formatNumber value=“0.1234” type=“percent” pattern="#0.00%"/>

符號 意義
0 一個數位
#一個數位,前導零和追尾零不顯示
. 小數點分割位置
, 組分隔符的位置
減號 負數字首
% 用100乘,並顯示百分號
其他任何符號 在輸出字串中包括指定符號

SQL標籤
<%@ taglib uri=“http://java.sun.com/jsp/jstl/sql” prefix=“sql” %>
XMl標籤
<%@taglib prefix=“x” uri=“http://java.sun.com/jsp/jstl/xml” prefix=“x”%>
JSTL 函式
<%@ taglib prefix=“fn” uri=“http://java.sun.com/jsp/jstl/functions”%>
JSTL函式的使用:
contains:
<c:out value="${fn:contains(‘你好,hello!’,‘hello’)}"></c:out>
其他函式的用法類似:
containsIgnoreCase:
endWith(“1”,“2”)判斷2是否在1的結尾
startWith(“1”,“2”)判斷2是否在1的開頭
fn:escapteXml(‘設計模式’);
fn:indexOf(‘1’,‘2’):2在1中第幾個出現的
length():
replace():
split():
subString();
toLowerCase():
toUpperCase():
trim():