黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

JSP Servlet基礎(chǔ)知識(一)

系統(tǒng) 2107 0

下一頁»

1. ??? HTML 是靜態(tài)的, JSP 是動態(tài)的,交互式的,而且可由用戶定制。

?

2. ??? 服務(wù)器: 可能是物理主機(硬件),也可能是 Web 服務(wù)器應(yīng)用(軟件)。

客戶: 指人類用戶,或瀏覽器應(yīng)用。

Web 客戶允許用戶請求服務(wù)器上的某個資源,并且向用戶顯示請求結(jié)果。

?

3. ??? 服務(wù)器和客戶的通信

服務(wù)器和客戶之間對話的共同的語言是 HTTP

服務(wù)器使用 HTTP 向客戶發(fā)送信息。

4. ??? HTTP

請求: HTTP 方法( Get Post ),要訪問的頁面,表單參數(shù)。

響應(yīng):狀態(tài)碼,內(nèi)容類型(文本、圖片、 HTML 等),內(nèi)容(具體的 HTML 、圖片等)。

?

5. ??? HTTP 請求: Get 請求和 Post 請求

Get 請求: 資源的路徑 URL 以及所有參數(shù)都會包括在 請求行 中。

??? 請求行: ? GET /select/selectBeer.jsp?color=dark&taste=malty HTTP/1.1

??? 請求首部: Host: www.wickedlysmart.com

?????????? ? User-Agent: Mozilla/5.0 ……

?????????? ? Accept: text/html application/xml application./xhtml+xml

text/html;q=0.9

?????????? ? Accept-Language: en-us en;q=0.5

?????????? ? Accept-Encoding: gizp deflate

??????? ? ? ?? Accept-Charset: ISO-8859-1 utf;q=0.7 *;q=0.7

? ????????? ? Keep-Alive:300

?????????? ? Connection: keep-alive

??? GET 請求,沒有體,參數(shù)只能放在請求行中,并且會顯示在瀏覽器的輸入地址中,不夠安全。

POST 請求: 又稱為“消息體”或“有效負(fù)載”,放在消息體中,長度不受限制。

??? 請求行: POST /advisor/selectBeer.do HTTP/1.1

? ?? 請求首部:同上

? ?? 消息體:(空行) color=dark & taste=malty

??? 簡單的超鏈接默認(rèn)是 GET 方法,如: <a href=”http://www.baidu.com”>link</a>

??? Form 表單默認(rèn)也是 GET 方法。

??? GET HEAD PUT 是冪等的 ( 注: GET doGet() 不同, GET 方法是 HTTP 的, doGet() Servlet ) POST 不是冪等的。

?

6. ??? HTTP 響應(yīng)

包括響應(yīng)首部和體

首部告訴瀏覽器使用的協(xié)議,請求是否成功,以及體中放入內(nèi)容是什么類型

??? HTTP/1.1 200 OK

??? Set-Cookie: jsessionID=adfiifeeni23499v99wernnwerr; Pat=/testEL

??? Content-Type: text/html (內(nèi)容類型響應(yīng)首部的值稱為 MIME 類型, MIME 類型告訴瀏覽器要接受的數(shù)據(jù)是什么類型,其值與 HTTP 請求首部中的 Accept 所列的值相關(guān))

??? Content-Length:397

??? Date: Wed 19 Nov 2003 03:25:40 GMT

??? Server: Apache-Coyote/1.1

??? Connection: close

體中包含了讓瀏覽器顯示的具體內(nèi)容:

??? (空行)

??? ? <html> …… </html>

?

7. ??? URL(Uniform Resource Locators)

http://www.smart.com:80/beeradvice/select/beer1.html

協(xié)議 ? ????? 服務(wù)器 ???? 端口 ?? ?????? 路徑 ?? ?????? 資源

FTP 的端口是 31 Telnet 23 SMTP 25 Time 37 POP3 110 HTTPS 443

?

8. ??? Web 服務(wù)器不做的兩件事情

a) ????? 動態(tài)內(nèi)容。 Web 服務(wù)器應(yīng)用只提供靜態(tài)頁面,動態(tài)內(nèi)容由 Web 服務(wù)器輔助應(yīng)用( CGI )來完成。

b) ????? 在服務(wù)器上保存數(shù)據(jù)。 Web 服務(wù)器把這些功能轉(zhuǎn)給輔助應(yīng)用進行處理。

?

9. ??? Web 容器

JSP Servlet基礎(chǔ)知識(一)

?

Web 服務(wù)器 (Apache) 得到一個指向 servlet 的請求,服務(wù)器不是把這個請求直接交給 servlet 本身,而是交給 Web 容器 (Tomcat) ,由 Web 容器調(diào)用 servlet

Web 容器管理和運行 servlet ,容器知道自己與 Web 服務(wù)器之間的協(xié)議, Web 容器控制者 servlet 的生命周期,容器會自動地為它接收每個 servlet 請求并創(chuàng)建一個新的線程, Web 容器負(fù)責(zé)把 JSP 代發(fā)翻譯成真正的 Java 代碼。

利用配置文件( web.xml )將 servlet 部署到容器

一個完全兼容的 J2EE 應(yīng)用服務(wù)器必須有一個 Web 容器和一個 EJB 容器

JSP Servlet基礎(chǔ)知識(一)

?

Tomcat 是一個 Web 容器,而不是一個完整的 j2ee 應(yīng)用服務(wù)器,因為 Tomcat 沒有 EJB 容器。

?

?

?

10. ??? JSP-Servlet 執(zhí)行流程

??? 1) 瀏覽器把請求數(shù)據(jù)發(fā)送給容器

??? 2) 容器根據(jù) URL 找到正確的 Servlet ,并把請求傳遞給這個 Servlet

??? 3) Servlet 調(diào)用輔助應(yīng)用尋求幫助

??? 4) 這個輔助應(yīng)用返回一個回答, Servlet 把這個回答增加到請求對象

??? 5) Servlet 把請求轉(zhuǎn)發(fā)給 JSP

??? 6) JSP 從請求對象得到回答

??? 7) JSP 為容器生成一個頁面

??? 8) 容器把這個頁面返回給客戶

?

?

JSP Servlet基礎(chǔ)知識(一)

?

?

11. ??? Servlet 的生命周期

?

JSP Servlet基礎(chǔ)知識(一)

12. ??? Servlet 的屬性和參數(shù)

a) ????? 屬性

有三種類型的屬性,應(yīng)用上下文 (ServletContext) 、請求 (HttpRequest) 和會話 (HttpSession)

設(shè)置方法: setAttribute(String name,Object value)

獲取方法: getAttribute(String name), 返回類型是 Object

上下文 (ServletContext) 屬性 不是線程安全的,因為每個 Servlet 都可以訪問。讓上下文屬性線程安全的做法:

同步服務(wù)器方法 ( 即對 doGet() doPost() 方法添加 synchronized)

同步服務(wù)器方法意味著 servlet 中一次只能運行一個線程,但是并不能阻止其它 servlet JSP 訪問這個屬性。

同步上下文 ( synchronized(getServletContext()))

synchronized (getServletContext()){

?????????? ??? getServletContext().setAttribute( "foo" , "22" );

?????????? ??? getServletContext().setAttribute( "bar" , "42" );

}

會話屬性: 通常,一個客戶同時只有一個請求,就算多個 servlet 能在單獨的線程中訪問會話屬性,每個線程都是單獨的請求,所以,這時會話屬性是線程安全的。但是一個用戶同時有多個請求時 ( 用戶同時打開多個瀏覽器去訪問 ) ,會話屬性是非線程安全的,通過同步 HttpSession 來達(dá)到線程安全。代碼如下:

?????? ??? HttpSession session=request.getSession();

?????? ??? synchronized (session){

?????????? ??? session.setAttribute( "foo" , "22" );

?????????? ??? session.setAttribute( "bar" , "42" );

??? }

b) ????? 參數(shù)

應(yīng)用上下文初始化參數(shù)、請求參數(shù)、 servlet 初始化參數(shù)

設(shè)置方法: servlet 初始化參數(shù)只能在 DD 中設(shè)置

獲取方法: getInitParameter(String name)

?

13. ??? Servlet 接受提交的參數(shù)

a) ????? 接受單個參數(shù)

String username=request.getParameter(“username”);

b) ????? 接受多個參數(shù)

String [] parameters=request.getParameterValues(“sizes”);//sizes 可以看做是表單中的復(fù)選框,如:

??? ?? ???? < form action = ”**.do” >

< intput type = checkbox name = sizes value = ”1” > 1

< intput type = checkbox name = sizes value = ”2” > 2

< intput type = checkbox name = sizes value = ”3” > 3

< input type = ”submit” >

</ from >

?

14. ??? ServletConfig ServletContext

a) ????? ServletConfig 對象

每個 servlet 都有一個 ServletConfig 對象,用于向 servlet 傳遞部署信息。

servlet 初始化之前不能使用 servlet 初始化參數(shù)。

ServletConfig 構(gòu)建過程如下:

1) ????? 容器讀取當(dāng)前 servlet DD(web.xml) ,包括 servlet 初始化參數(shù) (<init-param>)

2) ????? 容器為這個 servlet 創(chuàng)建 (new) 一個新的 ServletConfig 實例

3) ????? 容器為這個 servlet 初始化參數(shù)創(chuàng)建一個 String / 值對

4) ????? 容器向 ServletConfig 提供名 / 值初始化參數(shù)的引用

5) ????? 容器創(chuàng)建 (new)serlvet 類的實例

6) ????? 容器調(diào)用 servlet init() 方法,傳入 ServletConfig 的引用

容器初始化一個 servlet 時,會為這個 servlet 創(chuàng)建一個唯一的 ServletConfig ,容器從 DD 中讀出 servlet 初始化參數(shù),并把這些參數(shù)交給 ServletConfig ,然后把 ServletConfig 傳遞給 servlet init() 方法。

初始化參數(shù):在 web.xml 配置文件中的 <servlet> 標(biāo)簽中

??? ? ???????????? < init-param >

??? ????????????????? < param-name > adminEmail </ param-name >

??? ????????????????? < param-value > zzq_rj@163.com </ param-value >

??? ??? </ init-param >

?????? servlet 中調(diào)用: getServletConfig().getInitParameter(“adminEmail”);

b) ????? ServletContext 對象

每個 Web 應(yīng)用才有一個 ServletContext ,用于訪問 Web 應(yīng)用參數(shù)。 Web 應(yīng)用中的各個 servlet JSP 都能訪問 ServletContext

初始化參數(shù):在 web.xml 配置文件中的 <web-app> 標(biāo)簽中 <servlet> 標(biāo)簽外

????????????????? < context-param >

? ??????????????????? < param-name > contextname1 </ param-name >

? ??????????????????? < param-value > contextvalue1 </ param-value >

? ????????? </ context-param >

servlet 中調(diào)用: getServletContext().getInitParameter(“adminEmail”);

?????????? 或者 ? ServletContext context=getServletContext();

????????????? ? context.getInitParameter(“adminEmail”);

JSP 中調(diào)用:

?

15. ??? 使用響應(yīng)

通常,使用響應(yīng)只是向客戶發(fā)回數(shù)據(jù),會調(diào)用兩個方法: setContentType() getWriter() 。當(dāng)然,還可以使用響應(yīng)設(shè)置其它首部、發(fā)送錯誤以及增加 cookie

response.setContentType(“application/jar”);

完成 I/O

ServletContext ctx=getServletContext();

InputStream is=ctx.getResourceAsStream(“/book.jar”);// 必須以“ / ”開頭,表示 Web 應(yīng)用的根。

兩種輸出方式

字符形式: PrintWriter writer=response.getWriter();

?????? ? writer.println(“some text and HTML”);

字節(jié)流形式: ServletOutputStream out=response.getOutputStream();

?????????? ? out.write(aByteArray);

下一頁>> ?

JSP Servlet基礎(chǔ)知識(一)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論