




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Servlet編程
本章主要內(nèi)容
一.Servlet基礎(chǔ)
二.Servlet編程基本技能
三.Servlet編程高級(jí)技能
四?ServletFilter編程
一.Servlet基礎(chǔ)J
二.Servlet編程基本技能
三.Servlet編程高級(jí)技能
四?ServletFilter編程
表示邏輯層業(yè)務(wù)邏輯層企業(yè)信息系統(tǒng)層
客戶層
瀏覽器
HTML頁(yè)面4
V
A卜
V1
JavaApplet數(shù)據(jù)庫(kù)服務(wù)器
-A
~V郵件服務(wù)器
客戶端應(yīng)用程序
客戶方計(jì)算機(jī)數(shù)據(jù)庫(kù)服務(wù)
(前端):J2ee服務(wù)器(后端)
(服務(wù)器方中間層端)
J2EE多層體系結(jié)構(gòu)
Servlet基礎(chǔ)
Servlet定義:一種獨(dú)立于操作系統(tǒng)平
臺(tái)和網(wǎng)絡(luò)傳輸協(xié)議的服務(wù)器端的
Java應(yīng)用程序,它用來(lái)擴(kuò)展服務(wù)器
的功能,可以生成動(dòng)態(tài)的Web頁(yè)面
Servlet擔(dān)當(dāng)Web瀏唬器或其他HTTP客
戶程序發(fā)出請(qǐng)求,與HTTP服務(wù)器上的數(shù)
據(jù)庫(kù)或應(yīng)用程序之間的中間層。
Servlet是位于Web服務(wù)器內(nèi)部的服務(wù)器端
的Java應(yīng)用程序,與傳統(tǒng)的從命令行啟動(dòng)的
Java應(yīng)用程序不同,Servlet由Web服務(wù)器進(jìn)行
加載,該Web服務(wù)器必須包含支持Servlet的
Java虛擬機(jī)。
注意:Servlet由包含Java虛擬機(jī)的Web服
務(wù)器進(jìn)行加載
?Servlet的運(yùn)行方式可以看成是客戶機(jī)/
服務(wù)器模式,主要用來(lái)響應(yīng)和處理用
戶的請(qǐng)求。
?Servlet結(jié)合JDBC可以進(jìn)行web數(shù)據(jù)
庫(kù)應(yīng)用,即在客戶端瀏覽器通過(guò)調(diào)用
Servlet可以瀏覽和操縱服務(wù)器上數(shù)據(jù)
庫(kù)中的數(shù)據(jù)。
Servlet基礎(chǔ)
Servlet與Applet相比較:
?相似之處:
(1)它們不是獨(dú)立的應(yīng)用程序,沒有main。方法。
(2)它們不是由用戶調(diào)用,而是由另外一個(gè)應(yīng)用程
序(容器)調(diào)用。
(3)它們都有一個(gè)生存周期,包含init()和
destroy()方法。
?不同之處:
(1)Applet運(yùn)行在客戶端,具有豐富的圖形界面。
(2)Servlet運(yùn)行在服務(wù)器端,沒有圖形界面。
Servlet基礎(chǔ)
Servlet最大的用途是通過(guò)動(dòng)態(tài)響應(yīng)客
戶機(jī)請(qǐng)求來(lái)擴(kuò)展服務(wù)器功能!!!
Servlet是在Web服務(wù)器端加載和運(yùn)行的
程序!
servlet是駐留在Web服務(wù)器上的Web組偉servlet在Web
服務(wù)罌上對(duì)麻的HTTP客戶請(qǐng)求進(jìn)腳應(yīng)
Servlet基礎(chǔ)
Servlet工作原理:
Servlet運(yùn)行在WeM艮務(wù)器上的Web容器里。
Web容器負(fù)去管理Servlet。它裝入并初始
化Servlet,管理Servlet的多個(gè)實(shí)例,并
充當(dāng)請(qǐng)求調(diào)度器,將客戶端的請(qǐng)求傳遞到
Servlet,并將Servlet的響應(yīng)返回給客戶
端。Web容器如Servlet的使用期限結(jié)束
時(shí)終結(jié)該Servleto服務(wù)器關(guān)閉時(shí),Web
容器會(huì)從內(nèi)存中卸載和高去Servleto
Servlet基礎(chǔ)
Servlet基本工作流程
(1)客戶機(jī)將請(qǐng)求發(fā)送到服務(wù)器。
(2)服務(wù)器上的Web容器實(shí)例化(裝入)
Servlet
(3)Web容器將請(qǐng)求信息發(fā)送到Servleto
(4)Servlet創(chuàng)建一個(gè)響應(yīng),并將其返回到
Web容器。
(5)Web容器將響應(yīng)發(fā)回客戶機(jī)。
(6)服務(wù)器關(guān)閉或Servlet空閑時(shí)間超過(guò)一定
限度時(shí))調(diào)用destory()方法退出。
servlet生命周期由容器用于實(shí)例化、初始化、執(zhí)行以及銷毀servlet
Servlet基礎(chǔ)
結(jié)論:
客戶機(jī)與Servlet間沒有直接的交互。無(wú)論客
戶機(jī)對(duì)Servlet的請(qǐng)求還是Servlet對(duì)客戶端
的響應(yīng),都是通過(guò)Web服務(wù)器來(lái)實(shí)現(xiàn)的,這就
大大提高了Servlet組件的可移植性
O
Servlet基礎(chǔ)
Servlet的生命周期
?每個(gè)Servlet間接地實(shí)現(xiàn)
javax.servlet.Servlet?口
?方法由javax.servletServlet接口定義
?Servlet生命周期以init()方法、service。方法
和destory()方法為中心。
Servlet基礎(chǔ)
Servlet的生命周期
?加載、實(shí)例化和初始化servlet;
?調(diào)用該servlet的service。;
?清除servlet的響應(yīng),將控制權(quán)返回給
Web服務(wù)器。
Servlet基礎(chǔ)
Servlet的工作流程
?1.Servlet裝入和實(shí)例化
?2.調(diào)用Servlet
?3.Servlet處理請(qǐng)求
?4.Servlet的退出
Servlet基礎(chǔ)
多個(gè)請(qǐng)求的處理:為每個(gè)請(qǐng)求創(chuàng)建一個(gè)新的線程來(lái)
處理客戶端的請(qǐng)求
必須注意線程的同步問(wèn)題!!!
Servlet基礎(chǔ)
?使用Servlet的原因
(1)功能強(qiáng)大
(2)跨平臺(tái)性好
(3)開發(fā)難度低
(4)執(zhí)行效率高
(5)性能優(yōu)化
Servlet基礎(chǔ)
Servlet編程接口
?Servlet是實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)應(yīng)用邏輯的一個(gè)強(qiáng)
大工具。由于使用Java編寫)Servlet可以訪問(wèn)整
個(gè)JavaAPI工具集。
?ServletAPI是一個(gè)定義web客戶程序與web服
務(wù)器之間標(biāo)準(zhǔn)接口的Java類的集合。
?客戶程序向web服務(wù)器發(fā)出請(qǐng)求,web服務(wù)器調(diào)
用Serv1et通過(guò)這種接口對(duì)請(qǐng)求提供服務(wù)。
Servlet基礎(chǔ)
Servlet編程接口
,ServletAPI是標(biāo)準(zhǔn)的Java
API的擴(kuò)充,它是一個(gè)有用的可
不斷擴(kuò)充的程序包集。
,ServletAPI由兩個(gè)包,12個(gè)接
口和9個(gè)類組成
?ServletAPI有兩個(gè)包組成:
?javax.servlet
包含了支持協(xié)議無(wú)關(guān)的Servlet接口和類;
?javax.servlet.http
包含對(duì)HTTP協(xié)議的特別支持的Servlet
接口和類;
?所有的Serv國(guó)都必須實(shí)現(xiàn)通用
Servlet接口和HttpServlet接口
之一。
javax.servlet包中有七個(gè)接口,五個(gè)類
「Servlet接口
2.ServletRequest接口
3.ServletResponse接口
4.ServletCon的接口
5.ServletContext接口
6.RequestDispatcher接口
7.SingleThreadModel接口
I.GenericServlet類
2.ServletlnputStream類
3.ServletOutputStream類
4.ServletException類
5.UnavaiableException類
?Servlet接口
?包含了所有的Servlet最基本的方法,實(shí)際在使
用Servlet時(shí),一般使用GenericServlet類或
HTTPServlet類。
1.Servlet接口
?聲明:PublicinterfaceServlet
?這個(gè)接口是所有Servlet必須直接或間接實(shí)現(xiàn)的接口.
它定義了以下的方法:
?init(SetvletConfig)”用于初始化Servlet
?getServletConfig()“獲得Servlet配置相關(guān)信息
?destroy。■■銷毀Servlet
?getServletlnfo()“獲得Servlet的信息
?service(ServletRequestreq,ServletResponse
res)■■運(yùn)行應(yīng)用程序邏輯的入口,它接收2個(gè)參
數(shù),ServletRequest表示客戶端請(qǐng)派的信
息,ServletResponse表示對(duì)客戶端的響應(yīng)
?Servlet接口的主要方法和功能
InterfaceServlet{
publicabstractvoidinit(ServletConfig);
publicabstractServletConfiggetServletConfig();
publicabstractstringgetServletlnfo();
publicabstractvoidservice(ServletRequest,
ServletResponse);
publicabstractvoiddestroy();
?ServletRequest接口
?客戶向Servlet發(fā)出請(qǐng)求時(shí),Servlet使用
ServletRequest接口獲取客戶端請(qǐng)求信
息,ServletRequest對(duì)象作為一個(gè)參數(shù)
傳遞給service。方法,在使用
HttpServlet類時(shí),一般使用它的子接口
HttpServletRequesto
?ServletRequest接口定義的主要方法:
?InterfaceServletRequest{
?publicabstractintgetContentLength();
?publicabstractstringgetContentType();
?publicabstractstringgetProtcol();
?publicabstractstringgetSchema();
?publicabstractstringgetServerName();
?publicabstractstringgetServerPort();
?publicabstractstringgetRemoteAddr();
?publicabstractstringgetServerHost();
?publicabstractstringgetParameter(Stringname);
?publicabstringstringgetParameterValue(String
name);
?ServletResponse接口
?ServletResponse接口一般在Servlet的
service。方法中調(diào)用,在service。方法中
可以使用ServletResponse中的方法,把
數(shù)據(jù)延回給客戶端,ServletResponse
柞為一個(gè)參數(shù)傳遞給service。方法的。
?ServletResponse接口定義的主要方法:
?InterfaceServletResponse{
?publicabstractvoid
setContentLength(intlen);
?publicabstractvoid
setContentType(stringtype);
?publicabstractServletOutputStream
getOutputStream();}
?GenericServlet類
?GenericServlet類實(shí)現(xiàn)了Servlet接口,是一個(gè)實(shí)用
的Servlet類,它是一個(gè)抽象類,而它的service。方
法是一個(gè)抽象方法,GenericServlet的派生類必須
直接或者間接實(shí)現(xiàn)這個(gè)方法。
?它主要方法和功能為:
ClassGenericServletImplementsServlet{
publicabstractvoidinit(ServletConfig);
publicabstractServletConfiggetServletConfig();
publicabstractstringgetServletlnfo();
publicabstractvoidservice(ServletRequest,
ServletResponse);
publicabstractvoiddestroy();
javax.servlet.http包有五個(gè)接口和四個(gè)類
HttpServletReques?口
HttpServletResponse?口
HttpSession接口
HttpSessionContex?口
HttpSessionBingingEven?口
Cookie類
HttpServlet類
HttpSessionBingingEvent類
HttpUtils類
HttpServlet編程接口
Servlet的相關(guān)類和接口
?HttpServlet類:
?它是一個(gè)抽象類,HttpServlet繼承通用
Servlet類(GenericServlet),接受來(lái)自
Web站點(diǎn)的請(qǐng)求(該請(qǐng)求來(lái)自訪問(wèn)該Web
站點(diǎn)的客戶瀏覽器),并將處理后的響應(yīng)
結(jié)果發(fā)回Web站點(diǎn)(Web站點(diǎn)再將響應(yīng)結(jié)
果發(fā)送給客戶瀏覽器)
HttpServlet類的定義
?PublicclassHttpServletextendsGenericServlet
B
舞i
i善a1s
管
1宦
一
室
s一
1量
舞
翥
-詈
襄
1品
曷
尊U1
霆
索
意
童
S置
鬟
饕
S<
莖
SW5著
HttpServlet類的方法
?doGet()方法:
?用來(lái)處理一個(gè)HTTPGET請(qǐng)求,這個(gè)操作允許客
戶端簡(jiǎn)單的從一個(gè)HTTP服務(wù)器獲得資源,對(duì)于
HTTP的GET請(qǐng)求,它僅僅允許客戶從HTTP服
務(wù)器上取得(GET)資源。
?PublicvoiddoGet(HttpServletRequest
request.HttpServletResponseresponse)
throwsServletException?IOException{...}
?doPost()方法:
?用來(lái)處理一個(gè)HTTPPOST請(qǐng)求。
?PublicvoiddoPost(HttpServletRequest
request.HttpServletResponseresponse)
throwsServletException?IOException{...}
?doPut()方法:
?用來(lái)處理一個(gè)HTTPPUT請(qǐng)求。
?PublicvoiddoPut(HttpServletRequest
request.HttpServletResponseresponse)
throwsServletException?IOException{...}
?doDelete()方法:
?用來(lái)處理一個(gè)HTTPDELETE請(qǐng)求。
?PublicvoiddoDelete(HttpServletRequest
request.HttpServletResponseresponse)
throwsServletException?IOException{...}
HttpServletRequest?口
?HttpServletRequest代表發(fā)送至UHttpServlet的
請(qǐng)求,這個(gè)接口封裝了從客戶機(jī)到服務(wù)器的通信,
它可以包含關(guān)于客戶環(huán)境的信息和任何要從客戶
機(jī)發(fā)送到Servlet的數(shù)據(jù)。
?HttpServletRequest接口擴(kuò)展了
javax.servlet.servletRequest^口,用于提供更
多的功能給HttpServlet。Servlet引擎實(shí)現(xiàn)該接
口,創(chuàng)建HttpServletRequest對(duì)象,將來(lái)自客戶
瀏覽器的信息傳遞給HttpServlet的Servlet方法。
HttpServletResponse?口
?HttpServletResponse代表從HttpServlet
發(fā)回客戶機(jī)的響應(yīng)。它通常是根據(jù)請(qǐng)求和
Servlet訪問(wèn)的其他來(lái)源中的數(shù)據(jù)動(dòng)態(tài)創(chuàng)建
生成的響應(yīng),如HTML頁(yè)面。
ServletConfig接口
?ServletConfig代表Servlet的配置信
Mo
?Servlet在發(fā)布到服務(wù)器上的時(shí)候,在
web應(yīng)用配置文件中對(duì)應(yīng)一段配置信
息。
?Servlet根據(jù)配置信息進(jìn)行初始化。
?配置信息的好處在于Servlet發(fā)布時(shí)可
以通過(guò)配置信息靈活的調(diào)整Servlet而
重、UJO
?ServletConfig接口定義了一個(gè)
Servlet配置對(duì)束,Servlet服蜃器可以
用來(lái)傳遞信息給Servlet以便初始化
Servleto
?配置信息含有初始化參數(shù),這些參數(shù)
以"名字/值”的形式成對(duì)出現(xiàn),描述
關(guān)于服務(wù)器的Servlet信息。
ServletContext接口
?ServletContext代表Servlet的運(yùn)行環(huán)境信息。為
了與服務(wù)器及服務(wù)器上運(yùn)行的其他程序進(jìn)行交互,
有必要獲得服務(wù)器的環(huán)境信息。
?定義了一套Servlet與Servlet通信的方法,例如:
得到MIME類型的文件。確定運(yùn)行在服務(wù)器上的
其他Servlet或?qū)慡ervlet日志文件。
?Servlet引擎通過(guò)返回一個(gè)ServletContext對(duì)象來(lái)
與Servlet交流,Servlet使用ServletConfig接口
的getServletContext方法得至^ServletContext
對(duì)象。
ServletException接口
?ServletException代表Servlet運(yùn)彳亍過(guò)程中
擲出的意外對(duì)象。
HttpSession接口
?HttpSession用來(lái)在無(wú)狀態(tài)的Http協(xié)
議下越過(guò)多個(gè)請(qǐng)求頁(yè)面來(lái)維持狀態(tài)和
識(shí)別用戶。維護(hù)HttpSession的方法
有Cookie或URL重寫。
RequestDispatcher?口
?RequestDispatcher代表請(qǐng)求轉(zhuǎn)發(fā)器,
可以將客戶端請(qǐng)求從一個(gè)Servlet轉(zhuǎn)發(fā)
到另外其他的服務(wù)器資源,如其他
Servlet、靜態(tài)HTML頁(yè)面等。
一.Servlet基礎(chǔ)
二.Servlet編程基本技能4
三.Servlet編程高級(jí)技能
四.ServletFilter編程
Servlet編程基本技能
編寫響應(yīng)HTTP請(qǐng)求的Serviet的步驟:
(1)創(chuàng)建一個(gè)擴(kuò)展了
javax.servlet,http.HttpServlet接口的
Servlet類。
(2)重寫doGetO或doPost()方法實(shí)現(xiàn)對(duì)HTTP
請(qǐng)求信息的動(dòng)態(tài)響應(yīng)。
packagecom.servlet;
importjava.io.lOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet,http.HttpServlet;
importjavax.servlet,http.HttpServletRequest;
importjavax.servlet,http.HttpServietResponse;
publicclassFirstServletextendsHttpServlet{
protectedvoiddoGet(HttpServletRequestrequest,
{HttpServletResponseresponse)throwsServletException,lOException
//TODOMethodstubgeneratedbyLomboz
response.setContentType("text/html");
PrintWriterout=response.getWriter();
HTML3咽7aWgln("<!DOCTYPEHTMLPUBLIC\"-//W3C//DTD
+"<HTML>"
+"<HEAD>"
+"<TITLE>"+"FirstServlet"+"</TITLE>"
+"</HEAD>"
+"<BODYBGCOLOR=\"#FFFFFF\">"
+"<CENTER>"
+"<H1>"+"HelloWorld!"+
+"</CENTER>"
+"</BODY>"
+"</HTML>");
//out.printin(uHelloWorld”)
曰FirstServlet-MicrosoftInternetExplorer-1□!x|
文件(E)編輯⑥查看&)收藏⑧工具0)幫助⑻
Q后退▼▼國(guó)慟心以搜索收藏夾QT媒體O▼:一
Servlet編程基本技能
處理客戶端輸入
在Web程序設(shè)計(jì)中,以表單方式向服務(wù)器提交
數(shù)據(jù)是最常見的方法。表單數(shù)據(jù)的提交方法有兩
種:Post方法和Get方法)
當(dāng)使用Post方法時(shí),數(shù)據(jù)由標(biāo)準(zhǔn)的輸入設(shè)備
讀入。
當(dāng)使用Get方法時(shí),數(shù)據(jù)傳遞給表單數(shù)據(jù)處理
程序,即附加在請(qǐng)求地址的后面,在瀏覽器的地
址欄中可以看到。
Servlet編程基本技能
處理客戶端輸入
用戶只要簡(jiǎn)單的調(diào)用HttpServletRequest
的getParameter。方法,給出變量名稱即可
取得該變量的值。
需要注意的是,變量的名稱是大小寫敏感
的。當(dāng)請(qǐng)求的變量不存在時(shí),將會(huì)返回一個(gè)
空字符串
生成提交數(shù)據(jù)的HTML頁(yè)面:Login.html
<!DOCTYPEHTMLPUBLIC"-//w3c//dtdhtml4.0transitional//en">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>提交表單數(shù)據(jù)</title>
</head>
<bodybgcolor="#FFFFFF">
<h1align="center"><b>歡迎登錄系統(tǒng)</b></h1>
<formaction="getpostdata"method="post">
<p></p>
<tablewidth="52%"border="2"align="center">
<trbgcolor="#FFFFCC">
<tdalign="center"width="43%"><divalign="center”>用戶名:</div></td>
<tdwidth="57%"><divalign="left">
<inputtype="text"name="username">
</div></td>
</tr>
<trbgcolor="#CCFF99">
<tdalign="center"width="43%"><divalign="center">密碼:</div></td>
<tdwidth="57%"><divalign="left">
<inputtype="password"name="password">
</div></td>
</tr>
</table>
<palign="center">
<inputtype="reset"name="Reset"value="重置">
<inputtype="submit"name="Submit2"value="提交"〉
</p>
</form>
</body>
,,提交表早數(shù)據(jù)-MicrosoftInternetExplorer?@
文件①牖(E)查看(Y)螭?工具①W(H)
6x@"榔,悔挾?£,.匕,
?C:\DocumentsandSettings\Administrator\LocalSettings\Temp\Rar$EX04,0*J]轉(zhuǎn)到
歡迎登錄系統(tǒng)
ff提交
生成處理客戶端請(qǐng)求的Servlet:getpostdata.java
packagecom.servlet;
importjava.io.lOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassgetpostdataextendsHttpServlet{
protectedvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,lOException{
//TODOMethodstubgeneratedbyLomboz
〃為解決編碼問(wèn)題后來(lái)添加
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");〃解決編碼問(wèn)題
PrintWriterout=response.getWriter();
out.println(//atoolsmethodtoshowthehtmlcodewithtitle
"<BODYBGCOLOR=\"#FDF5E6\">\n"+
"<H1ALIGN:CENTER〉"+"getpostdata"+"</H1>\n"+
"<UL>\n"+
"<LI><B>username</B>:"
+request.getParameter("username")+"\n"+
"<LI><B>password</B>:"
+request.getParameter("password")+"\n"+
"</UL>\n"+
"</BODY></HTML>");
Servlet編程基本技能
處理客戶端輸入
處理多選項(xiàng)框的輸入頁(yè)面
用戶需要調(diào)用H即ServletRequest的
getParameterValues。方法,給出變量名稱即
可取得該變量的值。
生成HTML頁(yè)面:multiChoice.html
?<!DOCTYPEHTMLPUBLIC"-//w3c//dtdhtml4.0transitional//en">
?<html>
?<head>
?<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
?<t由e>多值變量提交</Mtle>
?</head>
?<bodybgcolor="#FFFFFF">
?選出你喜歡吃的水果:
?<formname="form1"method="post"action="multichoice">
?<inputtype="checkbox"name="checkboxl"value="蘋果">
?蘋果
?<inputtype="checkbox"name="checkbox1"value="西瓜”〉
?西瓜
?<inputtype="checkbox"name="checkbox1"value="桃子"〉
-桃子
?<inputtype="checkbox"name="checkbox1"value:"葡萄”>
?葡萄
?<inputtype="submit"name="Submt"value="提交”>
?<inputtype="reset"name="reset"value="重置"》
?</form>
?</body>
?</html>
色多值變量提交一MicrosoftInternetExplorer
文件(E)編輯(助查看⑺收藏(A)工具(D幫助(H)2
j*j0;、;、搜索,收藏夾e”
y\SimpleServlet\multiChoice.html]▼(3轉(zhuǎn)到
選出你喜歡吃的水果:
蘋果西瓜桃子葡萄提交重置
生成處理客戶端請(qǐng)求的Servlet:MutiChoiceServlet.java
packagecom.servlet;
importjava.io.lOException;
importjava.io.Printwriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassMultiChoiceServletextendsHttpServlet{
protectedvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,lOException
//TODOMethodstubgeneratedbyLomboz
response.setContentType("text/html;charset=gb2312");
request.setCharact6rEncoding("gb2312");〃解決編碼問(wèn)題
PrintWriterout=response.getWriter();
String[]paramValues=
request.getParameterValues("checkbox1");
Stringtemp=newString("");
for(inti=O;i<paramValues.length;i++)temp+=paramValues[i]+"
out.println("你喜歡吃的水果有:”+temp+"。");
程序說(shuō)明:
多選框?qū)?yīng)的變量有多個(gè)值,程序調(diào)用
request.getParameterValues
("checkbox,)獲得變量值數(shù)組,然后采
用循環(huán)的方式將其中的每個(gè)值取出顯示。
Servlet編程基本技能
發(fā)送非HTML文檔
通過(guò)JavaServlet編程可以方便
地對(duì)客戶端的響應(yīng)以HTML文件的
形式發(fā)送到客戶端的WEB瀏覽器,
然而許多站點(diǎn)還允許訪問(wèn)MIME類型
的非HTML文檔。
Servlet編程基本技能
發(fā)送非HTML文檔
Servlets可以使用MIME類型來(lái)向
瀏覽器傳送非HTML文件,比如
AdobePDF和MicorsoftWordo使用
正確的MIME類型能夠保證這些非
HTML文件被正確的插件或外部程
序處理顯示。
Servlet編程基本技能
發(fā)送非HTML文檔
解決方案:
PDF文件的MIME類型是
uapplication/pdf5。用Servlet打開一^個(gè)
PDF文件,需要將response對(duì)象中header
的content夾型設(shè)置成相應(yīng)的MIME標(biāo)志
response.setContentTypeCfiappiication/pdf,)
Servlet編程基本技能
獲取Servlet配置參數(shù)
Servlet除了從請(qǐng)求對(duì)象中獲取信
息以外,還可以從配置文件中獲取配
置參數(shù)信息。
Servlet編程基本技能
獲取Servlet配置參數(shù)
Servlet配置參數(shù)由ScrvletConflg對(duì)象表不。在Servlet被實(shí)
例化后,ScrvictConflg對(duì)象對(duì)任何客戶端在任何時(shí)候訪
問(wèn)都有效,但一^個(gè)Servlet的ServletConflg對(duì)象不能被其他
Serviette|可。
在Servlet中要得到ScrvletConflg對(duì)象有兩種方法:
?在init0方法中獲取(通過(guò)init的重載方法傳遞);
>通過(guò)getServletConflgO方法直接獲取。
用途:通過(guò)配置信息來(lái)初始化Servlet可以有效避免硬編
碼信息,提圖Servlet的可移植性。
一.Servlet基礎(chǔ)
二.Servlet編程基本技能
三.Servlet編程高級(jí)技能4
四.ServletFilter編程
Servlet編程IWJ級(jí)技能
會(huì)話:從特定客戶端到服務(wù)器的一系列
請(qǐng)求稱為會(huì)話。
在Web服務(wù)器看來(lái),一個(gè)會(huì)話是由在一
次瀏覽過(guò)程中所發(fā)出的全部HTTP請(qǐng)求組
成的。
Servlet編程IWJ級(jí)技能
HTTP特征:
HTTP協(xié)議是一種無(wú)狀態(tài)的協(xié)議,客戶端每
次打開一個(gè)Web頁(yè)面,它就會(huì)與服務(wù)器建
立一個(gè)新的連接,發(fā)送一個(gè)新的請(qǐng)求到服
務(wù)器,服務(wù)器處理客戶端的請(qǐng)求,返回響
應(yīng)到客戶端,并關(guān)閉與客戶端建立的連接。
當(dāng)客戶端發(fā)起新的請(qǐng)求,那么它重新與服
務(wù)器建立連接,因此服務(wù)器并不記錄關(guān)于
客戶的任何信息。
Servlet編程IWJ級(jí)技能
記錄會(huì)話信息的技術(shù)稱為會(huì)話跟蹤O
常見會(huì)話跟蹤技術(shù)有:
Cookie、
URL重寫
隱藏表單域
Session
Servlet編程IWJ級(jí)技能
>Cookie
Cookie是一小塊可以嵌入到HTTP請(qǐng)求
和響應(yīng)中的數(shù)據(jù)。
/識(shí)別用戶
/避免輸入用戶名和密碼
,定制一個(gè)站點(diǎn)
Servlet編程IWJ級(jí)技能
ACookie使用過(guò)程
(1)在服務(wù)器端創(chuàng)建Cookie。
Cookiecookie=newCookie(Stringname,StringVai);
Stringname:Cookie的名字,StringVai:Cookie的值。
(2)將Cookie添加到客戶端
response.addCookie(cookie);
(3)讀取cookie(客戶端->服務(wù)器)
request.getCookie();
Servlet編程fWj級(jí)技能
示例:
/顯示Cookie的信息
,通過(guò)Cookie實(shí)現(xiàn)會(huì)話跟蹤
Servlet編程IWJ級(jí)技能
(1)在服務(wù)器端創(chuàng)建Cookie。
Cookiecookie=null;
(2)通過(guò)HttpServletRequest對(duì)象中的
getCookie()為法,從客戶端讀取Cookie,
那么它返回當(dāng)前請(qǐng)求中Cookie對(duì)象的一個(gè)
數(shù)組,返回所有Cookie。
Cookie[]cookies=request.getCookie();
Servlet編程IWJ級(jí)技能
(4)判斷Cookie"VisitTimes"是否存在,如果不為空,
也就是已經(jīng)存在,那么使用Cookie對(duì)象的getName。獲
取信息。
if(cookies!=null){
for(inti=0;(i<cookies.length;i++){
if(cookies[i].getName(J-equalsCVisitTimes1'))
cookie=cookies[i];
}
Servlet編程IWJ級(jí)技能
(5)如果Cookie不存在,需要生成一個(gè)新的
Cookie(從服務(wù)器端添加到客戶端)
if(cookie==null){
intmaxAge=-1;
cookie=newCookie(i,VisitTinriesi,,i,1");
cookie.setMaxAge(maxAge);
response.addCookie(cookie);
}
Servlet編程fWj級(jí)技能
AURL重寫
URL重寫把傳入WEB的請(qǐng)求地址重定向到
其他URL的過(guò)程。
Servlet編程fWj級(jí)技能
AURL重寫優(yōu)點(diǎn)
A隱藏實(shí)際路徑提高安全性
Servlet編程IWJ級(jí)技能
AURL重寫
AURL重寫通過(guò)在URL地址后面增加一個(gè)包
含會(huì)話信息的字符串來(lái)記錄會(huì)話信息。
AURL重寫將一些信息附加在URL后面,使
用,,?“和”&“分割。
AURL地址與會(huì)話信息的字符串之間用”?
“隔開,如果有多個(gè)參數(shù),參數(shù)間用”&“隔
開。
Servlet編程IWJ級(jí)技能
使用HttpSession對(duì)象跟蹤對(duì)話
HttpSession高級(jí)接口實(shí)際上是建立在Cookie
和URL重寫這兩種會(huì)話跟蹤技術(shù)之上的,只不
過(guò)由Servlet自動(dòng)實(shí)現(xiàn)了關(guān)于會(huì)話跟蹤的一切,
不再需要程序員了解具體細(xì)節(jié)。
HttpSession接口允許Servlet查看和管理關(guān)
于會(huì)話的信息)確保信息持續(xù)跨越多個(gè)用戶連
接等。
HttpSession接口
?HttpSession用來(lái)在無(wú)狀態(tài)的Http協(xié)
議下越過(guò)多個(gè)請(qǐng)求頁(yè)面來(lái)維持狀態(tài)和
識(shí)別用戶。維護(hù)HttpSession的方法
有Cookie或URL重寫。
Servlet編程IWJ級(jí)技能
HttpSession接口中常用方法
(javax.servlet.http.HttpSession)
(1)publicBooleanisNew()
如果客戶機(jī)還不知道會(huì)話)則返回true,如果
客戶機(jī)已經(jīng)禁用了Cookie,則會(huì)話在
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)黃銅閥門行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025年中國(guó)平地茶行業(yè)市場(chǎng)運(yùn)營(yíng)現(xiàn)狀及投資戰(zhàn)略咨詢報(bào)告
- 2025年中國(guó)印花竹窗簾行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略規(guī)劃建議報(bào)告
- 2025年中國(guó)足球行業(yè)市場(chǎng)深度分析及投資戰(zhàn)略規(guī)劃報(bào)告
- 2025至2030種植機(jī)械行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030玻璃飲料瓶市場(chǎng)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國(guó)漂白軟木牛皮紙漿(BSKP)行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國(guó)濃縮容器行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國(guó)汽車鎖行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國(guó)汽車用橡膠成型行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2024年變壓器性能檢測(cè)服務(wù)合同
- 陜西省西安市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)統(tǒng)編版期末考試((上下)學(xué)期)試卷及答案
- 草晶華產(chǎn)品培訓(xùn)課件
- 超級(jí)抗原問(wèn)題
- 23J916-1 住宅排氣道(一)
- 中鐵員工勞動(dòng)合同范本
- 三位數(shù)乘一位數(shù)豎式
- 外墻保溫吊籃施工方案
- DB43-T 2142-2021學(xué)校食堂建設(shè)與食品安全管理規(guī)范
- 體外診斷試劑盒線性范圍研究線性區(qū)間評(píng)價(jià)資料及可報(bào)告區(qū)間建立
- AQ 1097-2014 井工煤礦安全設(shè)施設(shè)計(jì)編制導(dǎo)則(正式版)
評(píng)論
0/150
提交評(píng)論