JSP 腳本元素 - 表達(dá)式:<%= xx%>
- Scriptlet:<% xxx %>
- 聲明 :<%!xxx %>
表達(dá)式 的概念 - 1.是對數(shù)據(jù)的顯示,系統(tǒng)將其對作為一個值進(jìn)行計算并顯示
- 2.不能以 分號 " ; " 結(jié)尾
- 3.表達(dá)式的值 直接嵌入到html頁面即可以直接在瀏覽器中輸入結(jié)果
- <body>
- <h1>JSP 表達(dá)式</h1>
- <b>pi的值</b><%=Math.PI %> <br/>
- <b>110,119中最大的值</b><%=Math.max(110,119)%> <br/>
- <b>110,119中最小的值</b><%=Math.min(110,119)%> <br/>
- <b>3+2-5的值</b><%=3+2-5%> <br/>
- <b>(3+2)==5的值</b><%=(3+2)==5%> <br/>
- <b>(3+2)!=5的值</b><%=(3+2)!=5%> <br/>
- </body>
JSP ScriptLet - <body>
- <%
- String name="toy";
- System.out.println(name); //打印到 控制臺 去了哦!
-
- //打印到 頁面中去
- for(int i=1;i<10;i++){
- for(int j=0;j<i;j++){
- out.println(j); //調(diào)用 jsp的 out對象 在頁面上顯示了哦
- }
- out.println("<br/>");
- }
- %>
- </body>
JSP 聲明 - 1.就是在JSP中聲明 java 的方法和 變量 (用于定義JSP代表Servlet的成員變量和方法名)
- 2.JSP的聲明的變量 是針對所有的請求,且生命周期是整個WEB應(yīng)用程序
- <body>
- <%!
- // 聲明 servlet中的 成員變量和方法
- int numTimes=3;
-
- public String sayHello(String name){
- return "Hello "+name+"!";
- }
- %>
- <br/>
- <%
- //每刷新頁面一下 numTimes就會累加 這樣說明是 成員變量
- //而且 說明 JSP (servlet) tomcat啟動的時候 就只實例化一次 然后被緩存起來了 所以 這個變量 就會一直累加
- out.println(numTimes);
- numTimes++;
- out.println("<br/>");
- out.println(sayHello("admin"));
- %>
- </body>
JSP 的指令 - 1.page
- 2.include
- 3.taglib
- 語法為:
- <%@ 指令名稱 屬性1="值1" .....%>
page 指令 - 1.用于設(shè)置JSP的屬性
- 2.<%@ page contentType="text/html;charset=GBK" %>
language | 定義要使用的腳本語言,如果在將來的JSP容器支持 多種語言可以使用它 | "java" |
import | 定義以","分割的類或者包名的列表,就像通常在java代碼中使用的import語句那樣 | 無 |
pageEncoding | 指定JSP文件本身的字符集編碼 | GBK |
contentType | 定義JSP字符編碼方法和JSP頁面響應(yīng)的MIME類型 | cha'tset=iso-8859-1 |
isErrorPage | 表示當(dāng)前頁面作為 錯誤頁面 | true ,false |
errorPage | 定義處理異常的JSP頁面 | error_url |
isELIgnored | 設(shè)置是否忽略JSP頁面中的EL表達(dá)式的執(zhí)行 | "fasle" |
session | 指定這個頁面是否參與一個HTTP會話 | "true" |
include 指令 - 1.用于在運(yùn)行時將html 或者 JSP 嵌入到另一個 JSP 頁面
- 2.先合并,再編譯
- <body>
- <%@ include file="/head.jsp" %>
- <%=basePath%><br/>
- <b>嵌套的頁面中不能 在 腳本中 定義 父頁面 相同的 變量 否則會報錯</b>
- <b>嵌套的頁面 中能用父頁面中的變量</b>
- <b>父頁面中可以 用 子頁面中的變量</b>
- </body>
taglib 指令 - 1.可以讓JSP頁面使用 標(biāo)簽
- 2.是在JSP頁面中,將標(biāo)簽描述符文件引用到該頁面中,并且 設(shè)置前綴,利用前綴 使用標(biāo)簽文件中的標(biāo)簽
- <body>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
-
- </body>
JSP 的動作 JSP 動作的介紹
- 在該JSP被翻譯成Servlet源代碼的過程中,當(dāng)容器遇到標(biāo)準(zhǔn)動作元素時,就調(diào)用與之對應(yīng)的Servlet的方法來替代它,所有標(biāo)準(zhǔn)動作元素的前面都有一個JSP前綴作為標(biāo)記,一般形式如下:
- <jsp:標(biāo)簽名 ...屬性.../>
- 1.<jsp:userBean>:在JSP中定義使用一個JavaBean的實例
- 2.<jsp:setProperty>: 設(shè)置一個JavaBean的屬性
- 3:<jsp:getProperty>:從JavaBean中獲取一個屬性值
- 4:<jsp:include>:在JSP頁面包含一個外部的文件
- 5:<jsp:forward>:把到達(dá)的請求轉(zhuǎn)發(fā)另一個頁面進(jìn)行處理
- 6:<jsp:param>:用于傳遞參數(shù)值
- 7:<jsp:plugin>:用戶在指定的客戶瀏覽器中插入插件的屬性
- 8:<jsp:params>:用戶向HTML頁面的插件傳遞參數(shù)值
- 9:<jsp:fallback>:指定如何處理客戶點(diǎn)不支持插件運(yùn)行的情況
- 10<jsp:root>:
- 11<jsp:declaration>:
- 12<jsp:scriptlet>:
- 13<jsp:expression>:
- 14<jsp:text>:
- 15<jsp:output>:
- 16<jsp:attribute>:
- 17<jsp:body>:
- 18<jsp:element>:
- 19<jsp:invoke>:
- 20<jsp:doBody>:
JSP的標(biāo)準(zhǔn)動作的分類 6組
- 1.jsp中使用大JavaBean的標(biāo)準(zhǔn)動作<jsp:userBean>定義一個使用JavaBean,實例,ID屬性定義實例名稱,<jsp:getProperty> 從一個JavaBean中獲取一個屬性值,并將其添加到響應(yīng)中;<jsp:setProperty> 設(shè)置一個JavaBean的屬性
-
- 2.在jsp中包含其他jsp文件或者web資源的標(biāo)準(zhǔn)動作,<jsp:include> 在請求處理階段包含來之一個Servlet或者jsp文件的響應(yīng),注意和include指令不同
-
- 3.將到達(dá)的請求 轉(zhuǎn)發(fā)到另一個jsp頁面或者web資源,以便進(jìn)行下一步的操作的標(biāo)準(zhǔn)動作,<jsp:forward>
-
- 4:在其他標(biāo)準(zhǔn)動作中間指定參數(shù)的標(biāo)準(zhǔn)動作,<jsp:param>對使用<jsp:include> 或者 <jsp:forward>傳遞到另一個Servlet和jsp頁面請求添加一個傳遞參數(shù)
-
-
- 5.在客戶端的頁面嵌入java對象 (例如 applet,是運(yùn)行在客戶端的小java程序)的標(biāo)準(zhǔn)動作
- <jsp:plugin>根據(jù)瀏覽器類型為java插件生成 Object或者 Embed標(biāo)記 <jsp:params><jsp:fallback>
-
- 6.僅僅用戶標(biāo)記文件的標(biāo)準(zhǔn)動作
- <jsp:attribute> <jsp:body> <jsp:invoke> <jsp:dobody> <jsp:element> <jsp:text> <jsp:output>
<jsp:userBean>
- <jsp:useBean id=”name” class=”package.class” scope=”….” type=”…”/>
- id:給一個類實例取名并且作為整個JSP頁面的唯一標(biāo)記,如果需要創(chuàng)建一個新的JavaBean,這也是引用這個JavaBean的實例的名稱
-
- class:javaBean組將的完整java類名,,一定要包括包名,如果容器沒有找到指定的類實例,則會根據(jù)這個class屬性指定的完整類名來創(chuàng)建一個新的javaBean的實例進(jìn)行引用
-
- type:告訴容器這里的javaBean實例需要實現(xiàn) 一個Java接口或者一個 超類,class和type 必須選其中一個
-
- scope: 這個這個JavaBean的在那種上下文中可用,page(PageContext):在當(dāng)前頁面 request(ServletRequest):請求方法, session(httpSession)會話范圍,appliaction 應(yīng)用程序范圍.
<jsp:setProperty>
- 1:
- <jsp:userBean id="myName" ...>
- <jsp:setProperty name="myName" property="someProperty" .../>
- </jsp:userBean>
-
- 2.
- <jsp:userBean id="myName" ...>
- <jsp:setProperty name ="myName" property="somePropery" .../>
-
- name:是必須設(shè)置 知道是javaBean的名稱
-
- property:必須的,指定對javaBean 的屬性中那些值進(jìn)行設(shè)置,有個特殊的用法 "* "表示在設(shè)置所有名字與javaBean 屬性名稱匹配的請求參數(shù)都被傳遞到相應(yīng)屬性的get方法
-
- value:指定屬性的值
-
- param:這個屬性 和value 不能同時使用,只能用一個, 如果都沒有使用,就會為 使用javaBean中的默認(rèn)值,如果使用property屬性,容器就會把property指定的屬性變量設(shè)置為param指定的請求的參數(shù)值.
<jsp:setProperty>
- name:表示javaNean在jsp中的標(biāo)記
- property:表示提取javaBean中那個屬性的值
- <jsp:userBean id="testBean" class="com.helloworld.SimpleBean">
- <jsp:setProperty name="testBean" property="message" value="Hello"/>
- </jsp:userBean>
-
- <h1>取值/h1>
- <jsp:getProperty name="testBean" property="message"/>
-
- <h1>重新賦值</h1>
- <jsp:setProperty name="testBean" property="nessage" value="hello World" >
-
- <h1>使用EL表達(dá)式取值</h1>
- ${testBean.message}
<jsp:include>
- <jsp:include page="...URL..." flush="true|false"/>
-
- <jsp:include page=" ...URL... flush="true|false">
- <jsp:param ..../>
- </jsp:include>
include指令 和include動作的差別 (有的稱為 動態(tài)導(dǎo)入 和 靜態(tài)導(dǎo)入)
- 1.語法不同
- 指令: <%@ include file="..url.." %>
- 動作: <jsp:include page="..url" />
-
- 2. 編譯合并順序不同
- 指令:先合并后在進(jìn)行一起編譯 (只有一個編譯文件)
- 動作:單獨(dú)編譯 然后合并 編譯后的二進(jìn)制文件 (會有多個編譯文件)
-
- 3.變量的使用
- 指令:不能定義 父頁面的 同名變量 ,可以修改 和使用 父頁面的變量,父頁面也可以使用子頁面的變量
- 動作:能定義 父頁面的同名變量 ,不可以修改和使用 父頁面的變量.父頁面不能使用 子頁面的變量
-
- 4.變量的作用域
- 指令:會延長 父頁面變量的生命周期 注意 變量的值的變化
- 動作:不會影響變量的作用域和值
-
- 5.編譯報錯
- 指令:使用 父頁面的變量的時候 子頁面會報編譯異常,頁面前面會有 "紅叉叉"(但是能正常使用,可以忽略)
- 動作:不會有編譯異常
<jsp;forward>
- <jsp:forward page="/util/errorPage.jsp"> //一個相對的路徑
- <jsp:forward page="<%=someJavaExpression%>"> // 一個 動態(tài)值
<jsp:param>
- 一般與<jsp:include > 和<jsp:forward> 一起使用
- lt;body>
- <jsp:include page="date.jsp">
- <jsp:param name="" value=""/>
- </jsp:include>
- lt;/body>
<jsp:plugin>
- <jsp:plugin type=" ..applet 或者 javaBean " code="" codebase="" archive=" ." >
- </jsp:plugin>
-
- type:用來指定 該插件是applet 或者 javaBean
<jsp:params>
- <body>
- <jsp:plugin type="applet|JavaBean" code="">
- <jsp:params>
- <jsp:param name="" property="" value=""/>
- <jsp:param name="" property="" value=""/>
- <jsp:param name="" property="" value=""/>
- </jsp:params>
- </jsp:plugin>
- </body>
<jsp:fallback>
- <jsp:fallback>
- 客戶端不支持插件運(yùn)行時候顯示的 html和 jsp 代碼 (只有客戶端不支持的時候才能運(yùn)行)
- </jsp:fallback>