當前位置:首頁 » 網頁前端 » jsp的腳本表達式
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

jsp的腳本表達式

發布時間: 2022-12-23 22:49:37

❶ 14. 什麼是JSP表達式、JSP scriplet 、JSP 聲明

JSP表達式就是用<%= %>包裹起來的,例如:

<%=expression%>

這種樣子的,作用相當於out.print(expression)專用於在頁面上輸出表達式expression的值。


JSP scriplet就是一個JSP程序段,例如這種的:

<%
for(inti=0;i<10;i++){
out.println(i);
%>

其實就是把你在Java里寫的搬到JSP里用<% %>包裹了。


JSP聲明,就是放在JSP文件第一行的,標記是<%@ ... %>,例如:

<%@language="Java"import="java.util.*"pageEncoding="utf-8"%>

裡面寫一些import, 頁面編碼之類的,內容比較固定。

❷ jsp中的JSTL與EL表達式用法及區別

JSTL (JSP Standard Tag Library ,JSP標准標簽庫)
JSTL標簽庫分為5類:JSTL核心標簽庫、JSTL函數標簽庫、資料庫標簽庫、I18N格式化標簽庫、XML標簽庫。
JSTL的核心標簽庫主要包括:表達式操作、流程式控制制、迭代操作和URL操作。以下是JSTL常用標簽的用法:
一、表達式操作
1、<c:out>
作用:用於顯示數據的內容。
語法1:沒有本體內容
<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />
語法2:有本體內容
<c:out value="value" [escapeXml="{true|false}"]>
default value
</c:out>
屬性說明:
value:需要顯示出來的值。
default:如果value的值為null時,則顯示default指定的值。
escapeXml:是否轉換特殊字元,默認為true。即默認會將<、>、』、」 和 & 轉換為 <、>、'、"和&。如果設為false,則不進行轉換。
2、<c:set>
作用:用於將變數的值存儲在JSP范圍中或JavaBean的屬性中。
語法1:將value的值存儲在范圍為scope的varName變數中
<c:set value="value" var="varName" [scope="{page|request|session|application}"] />
語法2:將本體內容的數據存儲在范圍為scope的varName變數中
<c:set var="varName" [scope="{page|request|session|application}"] >
...本體內容
</c:set>
語法3:將value的值存儲在target對象的property屬性中
<c:set value="value" target="target" property="propertyName" />
語法4:將本體內容的數據存儲在target對象的property屬性中
<c:set target="target" property="propertyName">
...本體內容
</c:set>
屬性說明:
value:要被存儲的值。
var:欲存入的變數名稱。
scope:var變數的JSP范圍。默認為page范圍。
target:為一JavaBean或Map對象。
如果「target」是一個Map,「property」指定的是該Map的一個鍵;如果「target」是一個bean,「property」指定的 是該bean的一個成員欄位。
如果「target」表達式為null,容器會拋出一個異常。
如果「target」表達式不是一個Map或bean,容器會拋出一個異常。
如果「target」表達式是一個bean,但是這個bean沒有與「property」匹配的成員欄位,容器會拋出一個異常。
property:指定的target對象的屬性。
3、<c:remove>
作用:移除變數。
語法:<c:remove var="varName" [scope="{page|request|session|application}"] />
屬性說明:
var:要移除的變數。
scope:var變數所在的JSP范圍,默認為page范圍。
4、<c:catch>
作用:用於處理產生錯誤的異常情況,並將錯誤信息存儲起來。
語法: <c:catch [var="varName"] >
...欲抓取錯誤的部分
</c:catch>
屬性說明:
var:將錯誤信息存儲在指定的變數中,可以通過該變數獲取錯誤信息。
二、流程式控制制
1、<c:if>
作用:類似if判斷語句,用於表達式判斷。
語法1:沒有本體內容
<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"] />
語法2:有本體內容
<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"] />
...本體內容
</c:if>
屬性說明:
test:當該屬性中的表達式運算結果為true,則會執行本體內容,為false則不執行,該標簽必須要有test屬性。
var:存儲test的運算結果,為true或false。
scope:var變數的JSP范圍。
2、<c:choose>、<c:when>、<c:otherwise>
作用:這三個標簽必須組合使用,用於流程式控制制。
範例:
<c:choose>
<c:when test="${condition1}">
condition1為true
</c:when>
<c:when test="${ condition2}">
condition2為true
</c:when>
<c:otherwise>
condition1和condition2都為false
</c:otherwise>
</c:choose>
範例說明:當condition1為true時,會顯示「condition1為true」;當condition1為false且condition2為true時,會顯示「condition2為true」,如果兩者都為false,則會顯示「condition1和condition2都為false」。
注意:若condition1和condition2的運算結果都為true時,此時只會顯示"condition1為true"。
限制說明:
a、<c:when>和<c:otherwise>標簽必須在<c:choose>和</c:choose>之間使用。
b、在同一個<c:choose>中,<c:otherwise>必須是最後一個標簽,且只能有一個<c:otherwise>標簽。<c:when>可以有多個。
c、在同一個<c:choose>中,當所有<c:when>的test都為false時,才執行<c:otherwise>的本體內容。
三、迭代操作
1、<c:forEach>
作用:為循環控制,它可以將集合(Collection)中的成員循序瀏覽一遍。運作方式為當條件符合時,就會持續重復執行<c:forEach>的本體內容。
語法1:迭代一個集合對象中的所有成員
<c:forEach items="collection" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"] />
...本體內容
</c:forEach>
語法2:迭代指定次數
<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>
...本體內容
</c:forEach>
屬性說明:
items:被迭代的集合對象。
var:存放當前指到的集合對象中的成員。
varStatus:存放當前指到的成員的相關信息。(index:當前指到的成員的索引;count:當前總共指到成員的總數;first:當前指到的成員 是否為第一個成員;last:當前指到的成員是否為最後一個成員)。
begin:迭代開始的位置,默認為0。
end:迭代結束的位置,默認為最後。
step:每次迭代的間隔數,默認為1。
範例:
<%
int atts[] = {1,2,3,4,5,6,7,8,9,10};
request.setAttribute("atts", atts);
%>
<c:forEach items="${atts}" var="item" begin="0" end="9" step="1" >
${item}</br>
</c:forEach>
此標簽也可以用於普通的循環控制,與for循環一樣。如:
<c:forEach begin="1" end="10" var="item" >
${item}</br>
</c:forEach>
2、<c:forTokens>
作用:用指定分隔符分隔一字元串,並迭代分隔後的數組。
語法: <c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"] >
本體內容
</c:forTokens>
屬性說明:
items:被分隔並迭代的字元串。
delims:用來分隔字元串的字元。
var:存放當前指到的成員。
varStatus:存放當前指到的成員的相關信息。(index:當前指到的成員的索引;count:當前總共指到成員的總數;first:當前指到的成員 是否為第一個成員;last:當前指到的成員是否為最後一個成員)。
begin:迭代開始的位置,默認為0。
end:迭代結束的位置,默認為最後。
step:每次迭代的間隔數,默認為1。
範例1:
<c:forTokens items="A,B,C,D,E" delims="," var="item" >
${item}
</c:forTokens>
用「,」號分隔字元串,並迭代輸出分隔後的字元串數組,輸出結果為「ABCDE」。
範例2:
<c:forTokens items="A,B;C-D,E" delims=",;-" var="item" >
${item}
</c:forTokens>
delims中指定了三個分隔符「,」、「;」和「-」,可見我們一次可以設定所有想當做分隔字元串用的字元。輸出結果依然為「ABCDE」。
四、URL操作
1、<c:import>
作用:將其他靜態或動態文件包含到本身JSP網頁中。不但可以包含同一個web application下的文件,還可以包含其他web application或其他網站的文件。
語法:
<c:import url="url" [var="varName"] [scope="{page|request|session|application}"] >
[<c:param name="paramName" value="paramValue"/>]
</c:import>
屬性說明:
url:要包含至本身JSP網頁的其他文件的URL。必選
var:將包含進來的其他文件以字元串的形式存放到指定的變數中。可選
scope:var變數的作用范圍。可選
<c:param>:可選子標簽,用於向包含進來的其他網頁文件傳遞參數。
範例:
<c:import url="http://java.sun.com" >
<c:param name="test" value="1234" />
</c:import>
說明:當<c:import>標簽中未指定var變數時,會直接將包含進來的其他網頁文件內容顯示出來,如果指定了var變數,則會將內容存放到var變數中,不顯示。
2、<c:url>
作用:生成一個URL。
語法:
<c:url value="url" [context="expression"] [var="name"] [scope="scope"]>
[<c:param name="expression" value="expression"/>]
</c:url>
範例1:
<a href="<c:url value=index.jsp'/>">index page</a>
在<a>超鏈接標簽中生成一個URL,指向index.jsp。
範例2:
<c:url value="index.jsp">
<c:param name="keyword" value="${searchTerm}"/>
<c:param name="month" value="02/2003"/>
</c:url>
生成一個URL,並傳遞參數,生成的結果為index.jsp?keyword=*&month=02/2003,*代表傳遞的searchTerm的值。
3、<c:redirect>
作用:可以將客戶端的請求從一個JSP網頁導向到其他文件。
語法:
<c:redirect url="url">
[<param name="paramName" value="paramValue">]
</c:redirect>
將請求導向URl指向的其他文件。
五、I18N格式化標簽庫
使用I18N格式化標簽之前,需先插入以下指令:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
1、<fmt:formatNumber>
作用:將數字格式化成數字、貨幣、百分比
語法:
<fmt:formatNumber value="value" [var="varName"] [type="{number|curreny|percent}"] [maxFractionDigits="3"] [groupingUsed="{true|false}"]/>
屬性說明:
value:需要進行格式化的值
var:值的另一個變數聲明
maxFractionDigits:保留的小數點個數
2、<fmt:parseNumber>
作用:將字元串型的數字、貨幣、百分比格式化成數字
語法:
<fmt:parseNumber value="¥6789.36" [var="result"] [type="{number|curreny|percent}"] >
屬性說明:
value:需要進行格式化的值
var:值的另一個變數聲明
3、<fmt:formatDate>
作用:格式化時間和日期
4、<fmt:parseDate>
作用:將字元串形式的時間和日期轉換成日期時間類型。
5、<fmt:setTimeZone>
作用:在JSP 網頁中設置默認時區。
6、<fmt:timeZone>
作用:在JSP網頁中為該標簽體內的代碼段設置時區。
7、<fmt:setLocale>
作用:在JSP 網頁中設置語言地區。
8、<fmt:requestEncoding>
作用:在JSP 網頁中設置請求所採用的編碼方式,等價於JSP中的request. setCharacterEncoding(String encoding)。
9、<fmt:setBundle>
作用:設置默認的消息資源。
10、<fmt:message>
作用:在指定的消息資源中按關鍵字取出相應的消息內容。
11、<fmt:param>
作用:在從消息資源中取出消息內容時,為消息內容設置動態參數。
12、<fmt:bundle>
作用:為該標簽體內的代碼段設置一個消息資源。
他們的區別:
EL相關概念JSTL一般要配合EL表達式一起使用,來實現在jsp中不出現java代碼段。所以我們先來學習EL表達式EL主要用於查找作用域中的數據,然後對它們執行簡單操作;它不是編程語言,甚至不是腳本編制語言。通常與 JSTL 標記一起作用,能用簡單而又方便的符號來表示復雜的行為。EL基本格式EL表達式的格式:用美元符號($)定界,內容包括在花括弧({})中;例如: ${loginInfoBean.suser}此外,您可以將多個表達式與靜態文本組合在一起以通過字元串並置來構造動態屬性值;例如:Hello {loginInfoBean.suser} ${loginInfoBean.spwd}EL語法組成-標識符EL表達式由標識符、存取器、文字和運算符組成。標識符用來標識存儲在作用域中的數據對象。EL 有 11 個保留標識符,對應於 11個EL隱式對象。除了11隱式對象外,假定所有其它標識符都用來標識作用域的變數。標識符例:${abc} 相當於<%=pageContext.findAttribute(「abc」)%>${og_1} <%=pageContext.findAttribute(「og_1」)%>…等等;就是說{}內的標識符除了11個保留字之外都表示作用域中的數據對應的名.${requestScope}中的requestScope是11個EL隱式對象之一,它不再表示作用域中數據,而是表示request作用域;EL隱藏對象pageContext PageContext 實例對應於當前頁面的處理pageScope 與頁面作用域屬性的名稱和值相關聯的Map類requestScope 與請求作用域屬性的名稱和值相關聯的Map類sessionScope 與會話作用域屬性的名稱和值相關聯的Map類applicationScope 與應用程序作用域屬性的名稱和值相關聯的Map類param 按名稱存儲請求參數的主要值的 Map 類paramValues 將請求參數的所有值作為 String 數組存儲的 Map 類Header 按名稱存儲請求頭主要值的 Map 類headerValues 將請求頭的所有值作為 String 數組存儲的 Map 類cookie 按名稱存儲請求附帶的 cookie 的 Map 類initParam 按名稱存儲 Web 應用程序上下文初始化參數的Map類EL存取器存取器用來檢索對象的特性或集合的元素。存取器: 通過 「[]」 或 「.」 符號獲取相關數據例:${userBean.suser} 或 ${userBean[「suser」]}//獲取輸出bean中的suser屬性值;${mcType[「id」]} //獲取map中key為id對應的值;EL運算符運算符允許對數據和文字進行組合以及比較。EL運算符:類別 運算符算術運算符 +、-、*、/(或 div)和 %(或 mod)關系運算符 ==(或eq)、!=(或ne)、<(或lt)、>(或gt)、<=(或le) 和 >=(或ge)邏輯運算符 &&(或 and)、||(或or)和 !(或 not)驗證運算符 empty驗證運算符(empty):對於驗證數據特別有用。empty 運算符採用單個表達式作為其變數(也即,${empty input}),並返回一個布爾值,該布爾值表示對表達式求值的結果是不是「空」值。求值結果為 null 的表達式被認為是空,即無元素的集合或數組。如果參數是對長度為零的 String 求值所得的結果,則 empty 運算符也將返回 true。EL文字文字表示固定的值 — 數字、字元、字元串、布爾型或空值。在 EL 表達式中,數字、字元串、布爾值和 null 都可以被指定為文字值。字元串可以用單引號或雙引號定界。布爾值被指定為 true 和 falseJSTL是什麼JSTL(JSP Standard Tag Library,JSP標准標簽庫)是一個不斷完善的開放源代碼的JSP標簽庫,是由apache的jakarta小組來維護的。JSTL1.0 由四個定製標記庫(core、format、xml 和 sql)和一對通用標記庫驗證器組成。core 標記庫提供了定製操作,通過限制了作用域的變數管理數據,以及執行頁面內容的迭代和條件操作。它還提供了用來生成和操作 URL 的標記。format 標記庫定義了用來格式化數據(尤其是數字和日期)的操作。它還支持使用本地化資源束進行JSP頁面的國際化。xml 庫包含一些標記,這些標記用來操作通過XML表示的數據,而 sql 庫定義了用來查詢關系資料庫的操作。 兩個 JSTL 標記庫驗證器允許開發人員在其 JSP 應用程序中強制使用編碼標准。如果要使用JSTL,則必須引用jstl.jar和 standard.jar兩個包。為什麼要用JSTL我們JSP用於開發信息展現頁非常方便;也可以嵌入java代碼(scriptlet、表達式和聲明)代碼用來實現相關邏輯控制。看下面程序。但這樣做會帶來如下問題:jsp維護難度增加;出錯提示不明確,不容易調試;分工不明確;(即jsp開發者是美工,也是程序員);最終增加程序的開發成本;解決上面的問題可以使用定製標記庫,JSTL使JSP開發者可以減少對腳本元素的需求,甚至可以不需要它們,從而避免了相關的維護成本。使分工更明確。<% if (session.getAttribute(「user」).equals(「member」)) {%><p>Welcome, member!</p><% } else { %><p>Welcome, guest!</p><% } %>JSTL一般配合EL一起使用,因此先看看EL.JSTL部署在EE應用程序中部署JSTL有兩種方式:已存在的工程上部署將jstl.jar和standard.jar兩個包考到現有工程WebRoot / WEB-INF / lib 目錄下將相關的 .tld文件考到現有工程 WebRoot /WEB-INF 目錄下;也可通過eclipse在已存在

❸ 3.jsp中的腳本標識包含哪些元素它們的作用及語法格式是什麼

可以去W3School教程上看下,很簡單

❹ 舉例說明jsp中表達式的用法

這篇文章主要介紹了JSP中正則表達式用法,實例分析了JSP中正則表達式的簡單使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下本文實例講述了JSP中正則表達式用法。分享給大家供大家參考,具體如下:希望本文所述對大家JSP程序設計有所幫助。
<%@
page
language="java"
import="java.util.*,cn.com.Person,cn.com.Adddress"
pageEncoding="UTF-8"%>
<%
String
path
=
request.getContextPath();
String
basePath
=
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE
HTML
PUBLIC
"-//W3C//DTD
HTML
4.01
Transitional//EN">
<html>
<head>
<base
href="<%=basePath%>">
<title>My
JSP
'El.jsp'
starting
page</title>
<meta
http-equiv="pragma"
content="no-cache">
<meta
http-equiv="cache-control"
content="no-cache">
<meta
http-equiv="expires"
content="0">
<meta
http-equiv="
www.hbbz08.com
keywords"
content="keyword1,keyword2,keyword3">
<meta
http-equiv="description"
content="This
is
my
page">
<!--
<link
rel="stylesheet"
type="text/css"
href="styles.css">
-->
</head>
<body>
<%
String
data="assd";
request.setAttribute("data",
data);
%>
<!--
正則表達式,對於
Request傳過來的數據可以直接如下顯示
相當於:pageContext.findAttribute("data");
這是一般的方式
-->
${data
}
<br/>
<%
Person
p=new
Person();
p.setName("name");
request.setAttribute("person",
p);
%>
<!--
反射name屬性獲取這個值輸出
數據通過JAVABean里傳過來的如下:
-->
${person.name}
<br/>
<%
Person
p2=new
Person();
Adddress
add=new
Adddress();
add.setCity("NewYork");
p2.setAddress(add);
request.setAttribute("p2",
p2);
%>
<!--
下面的是定義一個Person的類和一個Adddress的類
Person中私有屬性:private
Adddress
address;
要獲取他的地址可以如下的方式來完成
數據復雜的bean裡面帶過來的如下:
-->
${p2.address.city}
<br/>
<%
ArrayList
list=new
ArrayList();
list.add(new
Person("wy"));
list.add(new
Person("wyy"));
list.add(new
Person("wyyy"));
request.setAttribute("list",
list);
%>
<!--
集合帶過來的怎麼獲取數據呢?
-->
${list[1].name
}
<br/>
<%
Map
map=new
HashMap();
map.put("1",
new
Person("aaaa"));
map.put("b",
new
Person("bbbb"));
map.put("c",
new
Person("cccc"));
map.put("d",
new
Person("dddd"));
request.setAttribute("map",
map);
%>
<!--
Map集合帶過來的怎麼獲取數據呢?
map集合的數據存放的時候id一般不要用數字:會出現500錯誤
但是用數字的話獲取方式如第二條
.號取不出來就用中括弧[]
-->
${map.b.name}
${map['1'].name
}
<br/>
<!--
獲取當前的web項目名
-->
${pageContext.request.contextPath}
<a
href="${pageContext.request.contextPath}/demo1.jsp"
>點</a>
</body>
</html>

❺ Jsp頁面中java表達式語法格式是什麼

在jsp中插入JAVA代碼方法:
1.Scriptlet:腳本小程序
(1)<%...%>:可以插入一些語句。
舉例:<% out.println("<h2>Hello world</h2>"); %>表明向網頁輸出一個Hello world語句。
(2)<%! ... %>:只能放置全局變數、全局常量、類、函數。
舉例:
<%!
public static final String INFO="HELLO WORLD";
class Person{
.....
}
%>
注意:<%! %>中不能使用內置對象!
(3)<%= ... %>:只能放置一個變數、常量。
舉例:<%="Hello world"%>
2.<jsp:scriptlet>標簽
在<jsp:scriptlet></jsp:scriptlet>中插入語句即可。

❻ jsp中<%=XXX>和${XXX}以及<c:out value="XXX">有什麼區別

我也不太了解,不過據我使用時候的感覺,
<%=XXX>常寫在value中賦值。
${XXX}常用來向js方法中傳遞參數。
<c:out value="XXX">常用來在頁面上對後台傳過來的值進行if 判斷。
<c:if xxx<值>這樣的

如果有大神歡迎補充,只是我的見解,不一定對

❼ jsp腳本和el表達式的區別

jsp的主要作用是顯示頁面;在頁面中用jsp腳本對於不具備java編程能力的美工人員、網頁設計師來說他們是看不懂的。EL表達式的發明主要是為了使JSP寫起來更加簡單:簡化對JavaBean、集合的訪問、訪問存儲對象等。
簡化例子:
< %=request. getParameter(「username」)% > 等價於 ${ param. username }
<%=user.getAddr( ) %> 等價於 ${user.addr}。

❽ jsp中的<%=表達式%>和<%表達式%>有什麼區別

區別只有如下一點:

<% %> 標識裡面的是jsp代碼。

<%=變數 %> 是 <% out.println(變數) %> 的簡寫方式。

jsp運行原理:

JSP的本質就是一個Servlet,JSP的運行之前會先被Tomcat伺服器翻譯為.java文件,然後在將.java文本編譯為.class文件,而在訪問jsp時,處理請求的就是那個翻譯後的類。

<% %>:

<% %>叫做腳本片段,其中寫的內容會翻譯在Servlet的Service方法中,顯然可以在Service方法中定義局部變數或者調用其他方法,但是不能在Service中再定義其他的方法,也就是可以在<%%>中定義局部變數或者調用方法,但不能定義方法。

在jsp頁面可以有多個腳本片段,但是多個腳本片段之間要保證結構完整。

<%=%>:

稱作jsp表達式,用於將已經聲明的變數或者表達式輸出到網頁上面。

(8)jsp的腳本表達式擴展閱讀:

示例:

<body>

<%! int sum=1; %>

<% int sum=8; %>

<h3>----<% out.print(sum++); %></h3>

<h3>----<%= this.sum %></h3>

</body>