可用等式为:html+java=jsp表示jsp[8]._java jsp
### jsp@3腳本元素
.JSP腳本元素用來插入Java代碼,這些Java代碼將出現(xiàn)在由當(dāng)前JSP頁面生成的Servlet中。
腳本元素有三種格式:
聲明格式<%! declaration; %>,其作用是把聲明加入到Servlet類(在任何方法之外);
表達(dá)式格式<%= expression %>,作用是計(jì)算表達(dá)式并輸出其結(jié)果;
Scriptlet格式<% code %>,作用是把代碼插入到Servlet的service方法。
4.4.1?JSP聲明
JSP聲明用來聲明JSP程序中的變量、實(shí)例、方法和類。
聲明是以結(jié)尾。在JSP程序中,在使用一個(gè)變量或引用一個(gè)對(duì)象的方法和屬性前,必須先對(duì)使用的變量和對(duì)象進(jìn)行聲明。聲明后,你才可以在后面的程序中使用它們。
JSP的聲明可以讓你定義頁面一級(jí)的變量以保存信息或定義該JSP頁面可能需要的方法。其內(nèi)容必須是一個(gè)采用page指令所定義的語言編寫和完整有效的聲明。JSP內(nèi)置對(duì)象在聲明元素中不可見,此時(shí)聲明的變量作為編譯單元的成員變量處理。
其語法如下:
例如:
注意:
1.編譯JSP時(shí),腳本小程序生成于jspService()方法的內(nèi)部,而聲明卻生成于jspService()方法之外,與源文件合成一體。使用方式所聲明的變量為全局變量,即表示若同時(shí)n個(gè)用戶在執(zhí)行此JSP網(wǎng)頁時(shí)將會(huì)共享此變量。因此應(yīng)盡量少用聲明變量,若要使用變量時(shí),請(qǐng)直接在scriptlet之中聲明使用即可。
2.每一個(gè)聲明僅在一個(gè)頁面中有效,如果你想每個(gè)頁面都用到一些聲明,最好把它們寫成一個(gè)單獨(dú)的JSP頁面或單獨(dú)的Java類,然后用或動(dòng)作元素包含進(jìn)來。
由于聲明不會(huì)有任何輸出,因此它們往往和JSP表達(dá)式或腳本小程序結(jié)合在一起使用。例如,下面的JSP代碼片斷輸出自從服務(wù)器啟動(dòng)(或Servlet類被改動(dòng)并重新裝載以來)當(dāng)前頁面被請(qǐng)求的次數(shù):
自從服務(wù)器啟動(dòng)以來頁面訪問次數(shù)為:
4.4.2?JSP表達(dá)式
JSP表達(dá)式用來計(jì)算輸出Java數(shù)據(jù),表達(dá)式的結(jié)果被自動(dòng)轉(zhuǎn)換成字符型數(shù)據(jù),結(jié)果可以作為HTML的內(nèi)容,顯示在瀏覽器窗口中。JSP表達(dá)式包含在“”標(biāo)記中,不以分號(hào)結(jié)束,除非在加引號(hào)的字符串部分使用分號(hào)。開始字符和結(jié)束字符之間必須是一個(gè)完整合法的Java表達(dá)式。可以是復(fù)雜的表達(dá)式,在處理這個(gè)表達(dá)式的時(shí)候按照從左向右的方式來處理。
其語法如下:
<%= expression %>
例如:
下面的代碼顯示頁面被請(qǐng)求的日期/時(shí)間:
當(dāng)前時(shí)間為:<%= new java.util.Date() %>
為簡(jiǎn)化這些表達(dá)式,JSP預(yù)定義了一組可以直接使用的對(duì)象變量。內(nèi)置對(duì)象在表達(dá)式中可見。對(duì)于JSP表達(dá)式來說,最重要的幾個(gè)內(nèi)置對(duì)象及其類型如下,后面我們將詳細(xì)介紹這些內(nèi)置對(duì)象。
(1)request:HttpServletRequest。
(2)response:HttpServletResponse。
(3)session:和request關(guān)聯(lián)的HttpSession。
(4)out:PrintWriter,用來把輸出發(fā)送到客戶端。
例如:
Your hostname: <%= request.getRemoteHost() %>
4.4.3腳本小程序
如果要完成的任務(wù)比簡(jiǎn)單的表達(dá)式復(fù)雜時(shí),可以使用JSP腳本小程序(Scriptlet)。腳本小程序中可以包含有效的程序片段,只要是合乎Java本身的標(biāo)準(zhǔn)語法即可。通常我們核心程序都寫在這里,是我們實(shí)際編寫的JSP程序的主要部分。
JSP腳本小程序的語法如下:
<% Java Code %>
由于JSP和其他一些嵌入式語言一樣,都會(huì)嵌在HTML語言內(nèi)部使用,所以JSP頁面中是由一段一段的JSP程序嵌在HTML語言里面組成的。腳本小程序能夠包含要用到的變量或方法的聲明和表達(dá)式。和JSP表達(dá)式一樣,腳本小程序可以訪問所有內(nèi)置對(duì)象,所有的內(nèi)建對(duì)象在小腳本中可見。例如,如果你要向結(jié)果頁面輸出內(nèi)容,可以使用out變量。
String queryData = request.getQueryString();
out.println("Attached GET data: " + queryData);
%>
注意:在程序段中定義的變量是局部變量,且程序段中的“表達(dá)式”必須使用“;”作為結(jié)束符,程序片段并不局限于一行代碼中。
編譯JSP時(shí),編譯器在jspService()方法中只簡(jiǎn)單地不作修改地包含腳本小程序的內(nèi)容。當(dāng)Web服務(wù)器響應(yīng)請(qǐng)求時(shí),Java代碼就會(huì)運(yùn)行。在腳本片段周圍可能有純粹的HTML代碼,在這些地方,代碼片段可以使你創(chuàng)建執(zhí)行代碼的條件,或調(diào)用另外的代碼片段。
例如,下面的JSP片斷混合了HTML語言和腳本小程序:
Have a nice day!
Have a lousy day!
上述JSP代碼將被轉(zhuǎn)換成如下Servlet代碼:
if (Math.random() <0.5) {
out.println("Have a nice day!");
}
Else
{
out.println("Have a lousy day!");
}
### jsp@動(dòng)作 ?標(biāo)簽
JSP動(dòng)作利用XML語法格式的標(biāo)記來控制Servlet引擎的行為。動(dòng)作組件用于執(zhí)行一些標(biāo)準(zhǔn)的常用的JSP頁面。利用JSP動(dòng)作可以動(dòng)態(tài)地插入文件、重用JavaBean組件、把用戶重定向到另外的頁面、為Java插件生成HTML代碼。
JSP動(dòng)作元素包括:
jsp:include:當(dāng)頁面被請(qǐng)求時(shí)引入一個(gè)文件。
jsp:forward:請(qǐng)求轉(zhuǎn)到一個(gè)新的頁面。
jsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED標(biāo)記。
jsp:useBean:尋找或者實(shí)例化一個(gè)JavaBean。
jsp:setProperty:設(shè)置JavaBean的屬性。
jsp:getProperty:輸出某個(gè)JavaBean的屬性。
4.5.1?include動(dòng)作元素
動(dòng)作元素表示在JSP文件被請(qǐng)求時(shí)包含一個(gè)靜態(tài)的或者動(dòng)態(tài)的文件。
語法:
其中,page="path"表示相對(duì)路徑,或者為相對(duì)路徑的表達(dá)式。flush="true"表示緩沖區(qū)滿時(shí)會(huì)被清空,一般使用flush為true,它默認(rèn)值是false。
例如:
inc.jsp
test.jsp
Header
Footer
運(yùn)行結(jié)果:4
【例4.5】 下面的JSP頁面把4則新聞?wù)迦氲?“WhatsNew.jsp”頁面。改變新聞?wù)獣r(shí)只需改變new文件夾下的四個(gè)具體新聞文件,而主JSP頁面卻可以不作修改:
WhatNews.jsp
What's NewVLINK="#551A8B" ALINK="#FF0000">
What's New at JspNews.com
Here is a summary of our four most recent news stories:
一般而言,不能直接從文件名稱上來判斷一個(gè)文件是動(dòng)態(tài)的還是靜態(tài)的。但是能夠自行判斷此文件是動(dòng)態(tài)的還是靜態(tài)的,于是能同時(shí)處理這兩種文件。如果包含的只是靜態(tài)文件,那么只是把靜態(tài)文件的內(nèi)容加到JSP網(wǎng)頁中;如果包含的是動(dòng)態(tài)文件,那么把動(dòng)態(tài)文件的輸出加到JSP網(wǎng)頁中。被包含的動(dòng)態(tài)文件和主文件會(huì)被JSP Container分別編譯執(zhí)行。
前面已經(jīng)介紹過include指令,它是在JSP文件被轉(zhuǎn)換成Servlet的時(shí)候引入文件,而這里的jsp:include動(dòng)作不同,插入文件的時(shí)間是在頁面被請(qǐng)求的時(shí)候。jsp:include動(dòng)作的文件引入時(shí)間決定了它的效率要稍微差一點(diǎn),而且被引用文件不能包含某些JSP代碼(例如不能設(shè)置HTTP頭),但它的靈活性卻要好得多。
include指令是在JSP文件執(zhí)行時(shí)被轉(zhuǎn)換成Servlet的時(shí)候,將被包含文件調(diào)入到主文件,然后二者一起被JSP容器編譯,產(chǎn)生一個(gè)Servlet.
動(dòng)作是在JSP文件被請(qǐng)求時(shí),被包含文件和主文件分別被JSP容器編譯,產(chǎn)生兩個(gè)Servlet,然后將被包含文件的Servlet調(diào)入到主文件的Servlet中。因此同樣引入文件,使用include指令要比使用動(dòng)作的響應(yīng)速度快。
4.5.2?forword動(dòng)作元素
將客戶端所發(fā)出來的請(qǐng)求,從一個(gè)JSP頁面轉(zhuǎn)交給另一個(gè)頁面(可以是一個(gè) HTML文件,JSP 文件,PHP文件,CGI文件,甚至可以是一個(gè)Java程序段。
語法:
"}/>
page屬性包含的是一個(gè)相對(duì)URL。page的值既可以直接給出,也可以在請(qǐng)求的時(shí)候動(dòng)態(tài)計(jì)算,如下面的例子所示:
有一點(diǎn)要特別注意,標(biāo)簽之后的程序?qū)⒉荒鼙粓?zhí)行。
例如
out.println("會(huì)被執(zhí)行!!! ");
%>
out.println("不會(huì)執(zhí)行!!!");
%>
上面這個(gè)范例在執(zhí)行時(shí),會(huì)打印出“會(huì)被執(zhí)行!!!”,隨后馬上會(huì)轉(zhuǎn)入到other.jsp的網(wǎng)頁中,至于out.println("不會(huì)執(zhí)行!!! ")將不會(huì)被執(zhí)行。
【例4.6】該實(shí)例需要四個(gè)文件:login.jsp,test.jsp,ok.htm,no.htm
首先看一下login.jsp
username
password
test.jsp代碼如下:
string username=request.getparameter("username");
if(username.trim().equals("abc"))
{%>
else
{%>
%>
ok.htm和no.htm非常簡(jiǎn)單,可以分別寫為:
ok
no
運(yùn)行效果是當(dāng)你輸入用戶名為abc時(shí),頁面會(huì)自動(dòng)跳轉(zhuǎn)到ok.htm頁面,否則跳到no.htm頁面。
4.5.3?plugin動(dòng)作元素
jsp:plugin動(dòng)作用來根據(jù)瀏覽器的類型,插入通過Java插件運(yùn)行Java Applet所必需的OBJECT或EMBED元素。
語法:
type="bean|applet"
code="classFileName"
codebase="classFileDirectoryName"
[name="instanceName"]
[align="bottom|top|middle|left|right"]
[height="displsyPixels"]
[width="displsyPixels"]
[hspace="leftRightPixels"]
[vspace="topButtomPixels"]
[jreversion="java的版本"]
[
[]
]
[ 這里是在不能啟動(dòng)插件的時(shí)候,顯示給用戶的文本信息]
Plugin中的各個(gè)屬性如下:
(1)type="bean|applet"
插件將執(zhí)行的對(duì)象的類型,必須指定。
(2)code="classFileName"
插件將執(zhí)行的java類文件的名稱,在名稱中必須包含擴(kuò)展名,且此文件必須在用"codebase"屬性指明的目錄下。
(3)codebase="classFileDirectoryName"
包含插件將運(yùn)行的java類的目錄或指相對(duì)這個(gè)目錄的路徑。
4.5.4. param動(dòng)作元素
param動(dòng)作元素用于傳遞參數(shù)。我們還可以使用
和一起使用的語法如下:
" flush="true">
jsp:include>
和一起使用的語法如下:
例如:
4.5.5?useBean及setProperty和getProperty動(dòng)作元素
1.useBean動(dòng)作元素
動(dòng)作用來查找或?qū)嵗粋€(gè)JSP頁面使用的JavaBean組件。javaBean是特殊類型的java類,它與普通java類相比主要區(qū)別是包含了兩種特殊的方法:setXXX( )(設(shè)置屬性值的方法)、getXXX( )(取屬性值的方法)。
在程序中可把邏輯控制、數(shù)據(jù)庫(kù)操作放在javabeans組件中,然后在jsp文件中調(diào)用它。這個(gè)功能非常有用,因?yàn)樗沟梦覀兗瓤梢园l(fā)揮Java組件重用的優(yōu)勢(shì),同時(shí)也避免了損失JSP區(qū)別于Servlet的方便性。所以動(dòng)作幾乎是JSP最重要的用法。
其語法形式:
其中typespec有以下幾種可能的情況:
class="classname" | class="classname" type="typename" | beanname="beanname" type="typename" | type="typename" |
<jsp:useBean id="name" class="package.class" />
注意必須使用class或type,但不能同時(shí)使用class和beanname。beanname表示bean的名字,其形式為“a.b.c”。
只有當(dāng)?shù)谝淮螌?shí)例化Bean時(shí)才執(zhí)行Body部分,如果是利用已有的Bean實(shí)例則不執(zhí)行Body部分,jsp:useBean并非總是意味著創(chuàng)建一個(gè)新的Bean實(shí)例。
獲得Bean實(shí)例之后,要修改Bean的屬性既可以通過jsp:setProperty動(dòng)作進(jìn)行,也可以在腳本小程序中利用id屬性所命名的對(duì)象變量,通過調(diào)用該對(duì)象的方法顯式地修改其屬性。當(dāng)說“某個(gè)Bean有一個(gè)類型為X的屬性foo”時(shí),就意味著“這個(gè)類有一個(gè)返回值類型為X的getfoo方法,還有一個(gè)setfoo方法以X類型的值為參數(shù)”。
通過jsp:setProperty和jsp:getProperty修改和提取Bean的屬性。
useBean動(dòng)作元素屬性如下:
(1)id用來引用Bean實(shí)例的變量。如果能夠找到id和scope相同的Bean實(shí)例,jsp:useBean動(dòng)作將使用已有的Bean實(shí)例而不是創(chuàng)建新的實(shí)例。
(2)class指定Bean的完整包名,表明bean具體是對(duì)哪個(gè)類的實(shí)例化。
(3)scope指定Bean的有效范圍,可取四個(gè)值分別為:page,request,session和application。默認(rèn)值是page,表示該Bean只在當(dāng)前頁面內(nèi)可用(保存在當(dāng)前頁面的PageContext內(nèi)),有效范圍是當(dāng)前頁面。request表示該Bean在當(dāng)前的客戶請(qǐng)求內(nèi)有效(保存在ServletRequest對(duì)象內(nèi))。有效范圍在一個(gè)單獨(dú)客戶請(qǐng)求的生命周期內(nèi)。session表示該Bean對(duì)當(dāng)前HttpSession內(nèi)的所有頁面都有效。有效范圍是整個(gè)用戶會(huì)話的生命周期內(nèi)。最后,如果取值application,則表示該Bean對(duì)所有具有相同ServletContext的頁面都有效。有效范圍是應(yīng)用的生命周期內(nèi)。
scope之所以很重要,是因?yàn)閖sp:useBean只有在不存在具有相同id和scope的對(duì)象時(shí)才會(huì)實(shí)例化新的對(duì)象;如果已有id和scope都相同的對(duì)象則直接使用已有的對(duì)象,此時(shí)jsp:useBean開始標(biāo)記和結(jié)束標(biāo)記之間的任何內(nèi)容都將被忽略。
(4)type指定引用該對(duì)象的變量的類型,它必須是Bean類的名字、超類名字、該類所實(shí)現(xiàn)的接口名字之一。請(qǐng)記住變量的名字是由id屬性指定的。
(5)beanName指定Bean的名字。如果提供了type屬性和beanName屬性,允許省略class屬性。
2.setProperty動(dòng)作元素
標(biāo)簽表示用來設(shè)置bean中的屬性值。在JSP表達(dá)式或Scriptlet中讀取Bean屬性通過調(diào)用相應(yīng)的getXXX方法實(shí)現(xiàn),或者更一般地,使用jsp:getProperty動(dòng)作。
可以使用兩種語法實(shí)現(xiàn)方式:
(1)在jsp:usebean后使用jsp:setproperty:
在這種方式中,jsp:setproperty將被執(zhí)行。
(2)jsp:setproperty出現(xiàn)在jsp:usebean標(biāo)簽內(nèi):
在這種方式中,jsp:setproperty只會(huì)在新的對(duì)象被實(shí)例化時(shí)才將被執(zhí)行。
在中的name值應(yīng)和中的id值相同。我們既可以通過jsp:setProperty動(dòng)作的value屬性直接提供一個(gè)值,也可以通過param屬性聲明Bean的屬性值來指定請(qǐng)求參數(shù),還可以列出Bean屬性表明它的值應(yīng)該來自請(qǐng)求參數(shù)中的同名變量。該動(dòng)作的含義是使用bean中相應(yīng)的set()方法設(shè)置一個(gè)或多個(gè)屬性的值,值的來源是通過value屬性明確給出,或者利用request對(duì)象中相應(yīng)的參數(shù)。
動(dòng)作有下面四個(gè)屬性:
(1)name用來表明對(duì)哪個(gè)bean實(shí)例執(zhí)行下面的動(dòng)作,這個(gè)值和動(dòng)作中定義的id必須對(duì)應(yīng)起來,包括大小寫都必須一致。這個(gè)屬性是必須的。
(2)property用來表示要設(shè)置哪個(gè)屬性。如果property的值是"*",表示用戶在可見的JSP頁面中輸入的全部值,存儲(chǔ)在匹配的bean屬性中。匹配的方法是:bean的屬性名稱必須與輸入框的名字相同。property? property屬性是必需的。它表示要設(shè)置哪個(gè)屬性。有一個(gè)特殊用法:如果property的值是“*”,表示所有名字和Bean屬性名字匹配的請(qǐng)求參數(shù)都將被傳遞給相應(yīng)的屬性set方法。這個(gè)屬性也是必須的。
(3)value屬性是可選的。該屬性用來指定Bean屬性的值。字符串?dāng)?shù)據(jù)會(huì)在目標(biāo)類中通過標(biāo)準(zhǔn)的valueOf方法自動(dòng)轉(zhuǎn)換成數(shù)字、boolean、Boolean、byte、Byte、char、Character。例如,boolean和Boolean類型的屬性值(比如“true”)通過Boolean.valueOf轉(zhuǎn)換,int和Integer類型的屬性值(比如“42”)通過Integer.valueOf轉(zhuǎn)換。
value和param不能同時(shí)使用,但可以使用其中任意一個(gè)。
(4)param屬性是可選的。它指定用哪個(gè)請(qǐng)求參數(shù)作為Bean屬性的值。如果當(dāng)前請(qǐng)求沒有參數(shù),則什么事情也不做,系統(tǒng)不會(huì)把null傳遞給Bean屬性的set方法。因此,你可以讓Bean自己提供默認(rèn)屬性值,只有當(dāng)請(qǐng)求參數(shù)明確指定了新值時(shí)才修改默認(rèn)屬性值。
例如,下面的代碼片斷表示:如果存在numItems請(qǐng)求參數(shù)的話,把numberOfItems屬性的值設(shè)置為請(qǐng)求參數(shù)numItems的值;否則什么也不做。
property="numberOfItems"
param="numItems" />
如果同時(shí)省略value和param,其效果相當(dāng)于提供一個(gè)param且其值等于property的值。進(jìn)一步利用這種借助請(qǐng)求參數(shù)和屬性名字相同進(jìn)行自動(dòng)賦值的思想,你還可以在property(Bean屬性的名字)中指定“*”,然后省略value和param。此時(shí),服務(wù)器會(huì)查看所有的Bean屬性和請(qǐng)求參數(shù),如果兩者名字相同則自動(dòng)賦值。
3.getProperty元素
標(biāo)簽表示獲取bean的屬性的值并將之轉(zhuǎn)化為一個(gè)字符串,然后將其插入到輸出的頁面中。該動(dòng)作實(shí)際是調(diào)用了bean的get()方法。
在使用之前,必須用來創(chuàng)建它。不能使用來檢索一個(gè)已經(jīng)被索引了的屬性。
語法如下:
jsp:getProperty有兩個(gè)必需的屬性,即:name,表示Bean的名字;property,表示要提取哪個(gè)屬性的值。
例如
Number of items:Cost of each:.
.
.
.
.
.
.
### jsp@小結(jié) 面試題
本章小結(jié)
一個(gè)JSP頁面主要由注釋、指令、腳本元素、動(dòng)作元素的內(nèi)容組成。
1.注釋包括HTML注釋和JSP隱藏注釋。
2.指令包括:
(1)page:用來定義整個(gè)JSP頁面的屬性和相關(guān)功能。
(2)include:用來指定JSP文件被編譯時(shí)需要插入的資源,可以是文本、代碼、HTML文件或JSP文件。
(3)taglib:頁面使用者用來自定義標(biāo)簽。
3.腳本元素
(1)聲明:用來定義在程序中使用的實(shí)體,它是一段Java代碼,可以聲明變量,也可以聲明方法。格式:? 例如:。
(2)表達(dá)式:格式:? 最后是沒有分號(hào)的.例如:。
(3)Scriptlet:格式:。
4.在JSP中的動(dòng)作指令包括:Include、 Forward、 UseBean、 GetProperty、 SetProperty、 Plugin。
(1)include指令:表示包含一個(gè)靜態(tài)的或者動(dòng)態(tài)的文件。子句能讓你傳遞一個(gè)或多個(gè)參數(shù)給動(dòng)態(tài)文件,也可在一個(gè)頁面中使用多個(gè)指令來傳遞多個(gè)參數(shù)給動(dòng)態(tài)文件。
(2)forward指令:表示重定向一個(gè)靜態(tài)html/jsp的文件,或者是一個(gè)程序段。
(3)Plugin指令:用于在瀏覽器中播放或顯示一個(gè)對(duì)象(典型的就是Applet和Bean),而這種顯示需要瀏覽器的Java插件。一般來說,元素會(huì)指定對(duì)象是Applet還是Bean,同樣也會(huì)指定class的名字和位置,另外還會(huì)指定將從哪里下載這個(gè)Java插件。
(4)useBean指令:表示用來在JSP頁面中創(chuàng)建一個(gè)Bean實(shí)例并指定它的名字以及作用范圍。
(5)setProperty指令:用來為一個(gè)Bean的屬性賦值。若在jsp:useBean后使用,jsp:setProperty將被執(zhí)行。若jsp:setProperty出現(xiàn)在jsp:useBean標(biāo)簽內(nèi),jsp:setProperty只會(huì)在新的對(duì)象被實(shí)例化時(shí)才將被執(zhí)行。注意name值應(yīng)當(dāng)和useBean中的id值相同。
(6)getProperty指令:表示獲取Bean的屬性的值并將之轉(zhuǎn)化為一個(gè)字符串,然后將其插入到輸出的頁面中。
課后習(xí)題
一.填空題
1. JSP文件不需要引入????????????????????類包。
2.一個(gè)JSP頁面主要包含?????????????????、???????????????????、????????、???????????????????等成分。
3.三種JSP指令分別是??????????????????、?????????????????????、???。
4.三種腳本元素分別是?????????????????? ??、?????????????????????、?????。
5.jsp:useBean動(dòng)作指令的作用是?????????。
二.選擇題
1.JSP的默認(rèn)應(yīng)用語言是(?? )
A JSP???????????????? B Servlet?????????????? C Java?????????????? D JavaScript
2.下列哪種方式不屬于JSP腳本元素語法(?? )
A ????????????????????????????B
C ????????? D
3.jsp:forward動(dòng)作的page屬性的作用是(?? )
A 定義JSP文件名??????????????????? ????????B 定義JSP文件的傳入?yún)?shù)
C 定義JSP文件的文件頭信息???????? D 定義JSP文件的相對(duì)地址
三.簡(jiǎn)答題
1.jsp有哪些頁面成分?作用分別是什么?
2.JSP中動(dòng)態(tài)include與靜態(tài)include的區(qū)別?
我們都知道在JSP中include有兩種形式,分別是
<%@ include file=” ”%>
<jsp:include page=” ” flush=”true”/>
以下是對(duì)include 兩種用法的區(qū)別,主要有兩個(gè)方面的不同:
1.執(zhí)行時(shí)間上:
<%@ include file=”relativeURI”%> 是在翻譯階段執(zhí)行
<jsp:include page=”relativeURI” flush=”true” /> 在請(qǐng)求處理階段執(zhí)行.
2.引入內(nèi)容的不同:
<%@ include file=”relativeURI”%>引入靜態(tài)文本(html,jsp),在JSP頁面被轉(zhuǎn)化成servlet之前和它融和到一起.
<jsp:include page=”relativeURI” flush=”true” />引入執(zhí)行頁面或servlet所生成的應(yīng)答文本.
3.另外在兩種用法中file和page屬性都被解釋為一個(gè)相對(duì)的URI.如果它以斜杠開頭,那么它就是一個(gè)環(huán)境相關(guān)的路徑.將根據(jù)賦給應(yīng)用程序的URI的前綴進(jìn)行解釋,如果它不是以斜杠開頭,
那么就是頁面相關(guān)的路徑,就根據(jù)引入這個(gè)文件的頁面所在的路徑進(jìn)行解釋。
3.jsp有哪些動(dòng)作元素?作用分別是什么?
4.簡(jiǎn)述JSP的幾種注釋方式。
1、jsp有哪些內(nèi)置對(duì)象作用分別是什么
答:JSP共有以下9種基本內(nèi)置組件(可與ASP的6種內(nèi)部組件相對(duì)應(yīng)):
request 用戶端請(qǐng)求,此請(qǐng)求會(huì)包含來自GET/POST請(qǐng)求的參數(shù)
response 網(wǎng)頁傳回用戶端的回應(yīng)
pageContext 網(wǎng)頁的屬性是在這里管理
session 與請(qǐng)求有關(guān)的會(huì)話期
application servlet 正在執(zhí)行的內(nèi)容
out 用來傳送回應(yīng)的輸出
config servlet的構(gòu)架部件
page JSP網(wǎng)頁本身
exception 針對(duì)錯(cuò)誤網(wǎng)頁,未捕捉的例外
2、jsp有哪些動(dòng)作作用分別是什么答:JSP共有以下6種基本動(dòng)作
jsp:include:在頁面被請(qǐng)求的時(shí)候引入一個(gè)文件。
jsp:useBean:尋找或者實(shí)例化一個(gè)JavaBean。jsp:setProperty:設(shè)置JavaBean的屬性。jsp:getProperty:輸出某個(gè)JavaBean的屬性。
jsp:forward:把請(qǐng)求轉(zhuǎn)到一個(gè)新的頁面。
jsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED標(biāo)記
3、JSP中動(dòng)態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?
答:動(dòng)態(tài)INCLUDE用jsp:include動(dòng)作實(shí)現(xiàn)
它總是會(huì)檢查所含文件中的變化,適合用于包含動(dòng)態(tài)頁面,并且可以帶參數(shù)
靜態(tài)INCLUDE用include偽碼實(shí)現(xiàn),定不會(huì)檢查所含文件的變化,適用于包含靜態(tài)頁面
4。JSP的常用指令
isErrorPage(是否能使用Exception對(duì)象),isELIgnored(是否忽略表達(dá)式)
5、JSP和Servlet有哪些相同點(diǎn)和不同點(diǎn),他們之間的聯(lián)系是什么?答:JSP是Servlet技術(shù)的擴(kuò)展,本質(zhì)上是Servlet的簡(jiǎn)易方式,更強(qiáng)調(diào)應(yīng)用的外表表達(dá)。JSP編譯后是"類servlet"。
Servlet和JSP最主要的不同點(diǎn)在于,Servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開來。而JSP的情況是Java和HTML可以組合成一個(gè)擴(kuò)展名為.jsp的文件。
JSP側(cè)重于視圖,Servlet主要用于控制邏輯。
6。Jsp和Servlet中的請(qǐng)求轉(zhuǎn)發(fā)分別如何實(shí)現(xiàn)?
JSP的轉(zhuǎn)發(fā)請(qǐng)求可通過標(biāo)準(zhǔn)動(dòng)作來完成; Servlet轉(zhuǎn)發(fā)請(qǐng)求可通過forward() 方法來實(shí)現(xiàn)。
7.jsp有哪些隱式對(duì)象?作用分別是什么?
request request表示HttpServletRequest對(duì)象。它包含了有關(guān)瀏覽器請(qǐng)求的信息,并且提供了幾個(gè)用于獲取cookie, header, 和session數(shù)據(jù)的有用的方法。
response response表示HttpServletResponse對(duì)象,并提供了幾個(gè)用于設(shè)置送回 瀏覽器的響應(yīng)的方法(如cookies,頭信息等)
out out 對(duì)象是javax.jsp.JspWriter的一個(gè)實(shí)例,并提供了幾個(gè)方法使你能用于向?yàn)g覽器回送輸出結(jié)果。
pageContext pageContext表示一個(gè)javax.servlet.jsp.PageContext對(duì)象。它是用于方便存取各種范圍的名字空間、servlet相關(guān)的對(duì)象的API,并且包裝了通用的servlet相關(guān)功能的方法。
session session表示一個(gè)請(qǐng)求的javax.servlet.http.HttpSession對(duì)象。Session可以存貯用戶的狀態(tài)信息
application applicaton 表示一個(gè)javax.servle.ServletContext對(duì)象。這有助于查找有關(guān)servlet引擎和servlet環(huán)境的信息config config表示一個(gè)javax.servlet.ServletConfig對(duì)象。該對(duì)象用于存取servlet實(shí)例的初始化參數(shù)。
page page表示從該頁面產(chǎn)生的一個(gè)servlet實(shí)例
exception 表示JSP頁面運(yùn)行時(shí)產(chǎn)生的異常
8.兩種跳轉(zhuǎn)方式分別是什么?有什么區(qū)別?答:有兩種,分別為:
前者頁面不會(huì)轉(zhuǎn)向include所指的頁面,只是顯示該頁的結(jié)果,主頁面還是原來的頁面。執(zhí)行完后還會(huì)回來,相當(dāng)于函數(shù)調(diào)用。并且可以帶參數(shù).后者完全轉(zhuǎn)向新頁面,不會(huì)再回來。相當(dāng)于go to 語句。
.
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的可用等式为:html+java=jsp表示jsp[8]._java jsp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 此安装程序必须使用 java 开发工具包
- 下一篇: 匿名类java的说明_Java8 Lam