久久久久综合给合狠狠狠,人人干人人模,大陆一级黄色毛片免费在线观看,亚洲人人视频,欧美在线观看一区二区,国产成人啪精品午夜在线观看,午夜免费体验

薈聚奇文、博采眾長、見賢思齊
當前位置:公文素材庫 > 計劃總結 > 工作總結 > Java Web總結

Java Web總結

網(wǎng)站:公文素材庫 | 時間:2019-05-28 03:19:14 | 移動端:Java Web總結

Java Web總結

JavaWeb

Web訪問原理客戶

1輸入網(wǎng)址5頁面內(nèi)容HTTP超文本協(xié)議2發(fā)出請求客戶端瀏覽器4返回結果服務器3處理請求瀏覽器只能讀取Html文本所以服務器返回的只是Html服務器動態(tài)生成Html頁面服務器工作原理

服務器產(chǎn)生動態(tài)頁面的方法和技術:

實現(xiàn)動態(tài)輸出HTML頁面時由運行在服務端的CGI程序產(chǎn)生的,CGI根據(jù)不同客戶的請求輸出相應的HTML頁面,然后Web服務器在把這個靜態(tài)頁面返回哥瀏覽器作為客戶端的響應。

CGI的操作過程

服輸出生成Html

務頁面

請求運行某

個CGI程序

CGI程序(生成所需的

Html文件)數(shù)據(jù)庫讀取數(shù)據(jù)和文件注意:CGI程序在服務器執(zhí)行,并可以和Web服務器在同一個主機上。CGI可以訪問存儲數(shù)據(jù)庫中的數(shù)據(jù)和其他系統(tǒng)中的文件。

CGI的不足:

需要為每個請求都啟動一個操作CGI的系統(tǒng)進程,開銷很大。需要重復編寫出來網(wǎng)絡歇息的代碼及進行編碼,非常耗時。

JavaServlet

JavaServlet改進的CGI

思想:CGI程序為每個請求都運行一個CGI程序的系統(tǒng)進程開銷很大,Servlet技術只需要啟動一次服務進程而且只需加載一次JVM,之后這個JVM在加載另外的類。好處:

只需啟動一個操縱系統(tǒng)進程以及加載一個JVM,大大降低了系統(tǒng)的開銷如果有多個請求需要做同樣的處理的時候,這時只需加載一個類。所有動態(tài)加載的類可以實現(xiàn)對網(wǎng)絡協(xié)議以及請求解碼的代碼共享

Servlet能夠直接額Web服務器交互,能夠各個程序之間共享數(shù)據(jù),數(shù)據(jù)庫連接池之類

的功能很容易實現(xiàn)

Servlet類重復使用PrintWriter.println();方法來輸出相應的HTML頁面,以達到動態(tài)生成HTML頁面的效果。

注意:所有的JavaWeb服務器都應該遵守JavaServletAPI(運用程序接口)的編碼標準。Servlet的缺點:

Servlet生成網(wǎng)頁的方法是在Java類中嵌入HTML標簽和表達式,所以修改起來很麻煩。

JSP基本原理

JSP:Servlet的模板

JavaServerPages(JSP)是一種實現(xiàn)靜態(tài)HTML和動態(tài)HTML混合編碼的技術,是ServletAPI的一個擴展。

JavaBean返回的數(shù)據(jù)JSP頁面訪問原理

服務器端

瀏覽器請求調(diào)用某個JavaBean組件讀取數(shù)據(jù)庫和文件JavaBean(基于Java組件)返回HTML頁面數(shù)據(jù)庫服務器存儲的JSP文件(后綴.jsp)相應請求JSP基本原理:Web容器出來JSP文件步驟翻譯階段編譯階段請求處理階段會話會話請求會話翻譯轉換JavaServlet實現(xiàn)代碼(.java)編譯JavaServlet實現(xiàn)類(.class):二進制文件激活請求準備JavaServlet實現(xiàn)對象Java編譯工具Java編譯工具JSP容器響應翻譯階段:JSP文件首先被Web容器中的JSP引擎轉換成Java源代碼也是就是通過Servlet引擎

編譯階段:JSP文件所翻譯成的Java源代碼會被翻譯成可執(zhí)行的二進制文件

請求階段:當容器接受了客戶端的請求后,就執(zhí)行前面已經(jīng)編譯成的二進制的JSP文

件,容器吧生成的頁面反饋給客戶進行顯示。

注意:一旦容器把JSP文件翻譯和編譯之后來自客戶端的每一個JSP請求就可以重用這個編譯好的二進制文件,沒有必要把同一個JSP進行翻譯和編譯。也就是說如果一個JSP文件是第一次請求要經(jīng)歷上述三個階段,如果一個JSP文件之前已經(jīng)就被請求過就沒必要經(jīng)歷翻譯和編譯階段,直接使用編譯好的二進制文件。

擴展閱讀:Java Web總結

JavaWeb總結

1.Web工作原理..........................................................................................................................2

1.1.HTTP處理步驟............................................................................................................21.2.HTTP請求的組成........................................................................................................21.3.HTTP響應的組成........................................................................................................31.4.理解HTTP無狀態(tài)協(xié)議...............................................................................................31.5.CGI與Servlet..............................................................................................................31.6.Servlet的主要任務......................................................................................................41.7.Web容器......................................................................................................................41.8.JavaWeb應用程序的組成...........................................................................................42.Servlet基礎.............................................................................................................................4

2.1.Servlet框架的組成......................................................................................................42.2.Servlet編碼和部署......................................................................................................52.3.ServletURL映射路徑.................................................................................................52.4.Servlet生命周期.........................................................................................................62.5.ServletConfig與ServletContext................................................................................63.HTTP請求................................................................................................................................8

3.1.Servlet與Web容器配合處理請求和響應.................................................................83.2.GET與POST提交方式的區(qū)別..................................................................................83.3.獲取HTTP協(xié)議請求行...............................................................................................83.4.獲取HTTP協(xié)議請求頭...............................................................................................93.5.獲取表單數(shù)據(jù)...............................................................................................................93.6.請求轉發(fā).......................................................................................................................93.7.請求范圍對象綁定.......................................................................................................94.HTTP響應................................................................................................................................9

4.1.HTTP狀態(tài)行................................................................................................................94.2.設置響應頭.................................................................................................................104.3.設置響應消息體.........................................................................................................104.4.傳輸數(shù)據(jù).....................................................................................................................10

4.4.1.傳輸文本數(shù)據(jù).................................................................................................104.4.2.傳輸二進數(shù)據(jù).................................................................................................104.4.3.請求重定向.....................................................................................................10

5.Web應用程序狀態(tài)管理........................................................................................................11

5.1.Cookie.........................................................................................................................115.2.Session........................................................................................................................115.3.URL重寫....................................................................................................................126.對象作用域與Servlet事件監(jiān)聽器.......................................................................................13

6.1.對象作用域.................................................................................................................136.2.監(jiān)聽器.........................................................................................................................137.過濾器.....................................................................................................................................158.JSP...........................................................................................................................................JSP運行機制:..........................................................................................................16JSP語法和語義..........................................................................................................168.2.1.JSP腳本元素..................................................................................................168.2.2.JSP注釋..........................................................................................................178.2.3.JSP指令..........................................................................................................178.2.4.JSP標準動作..................................................................................................178.2.5.JSP隱式對象..................................................................................................17

9.JavaWeb開發(fā)模式................................................................................................................18

9.1.MVC模型...................................................................................................................18

9.1.1.視圖.................................................................................................................189.1.2.模型.................................................................................................................189.1.3.控制器.............................................................................................................189.2.MVC實現(xiàn)步驟...........................................................................................................1910.JSTL與EL表達式......................................................................................................19

10.1.EL表達式解釋.......................................................................................................1910.2.在EL表達式中的隱式變量..................................................................................19

8.1.8.2.

1.Web工作原理

1.1.HTTP處理步驟

創(chuàng)建與服務器的連接發(fā)送HTTP請求

接收客戶端HTTP請求,生成HTTP響應回發(fā)關閉與服務器的連接

1.2.HTTP請求的組成

請求行請求頭空行消息體

1.3.HTTP響應的組成

狀態(tài)行響應頭空行消息體

1.4.理解HTTP無狀態(tài)協(xié)議

主要是說,客戶機的狀態(tài),服務器是不知道的。比如說,用戶關掉瀏覽器,服務器無法得知。只能向客戶端提供靜態(tài)網(wǎng)頁內(nèi)容

1.5.CGI與Servlet

CGI:即通用網(wǎng)關接口(CommonGatewayInterface),它可以用Shell、Perl、C、PHP、Python等編寫。每次請求就打開一個CGI進程,嚴重消耗服務器資源。極大地限制了一個服務器可以支持的并發(fā)CGI用戶數(shù)量,但是安全性高。

Servlet:Servlet與Web容器被設計用來解決CGI的問題,JavaServlet的優(yōu)點在于它們的執(zhí)行速度更快于CGI程序。各個用戶請求被激活成單個程序中的一個線程,而無需創(chuàng)建單獨的進程,這意味著服務器端處理請求的系統(tǒng)開銷將明顯降低。Servlet運行在一個主進程或者一個父程序中,這就是為什么Servlet更高效的關鍵原因。

1.6.Servlet的主要任務

讀取客戶端發(fā)送的顯式和隱式數(shù)據(jù)生成結果

向客戶端發(fā)送顯式數(shù)據(jù)(即文檔)和隱式數(shù)據(jù)(HTTP響應數(shù)據(jù))

1.7.Web容器

Web容器負責管理和運行Servlet,容器對Servlet的支持包括:通信支持生命周期管理多線程支持JSP支持處理安全性

1.7.1.1.1.7.1.2.1.7.1.3.1.7.1.4.1.7.1.5.

1.8.JavaWeb應用程序的組成

配置文件、靜態(tài)HTML文件和JSP、類文件和包。

2.Servlet基礎

2.1.Servlet框架的組成

Servlet框架的核心是:javax.servlet.Servlet接口,所有的Servlet都必須實現(xiàn)這一接口。Servlet框架是由2個Java包組成:javax.servlet和javax.servlet.httpjavax.servlet包中定義了所有Servlet類都必須實現(xiàn)的接口和類。javax.servlet包的接口為:

ServletConfig接口----在初始化過程中由Servlet容器使用ServletContext接口----定義Servlet用于獲取容器信息的方法ServletRequest接口----向服務器請求信息ServletResponse接口----響應客戶端請求

Servlet接口----定義所有Servlet必須實現(xiàn)的方法javax.servlet包中的類為:

ServletInputStream類----用于從客戶端讀取二進制數(shù)據(jù)ServletOutputStream類----用于將二進制數(shù)據(jù)發(fā)送到客戶端

GenericServlet類----抽象類,定義一個通用的,獨立于底層協(xié)議的Servlet。javax.servlet.http包中定義了采用HTTP通信的HttpServlet類。

javax.servlet.http包的接口為:

HttpServletRequest接口----提供http請求HttpServletResponse接口----提供http響應

HttpSession接口----用于標識客戶端并存儲有關客戶信息

HttpSessionAttributeListener接口----實現(xiàn)這個偵聽接口用戶獲取會話的屬性列表的改變的通知

javax.servlet.http包中的類:

HttpServlet類----擴展了GenericServlet的抽象類,用于擴展創(chuàng)建HttpServlet處理Http請求

Cookie類----創(chuàng)建一個Cookie,用于存儲Servlet發(fā)送給客戶端的信息

注意javax.servlet包和javax.servlet.http包的區(qū)別,javax.servlet.http這個包里的類都去實現(xiàn)了javax.servlet包里的接口,用于專門用于HTTP協(xié)議。

2.2.Servlet編碼和部署

Servlet體系結構:Servlet-->GenericServlet-->HttpServlet-->用戶自定義的Servlet

2.2.1.1.用戶自定義的Servlet繼承HttpServlet,重寫一下方法中的一個:doGet()和doPost()2.2.1.2.在容器中注冊Servlet,配置web.xml,在web.xml文件中加入

Hello

com.lovo.servlet.Hello

2.2.1.3.映射虛擬路徑,同樣是通過配置web.xml,在web.xml文件中加入

Hello/Hello

2.3.ServletURL映射路徑

2.3.1.1.精確模式匹配。這種類型的模式用于將請求一對一映射到指定的Servlet。

2.3.1.2.擴展名匹配“*.擴展名”。在這種情況下,所有以指定擴展名結尾的URL都轉向指

定的Servlet。2.3.1.3.路徑映射。路徑映射必須以"/"開始,以"/*"結尾,在這之間可以出現(xiàn)任意字符。路徑

匹配通常用于將對某個目錄的所有請求轉向一個指定的Servlet。

2.3.1.4.默認的Servlet,"/"。默認的Servlet映射用于定義一個在沒有給出路徑信息時請求

轉向的Servlet。

2.4.Servlet生命周期

Servlet的生命周期由Servlet容器控制,該容器創(chuàng)建Servlet的實例。

Servlet生命周期就是指創(chuàng)建Servlet實例后響應客戶請求直至銷毀的全過程。Serlvet生命周期的三個方法:init()-->service()-->destroy()Servlet生命周期:

實例化:Servlet容器創(chuàng)建Servlet類的實例對象,有兩種方式,一種是容器檢測到需要這個Servlet來響應第一個請求時,創(chuàng)建Servlet實例。另一種是容器啟動時創(chuàng)建Servlet實例,1,數(shù)字越小啟動順序越靠前。

初始化:Servlet容器調(diào)用Servlet的init()方法

服務:容器調(diào)用service()方法,根據(jù)請求的方式,調(diào)用doGet或者doPost方法銷毀:銷毀實例之前調(diào)用destroy()方法

2.5.

ServletConfig與ServletContext

2.5.1.ServletConfig與ServletContext的關系

一個Servlet對應一個ServletConfig,也就是說容器加載了多少個Servlet就有多少個ServletConfig。而ServletContext是在容器啟動時創(chuàng)建,一個Web應用一個ServletContext,可以把ServletContext看成是一個全局變量,所有的Servlet共享。

2.5.2.ServletContext應用上下文

屬于整個Web應用程序,可以訪問到Web應用程序資源的本地輸入流,把資源的虛擬路徑轉換為物理路徑,綁定一個對象在整個Web應用程序中共享。常用的方法有:

getRealPath():返回一個web資源的真實路徑

getResourcePaths(path):返回一個指定路徑下的所有資源列表getResourceAsStream(path):返回一個資源的InputStreamgetResource(path):返回一個web資源的URL地址setAttribute(name,value):保存一個共享數(shù)據(jù)getAttribute(name):提取共享數(shù)據(jù)

2.5.3.ServletConfig

通過重寫有參數(shù)的init(ServletConfigconfig)方法獲取到ServletConfig對象,通過config.getInitParameter("driver")方法獲取到web.xml里相對應的配置信息。

publicvoidinit(ServletConfigconfig)throwsServletException{

}

Hello

com.lovo.servlet.Hello

driver

//TODOAuto-generatedmethodstubconfig.getInitParameter("driver");super.init(config);Hello:com.mysql.driver.Driver

3.HTTP請求

3.1.Servlet與Web容器配合處理請求和響應

3.1.1.客戶端向Web服務器發(fā)起一個HTTP請求。3.1.2.HTTP請求被Web服務器接受,如果請求的是靜態(tài)頁面,則由Web服務器負責處理。

如果請求的是JavaWeb組件(Servlet或者JSP),則移交給Web容器。Web容器可以在主機的同一個進程、不同的進程或其他的Web服務主機的進程中啟動。

3.1.3.Web容器根據(jù)Servlet的配置文件確定調(diào)用的具體Servlet類,并把HttpServletRequest

對象、HttpServletResponse對象傳給它。

3.1.4.Servlet通過HttpServletRequest對象知道客戶端的使用者是誰,客戶的請求信息是什

么和其他的一些信息。Servlet處理完請求后把要返回的信息放入HttpServletResponse對象返回到客戶端。

3.1.5.一旦Servlet完成了請求的處理,Web容器就會刷新HttpServletResponse,把控制權

返回給web服務器。

由此可見,每一次請求容器都會創(chuàng)建去創(chuàng)建HttpServletRequest對象與HttpServletResponse

3.2.GET與POST提交方式的區(qū)別

GET方式只能提交文本數(shù)據(jù),POST即可以提交文本數(shù)據(jù)也可以提交二進制數(shù)據(jù)。GET方式一次只能提交1024個字節(jié),而POST沒有限制。

安全性問題。使用GET的時候,參數(shù)會顯示在地址欄上,而POST不會。所以,如果這些數(shù)據(jù)是中文數(shù)據(jù)而且是非敏感數(shù)據(jù),那么使用GET,如果用戶輸入的數(shù)據(jù)不是中文字符而且包含敏感數(shù)據(jù),那么還是使用POST為好。

3.3.獲取HTTP協(xié)議請求行

3.3.1.getMethod():獲取HTTP的請求方法,例如GET、POST等3.3.2.getRequestURI():獲取請求的URI資源

3.3.3.getRequestURL():獲取請求的URL,包含協(xié)議名、服務器名或IP、端口號和請求資

源但不包括查詢字符串參數(shù)

3.3.4.getQueryString():獲取請求URL后面的查詢字符串3.3.5.getProtocol():獲取HTTP的協(xié)議名和版本號

3.3.6.getContextPath():獲取請求URI資源的上下文路徑3.3.7.getServletPath():獲取Servlet的映射路徑3.4.獲取HTTP協(xié)議請求頭

1.2.3.4.5.

getHeader(name):返回指定的請求頭的值

getHeaders(name):返回一個Enumeration(枚舉)包含請求頭中的所有值getHeaderNames():特定請求中接受到的所有請求頭的名稱

getIntHeader(name):獲取特定請求頭的值,并將其轉化為int類型

getDateHeader(name):獲取特定請求頭的值,并將其轉化為Date類型

3.5.獲取表單數(shù)據(jù)

1.getParameter(parameterName):獲取表單參數(shù)的值,參數(shù)名區(qū)分大小寫,與

HTML表單中出現(xiàn)的參數(shù)名一致,GET請求還是POST請求都可以采用相同的方式

2.getParameterValues(parameterName):獲取同一個參數(shù)名的多個參數(shù)值,返回字

符串數(shù)組對象

3.getParameterNames():以Enumeration(枚舉)的方式返回請求中所有的表單

參數(shù)名列表

3.6.請求轉發(fā)

請求轉發(fā)是客戶端向服務器發(fā)送請求后,服務器將這一次請求又交給了另一個Servlet。由另一個servlet來作出響應。請求轉發(fā)只有一次請求。

1.getRequestDispatcher(path):方法返回給定路徑的RequestDispatcher對象2.getNamedDispatcher(name):返回某個名稱的Servlet的RequestDispatcher對

3.forward(ServletRequest,ServletResponse):派發(fā)請求和響應對象到

RequestDispatcher對象所確定的新資源(Servlet、JSP或者HTML等)4.include(ServletRequest,ServletResponse)該方法關鍵是能包含服務器端的資源

3.7.請求范圍對象綁定

變量可以可以通過request.setAttribute("value",param)將對象保存在請求范圍中,可以通過request.getAttribute("value")獲取在請求范圍內(nèi)所綁定的相應的對象但是在請求范圍之外就不能進行訪問了。結合請求轉發(fā)理解。

4.HTTP響應

4.1.HTTP狀態(tài)行

狀態(tài)行分為HTTP協(xié)議、狀態(tài)碼和狀態(tài)描述三個部分100-199:表示信息性代碼,標示客戶端應該采取的其他動作,請求正在進行。200-299:表示客戶請求成功。

300-399:表示用于已經(jīng)移走的資源文件,指示新的地址。400-499:表示由客戶端引發(fā)的錯誤。500-599:表示由服務器端引發(fā)的錯誤。

瀏覽器會根據(jù)以上的狀態(tài)碼作出相應的處理。

通過response.setStatus(HttpServletResponse.SC_NOT_FOUND),設置響應的響應碼,注意使用HttpServletResponse的常量進行設置。

4.2.設置響應頭

1.2.3.4.5.6.7.

setHeader()addHeader()setIntHeader()setDateHeader()containsHeader()setContentType()addCookie()

4.3.設置響應消息體

response.setContentType("image/gif");方法可以處理亂碼和顯示其他形式的內(nèi)容例如把內(nèi)容以其它的形式顯示出來(如:圖片、Excel等)

4.4.傳輸數(shù)據(jù)4.4.1.傳輸文本數(shù)據(jù)

利用PrintWriterout=response.getWriter()獲取一個字符輸出流傳輸文本out.println("HelloWorld");

4.4.2.傳輸二進數(shù)據(jù)

利用OutputStringout=getOutputStream()獲取一個字節(jié)輸出流傳輸二進制數(shù)據(jù)our.write(byte[]b);

4.4.3.請求重定向

response.sendRedirect(":3030/bbs/main.html");與請求傳發(fā)不同,重定向是先對客戶端作出響應,響應碼為302或者307,瀏覽器再根據(jù)重定向的路徑再發(fā)起一次新的請求。(結合請求轉發(fā)理解)5.Web應用程序狀態(tài)管理

對容器而言,每一個請求都來自于一個新的客戶,我們可以利用Cookie、Session、以及URL重寫讓服務器知道,這一系列的請求都是同一個用戶的行為。

5.1.Cookie

服務器在響應請求時將一些數(shù)據(jù)以“鍵-值”對的形式通過響應信息保存在客戶端。Cookiecookie=newCookie("cookie","tiger!");response.addCookie(cookie);

Servlet中提供了如下一系列操作Cookie的API:

1.Cookie(name,value):構造方法用于創(chuàng)建一個或多個Cookie

2.setMaxAge(intlifetime):設置Cookie的過期時間(以秒為單位)。默認值為負

值(Cookie將在瀏覽器關閉時過期)3.getMaxAge():獲取Cookie的過期時間。

4.setName(StringcookieName):設置Cookie的名字5.getName():獲取Cookie的名字

6.setValue(Stringvalue):指定Cookie的值。7.getValue():獲取Cookie的值

5.2.Session

服務器可以為客戶端創(chuàng)建并維護一個Session對象,用于存放數(shù)據(jù)。在創(chuàng)建Session對象的同時,服務器將會為該Session對象產(chǎn)生一個唯一編號,這個編號稱之為SessionID,服務器以Cookie的方式將SessionID存放在客戶端。當瀏覽器再次訪問該服務器時,會將SessionID作為Cookie信息帶到服務器,服務器可以通過該SessionID檢索到以前的Session對象,并對其進行訪問。

HttpSessionsession=request.getSession(),容器在第一次調(diào)用getSession()方法的時候創(chuàng)建Session對象將Session對象存放于容器內(nèi),直到Session過期。另外還可以通過isNew()方法來判斷是不是第一次創(chuàng)建Session

HttpSession接口常用的一些方法:

1.setAttribute(java.lang.String,java.lang.Object):在Session對象中用一個名字綁

定一個對象。

2.getAttribute(java.lang.String):通過名字獲取Session對象中保存的對象。3.removeAttribute(java.lang.String):在Session中刪除與一個名字對應的對象。4.getCreationTime():返回第一次創(chuàng)建會話的時間。

5.getLastAccessedTime():返回容器最后一次得到該會話ID的請求時間。

6.setMaxInactiveInterval(intinterval):對于會話指定客戶請求的最大間隔時間,

以秒為單位。-1表示永不過期

7.getMaxInactiveInterval(intinterval):返回客戶請求的最大間隔時間。

8.invalidate():會話結束,當前存在在會話中的所有會話屬性也會解除綁定。9.getId():此方法返回每個session唯一的標識

Session的過期時間設置,通過在web.xml里進行配置,單位是分鐘,如果不進行配置默認的過期時間由容器決定,比如Tomcat默認的過期時間為30分鐘。

15

5.3.URL重寫

Session對象的正常使用要依賴于Cookie,如果用戶禁用Cookie,則瀏覽器無法再將SessionID發(fā)送至服務器,這時候服務器就無法通過SessionID檢索到以前的Session對象,并對其進行訪問了。為了解決這個問題可以利用URL地址重寫能夠取得置于Cookie中的會話,并把會話ID附加到訪問應用的各個URL最后。response.encodeURL(“/bbs/index.html”)用于鏈接

response.encodeRedirectURL(“/bbs/index.html”)用于重定向

6.對象作用域與Servlet事件監(jiān)聽器

6.1.對象作用域

在Servlet里可以用一個名字綁定一個對象通過setAttribute(String,Object)綁定,通過getAttribute(Sting)獲取一個所綁定的對象。ServletContext對象、HttpSession對象、ServletRequest對象都有這兩個方法。

ServletContext(上下文)整個Web應用程序HttpSession(會話)一個會話交互過程ServletRequest(請求)一次請求過程范圍越大所消耗的系統(tǒng)資源就越多。并且他們都不是線程安全的,存在一定的安全隱患。

6.2.監(jiān)聽器

監(jiān)聽session,request,application這三個對象里存取數(shù)據(jù)的變化,監(jiān)聽器對象可以在事情發(fā)生前、發(fā)生后可以做一些必要的處理,Servlet監(jiān)聽器主要目的是給Web應用增加事件處理機制,以便更好地監(jiān)視和控制Web應用的狀態(tài)變化事件類型生命周期ServletContext事件屬性改變生命周期會話遷移HttpSession事件屬性改變對象綁定生命周期ServletRequest事件屬性改變描述Listener接口Servlet上下文剛被創(chuàng)建并可以開始為第一次請求服務,或者Servlet上下文將要ServletContextListener被關閉發(fā)生的事件Servlet上下文內(nèi)的屬性被增加、刪除或者替換時發(fā)生的事件HttpSession被創(chuàng)建、無效或超時時發(fā)生HttpSession被激活或鈍化時發(fā)生在HttpSession中的屬性被增加、刪除、替換時發(fā)生對象被綁定到或者移出HttpSession時發(fā)生。在Servletr請求開始被Web組件處理時發(fā)生在ServletRequest對象中的屬性被增加、刪除、替換時發(fā)生ServletRequestListenerServletRequestAttributeListenerHttpSessionAttributeListenerHttpSessionBindingListenerServletContextAttributeListenerHttpSessionListenerHttpSessionActivationListener7.過濾器

一個中間組件,用于攔截源數(shù)據(jù)和目的數(shù)據(jù)之間的消息,過濾二者之間傳遞的數(shù)據(jù),過濾從客戶端傳遞到服務器端的請求和響應。

過濾器可以組成一個過濾器鏈。鏈中的每個過濾器負責特定的操作和任務,客戶端的請求和響應在這些過濾器之間傳遞。

8.JSP

Servlet的缺陷:編碼、部署和調(diào)試任務繁瑣,生成動態(tài)網(wǎng)頁繁瑣,不利于項目分工,采用JSP技術編寫動態(tài)頁面就能,由HTML語句和嵌套在其中的Java代碼組成的一個普通文本文件。JSP頁面的擴展名必須為.jsp,部署在Web工程的根目錄下,Web容器第一次接收到對某個JSP頁面的請求后,首先自動將該JSP頁面翻譯為Servlet代碼,Tomcat將翻譯后的代碼放在Tomcat安裝目錄的/work子目錄下,也可以說所有JSP頁面本質(zhì)上就是Serlvet程序,但是不需要配置web.xml,所見即所得,很好的彌補了上述中Servlet的缺陷。

8.1.JSP運行機制:

1.頁面翻譯2.頁面編譯3.類裝載4.實例化

5.初始化方法是jspInit()6.服務方法是_jspService()7.銷毀方法是jspDestroy()

JSP生命周期完全遵循Servlet生命周期從15步只會在JSP頁面第一次訪問的時候才執(zhí)行被實例化后就像Servlet一樣一直存在于容器中了。

8.2.JSP語法和語義

JSP網(wǎng)頁主要由元素(Element)和模板數(shù)據(jù)(TemplateData)兩個部分組成,模板數(shù)據(jù)是JSP的靜態(tài)部分WEB容器不處理,元素則是必須經(jīng)由WEB容器解釋,元素都是以XML做為語法基礎,并且大小寫要一致

8.2.1.JSP腳本元素

聲明定義變量或者方法。在聲明部分出現(xiàn)的語句,JSP在被編譯成java文件后聲明部分為成為這個java當中的成員變量或者方法

Scriplet在Scriplet部分出現(xiàn)的語句,JSP在被編譯成java文件后Scriplet部分的代碼會被置放于_jspService()方法內(nèi)部

腳本表達式等同于out.println();8.2.2.JSP注釋

1.JSP注釋,其語法結構為:2.HTML注釋:3.Java代碼注釋

8.2.3.JSP指令

提供整個JSP頁面的相關信息,用于JSP頁面與容器之間的通信,在JSP中,有三種類型的指令:

1.page指令為當前頁面提供處理指令

2.include指令用于把另一個文件包含在JSP中3.taglib指令指定如何包含和訪問自定義標簽庫

8.2.4.JSP標準動作

1.動作是一種動態(tài)的包含

2.動作將客戶端所發(fā)出來的請求,從一個JSP網(wǎng)頁轉發(fā)到另一個

JSP頁面

3.得到或者創(chuàng)建一個JavaBean對象

8.2.5.JSP隱式對象

對象名requestresponse描述代表與請求相關的HttpServletRequest對象代表與響應相關的HttpServletResponse對象作用域requestpagepagesessionapplicationpagepagepagepagepageContext代表封裝請求某個JSP頁面時請求環(huán)境的pageContext對象session代表特定用戶請求會話的HttpSession對象。該對象只有在JSP頁面參與一個HTTP會話時才有意義application代表Web應用程序的ServletContext對象outconfigpage代表與響應輸出流相關的JspWriter對象代表JSP頁面的Servlet相關的ServletConfig對象等于Java編程語言中的this變量exception代表JSP頁面拋出的Trowable對象。這個對象只能在JSP錯誤頁面中使用9.JavaWeb開發(fā)模式

9.1.MVC模型

9.1.1.視圖

視圖是用戶看到并與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術已層出不窮,它們包括MacromediaFlash和象XHTML,XML/XSL,WML等一些標識語言和Webservices.

如何處理應用程序的界面變得越來越有挑戰(zhàn)性。MVC一個大的好處是它能為你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。

9.1.2.模型

模型表示企業(yè)數(shù)據(jù)和業(yè)務規(guī)則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用象EJBs和ColdFusionComponents這樣的構件對象來處理數(shù)據(jù)庫。被模型返回的數(shù)據(jù)是中立的,就是說模型與數(shù)據(jù)格式無關,這樣一個模型能為多個視圖提供數(shù)據(jù)。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。

9.1.3.控制器

控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發(fā)送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調(diào)用哪個模型構件去處理請求,然后用確定用哪個視圖來顯示模型處理返回的數(shù)據(jù)。

現(xiàn)在我們總結MVC的處理過程,首先控制器接收用戶的請求,并決定應該調(diào)用哪個模型來進行處理,然后模型用業(yè)務邏輯來處理用戶的請求并返回數(shù)據(jù),最后控制器用相應的視圖格式化模型返回的數(shù)據(jù),并通過表示層呈現(xiàn)給用戶。

三層架構即“表現(xiàn)層”,“業(yè)務層”,“持久化層”。表現(xiàn)層實現(xiàn)的代表作品是Struts框架,業(yè)務層實現(xiàn)的代表作品是Spring,持久層實現(xiàn)的代表作品是Hibernate。

9.2.MVC實現(xiàn)步驟

1.2.3.4.5.6.

定義一系列Bean來表示數(shù)據(jù)使用一個Servlet來處理請求在Servlet中填充Bean

在Servlet中,將Bean存儲到請求、會話或者Servlet上下文中將請求轉發(fā)到JSP頁面

在JSP頁面中,從Bean中提取數(shù)據(jù)

10.JSTL與EL表達式

10.1.EL表達式解釋

${person.dog.name}這是一段EL表達式的語法,這樣的一句EL表達式如果翻譯成JAVA語句的話:

getAttribute(“person”).getDog().getName();

對應上面的EL表達式來看person就是從某個作用域中取出一個鍵的值是”person”的綁定的對象再調(diào)用綁定的對象的getDog()方法獲取到Dog對象,再調(diào)用獲取到的對象的getName方法獲取到name屬性的值

10.2.在EL表達式中的隱式變量

類別JSP作用域隱式變量名pageContextpageScoperequestScopesessionScopeapplicationScope描述用來訪問JSP的隱式對象與page作用域?qū)傩缘拿Q和值相關聯(lián)的Map類與request作用域?qū)傩缘拿Q和值相關聯(lián)的Map類與session作用域?qū)傩缘拿Q和值相關聯(lián)的Map類與application作用域?qū)傩缘拿Q和值相關聯(lián)的Map類請求參數(shù)paramparamValues包含請求參數(shù)字符串的Map類包含請求參數(shù)字符串數(shù)組(String[])的Map類包含請求頭字符串的Map類包含請求頭字符串數(shù)組(String[])的Map類按名稱存儲請求附帶的cookie的Map類請求頭headerheaderValuesCookie

cookie

友情提示:本文中關于《Java Web總結》給出的范例僅供您參考拓展思維使用,Java Web總結:該篇文章建議您自主創(chuàng)作。

來源:網(wǎng)絡整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權問題,請聯(lián)系我們及時刪除。


Java Web總結》由互聯(lián)網(wǎng)用戶整理提供,轉載分享請保留原作者信息,謝謝!
鏈接地址:http://m.weilaioem.com/gongwen/522668.html