Java Web面試題總結(jié)(servlet、jsp撒穷、jdbc)

1. Servlet的生命周期?

Servlet的生命周期:實(shí)例化匣椰、初始化、處理請求端礼、銷毀四個(gè)階段禽笑。
這個(gè)聲明周期由javax.servlet.Servlet接口的init(),service()和destroy方法表達(dá)。

Servlet被服務(wù)器實(shí)例化后蛤奥,容器運(yùn)行其init方法佳镜,請求到達(dá)時(shí)運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行與請求對應(yīng)的doXXX方法(doGet凡桥,doPost)等蟀伸,當(dāng)服務(wù)器決定將實(shí)例銷毀的時(shí)候調(diào)用其destroy方法。

web容器加載servlet,生命周期開始望蜡。通過調(diào)用servlet的init()方法進(jìn)行servlet的初始化唤崭。通過調(diào)用service()方法實(shí)現(xiàn),根據(jù)請求的不同調(diào)用不同的do***()方法脖律。結(jié)束服務(wù)谢肾,web容器調(diào)用servlet的destroy()方法。


2. Servlet 中forward()與redirect()的區(qū)別(轉(zhuǎn)發(fā)和重定向)

1)從地址欄顯示來說
forward是服務(wù)器請求資源,服務(wù)器直接訪問目標(biāo)地址的URL,把那個(gè)URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器.瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容從哪里來的,所以它的地址欄還是原來的地址.
redirect是服務(wù)端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請求那個(gè)地址.所以地址欄顯示的是新的URL.所以redirect等于客戶端向服務(wù)器端發(fā)出兩次request小泉,同時(shí)也接受兩次response芦疏。

2)從數(shù)據(jù)共享來說
forward:轉(zhuǎn)發(fā)頁面和轉(zhuǎn)發(fā)到的頁面可以共享request里面的數(shù)據(jù).
redirect:不能共享數(shù)據(jù).
redirect不僅可以重定向到當(dāng)前應(yīng)用程序的其他資源,還可以重定向到同一個(gè)站點(diǎn)上的其他應(yīng)用程序中的資源,甚至是使用絕對URL重定向到其他站點(diǎn)的資源.
forward方法只能在同一個(gè)Web應(yīng)用程序內(nèi)的資源之間轉(zhuǎn)發(fā)請求.forward 是服務(wù)器內(nèi)部的一種操作.
redirect 是服務(wù)器通知客戶端,讓客戶端重新發(fā)起請求。所以說 redirect 是一種間接的請求, 但是不能說"一個(gè)請求是屬于forward還是redirect "

3)
forward:一般用于用戶登陸的時(shí)候,根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊微姊。
redirect:一般用于用戶注銷登陸時(shí)返回主頁面和跳轉(zhuǎn)到其它的網(wǎng)站等.

4)從效率來說
forward:高.
redirect:低.


3. jsp靜態(tài)包含和動(dòng)態(tài)包含的區(qū)別

1)<%@include file="xxx.jsp"%>為jsp中的編譯指令酸茴,其文件的包含是發(fā)生在jsp向servlet轉(zhuǎn)換的時(shí)期,而<jsp:include page="xxx.jsp">是jsp中的動(dòng)作指令兢交,其文件的包含是發(fā)生在編譯時(shí)期薪捍,也就是將java文件編譯為class文件的時(shí)期。

2)使用靜態(tài)包含只會(huì)產(chǎn)生一個(gè)class文件配喳,而使用動(dòng)態(tài)包含會(huì)產(chǎn)生多個(gè)class文件酪穿。

3)使用靜態(tài)包含,包含頁面和被包含頁面的request對象為同一對象晴裹,因?yàn)殪o態(tài)包含只是將被包含的頁面的內(nèi)容復(fù)制到包含的頁面中去被济;而動(dòng)態(tài)包含包含頁面和被包含頁面不是同一個(gè)頁面,被包含的頁面的request對象可以取到的參數(shù)范圍要相對大些涧团,不僅可以取到傳遞到包含頁面的參數(shù)只磷,同樣也能取得在包含頁面向下傳遞的參數(shù)


4. jsp有哪些內(nèi)置對象?作用分別是什么?

JSP共有以下9個(gè)內(nèi)置的對象:
1)request 用戶端請求,此請求會(huì)包含來自GET/POST請求的參數(shù)
2)response 網(wǎng)頁傳回用戶端的回應(yīng)
3)pageContext 網(wǎng)頁的屬性是在這里管理
4)session 與請求有關(guān)的會(huì)話期
5)application servlet 正在執(zhí)行的內(nèi)容
6)out 用來傳送回應(yīng)的輸出
7)config servlet的構(gòu)架部件
8)page JSP網(wǎng)頁本身
9)exception 針對錯(cuò)誤網(wǎng)頁泌绣,未捕捉的例外


5. Http中钮追,get和post方法的區(qū)別

1)Get是向服務(wù)器發(fā)索取數(shù)據(jù)的一種請求,而Post是向服務(wù)器提交數(shù)據(jù)的一種請求
2)Get是獲取信息阿迈,而不是修改信息畏陕,類似數(shù)據(jù)庫查詢功能一樣,數(shù)據(jù)不會(huì)被修改
3)Get請求的參數(shù)會(huì)跟在url后進(jìn)行傳遞仿滔,請求的數(shù)據(jù)會(huì)附在URL之后,以?分割URL和傳輸數(shù)據(jù)犹芹,參數(shù)之間以&相連,%XX中的XX為該符號以16進(jìn)制表示的ASCII崎页,如果數(shù)據(jù)是英文字母/數(shù)字,原樣發(fā)送腰埂,如果是空格飒焦,轉(zhuǎn)換為+,如果是中文/其他字符,則直接把字符串用BASE64加密牺荠。
4)Get傳輸?shù)臄?shù)據(jù)有大小限制翁巍,因?yàn)镚ET是通過URL提交數(shù)據(jù),那么GET可提交的數(shù)據(jù)量就跟URL的長度有直接關(guān)系了休雌,不同的瀏覽器對URL的長度的限制是不同的灶壶。
5)GET請求的數(shù)據(jù)會(huì)被瀏覽器緩存起來,用戶名和密碼將明文出現(xiàn)在URL上杈曲,其他人可以查到歷史瀏覽記錄驰凛,數(shù)據(jù)不太安全。
6))POST表示可能修改變服務(wù)器上的資源的請求担扑,在服務(wù)器端恰响,用Post方式提交的數(shù)據(jù)只能用Request.Form來獲取。

注意:在服務(wù)器端涌献,用Request.QueryString來獲取Get方式提交來的數(shù)據(jù)胚宦;Post請求則作為http消息的實(shí)際內(nèi)容發(fā)送給web服務(wù)器,數(shù)據(jù)放置在HTML Header內(nèi)提交燕垃,Post沒有限制提交的數(shù)據(jù)枢劝。Post比Get安全,當(dāng)數(shù)據(jù)是中文或者不敏感的數(shù)據(jù)利术,則用get呈野,因?yàn)槭褂胓et,參數(shù)會(huì)顯示在地址印叁,對于敏感數(shù)據(jù)和不是中文字符的數(shù)據(jù)被冒,則用post。


6. 什么是cookie轮蜕?Session和cookie有什么區(qū)別昨悼?

Cookie是會(huì)話技術(shù),將用戶的信息保存到瀏覽器的對象.

區(qū)別:
1)cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上
2)cookie不是很安全跃洛,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙,如果主要考慮到安全應(yīng)當(dāng)使用session
3)session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上率触。當(dāng)訪問增多,會(huì)比較占用你服務(wù)器的性能汇竭,如果主要考慮到減輕服務(wù)器性能方面葱蝗,應(yīng)當(dāng)使用COOKIE
4)單個(gè)cookie在客戶端的大小和個(gè)數(shù)都有限制,不同瀏覽器可能有具體差異


image.png

總之细燎,在進(jìn)行頁面cookie操作的時(shí)候两曼,應(yīng)該盡量保證cookie個(gè)數(shù)小于20個(gè),總大小 小于4KB

注意:將登陸信息等重要信息存放為SESSION;其他信息如果需要保留玻驻,可以放在COOKIE中悼凑。


7. jsp和servlet的區(qū)別、共同點(diǎn)、各自應(yīng)用的范圍户辫?

JSP是Servlet技術(shù)的擴(kuò)展渐夸,本質(zhì)上就是Servlet的簡易方式。JSP編譯后是“類servlet”渔欢。
Servlet和JSP最主要的不同點(diǎn)在于:Servlet的應(yīng)用邏輯是在Java文件中墓塌,并且完全從表示層中的HTML里分離開來。而JSP的情況是Java和HTML可以組合成一個(gè)擴(kuò)展名為.jsp的文件膘茎。
JSP側(cè)重于視圖桃纯,Servlet主要用于控制邏輯。


8. tomcat容器是如何創(chuàng)建servlet類實(shí)例披坏?用到了什么原理态坦?

當(dāng)容器啟動(dòng)時(shí),會(huì)讀取在webapps目錄下所有的web應(yīng)用中的web.xml文件棒拂,然后對xml文件進(jìn)行解析伞梯,并讀取servlet注冊信息。然后帚屉,將每個(gè)應(yīng)用中注冊的servlet類都進(jìn)行加載谜诫,并通過反射的方式實(shí)例化。(有時(shí)候也是在第一次請求時(shí)實(shí)例化)
在servlet注冊時(shí)加上<load-on-startup>1</load-on-startup>如果為正數(shù)攻旦,則在一開始就實(shí)例化喻旷,如果不寫或?yàn)樨?fù)數(shù),則第一次請求實(shí)例化牢屋。


9. JDBC訪問數(shù)據(jù)庫的基本步驟是什么且预?

1)加載驅(qū)動(dòng)
2)通過DriverManager對象獲取連接對象Connection
3)通過連接對象獲取會(huì)話
4)通過會(huì)話進(jìn)行數(shù)據(jù)的增刪改查,封裝對象
5)關(guān)閉資源


10. preparedStatement和Statement的區(qū)別

1)效率:預(yù)編譯會(huì)話比普通會(huì)話對象烙无,數(shù)據(jù)庫系統(tǒng)不會(huì)對相同的sql語句不會(huì)再次編譯
2)安全性:可以有效的避免sql注入攻擊锋谐,sql注入攻擊就是從客戶端輸入一些非法的特殊字符,而使服務(wù)器端在構(gòu)造sql語句的時(shí)候仍然能夠正確構(gòu)造截酷,從而收集程序和服務(wù)器的信息和數(shù)據(jù)涮拗。比如:

“select * from t_user where userName = ‘” + userName + “ ’ and password =’” + password + “’”

如果用戶名和密碼輸入的是’1’ or ‘1’=’1’ ; 則生產(chǎn)的sql語句是:

“select * from t_user where userName = ‘1’ or ‘1’ =’1’  and password =’1’  or ‘1’=’1’ 

這個(gè)語句中的where 部分沒有起到對數(shù)據(jù)篩選的作用。


11. 事務(wù)的概念迂苛,在JDBC編程中處理事務(wù)的步驟三热。

1)事務(wù)是作為單個(gè)邏輯工作單元執(zhí)行的一系列操作。
2)一個(gè)邏輯工作單元必須有四個(gè)屬性三幻,稱為原子性就漾、一致性、隔離性和持久性 (ACID) 屬性赌髓,只有這樣才能成為一個(gè)事務(wù)事務(wù)處理步驟:
3)conn.setAutoComit(false);設(shè)置提交方式為手工提交
4)conn.commit()提交事務(wù)
5)出現(xiàn)異常,回滾 conn.rollback();


12. JDBC的臟讀是什么?哪種數(shù)據(jù)庫隔離級別能防止臟讀锁蠕?

當(dāng)我們使用事務(wù)時(shí)夷野,有可能會(huì)出現(xiàn)這樣的情況,有一行數(shù)據(jù)剛更新荣倾,與此同時(shí)另一個(gè)查詢讀到了這個(gè)剛更新的值悯搔。這樣就導(dǎo)致了臟讀,因?yàn)楦碌臄?shù)據(jù)還沒有進(jìn)行持久化舌仍,更新這行數(shù)據(jù)的業(yè)務(wù)可能會(huì)進(jìn)行回滾妒貌,這樣這個(gè)數(shù)據(jù)就是無效的。數(shù)據(jù)庫的 TRANSACTIONREADCOMMITTED 铸豁,TRANSACTIONREPEATABLEREAD 和 TRANSACTION_SERIALIZABLE 隔離級別可以防止臟讀灌曙。


13. 什么是幻讀,哪種隔離級別可以防止幻讀节芥?

幻讀是指一個(gè)事務(wù)多次執(zhí)行一條查詢返回的卻是不同的值在刺。假設(shè)一個(gè)事務(wù)正根據(jù)某個(gè)條件進(jìn)行數(shù)據(jù)查詢,然后另一個(gè)事務(wù)插入了一行滿足這個(gè)查詢條件的數(shù)據(jù)头镊。之后這個(gè)事務(wù)再次執(zhí)行了這條查詢蚣驼,返回的結(jié)果集中會(huì)包含剛插入的那條新數(shù)據(jù)。這行新數(shù)據(jù)被稱為幻行相艇,而這種現(xiàn)象就叫做幻讀颖杏。
只有 TRANSACTION_SERIALIZABLE 隔離級別才能防止產(chǎn)生幻讀。


14. JDBC的 DriverManager是用來做什么的坛芽?

JDBC的DriverManager是一個(gè)工廠類留储,我們通過它來創(chuàng)建數(shù)據(jù)庫連接。當(dāng)JDBC的Driver類被加載進(jìn)來時(shí)靡馁,它會(huì)自己注冊到DriverManager類里面然后我們會(huì)把數(shù)據(jù)庫配置信息傳成DriverManager.getConnection()方法欲鹏,DriverManager會(huì)使用注冊到它里面的驅(qū)動(dòng)來獲取數(shù)據(jù)庫連接,并返回給調(diào)用的程序臭墨。


15. execute赔嚎,executeQuery,executeUpdate的區(qū)別是什么胧弛?

1)Statement的execute(String query)方法用來執(zhí)行任意的SQL查詢尤误,如果查詢的結(jié)果是一個(gè)ResultSet,這個(gè)方法就返回true结缚。如果結(jié)果不是ResultSet损晤,比如insert或者update查詢,它就會(huì)返回false红竭。我們可以通過它的getResultSet方法來獲取ResultSet尤勋,或者通過getUpdateCount()方法來獲取更新的記錄條數(shù)喘落。
2)Statement的executeQuery(String query)接口用來執(zhí)行select查詢,并且返回ResultSet最冰。即使查詢不到記錄返回的ResultSet也不會(huì)為null瘦棋。我們通常使用executeQuery來執(zhí)行查詢語句,這樣的話如果傳進(jìn)來的是insert或者update語句的話暖哨,它會(huì)拋出錯(cuò)誤信息為 “executeQuery method can not be used for update”的java.util.SQLException赌朋。 ,
3)Statement的executeUpdate(String query)方法用來執(zhí)行insert或者update/delete(DML)語句,或者 什么也不返回篇裁,對于DDL語句沛慢,返回值是int類型,如果是DML語句的話达布,它就是更新的條數(shù)团甲,如果是DDL的話,就返回0往枣。
只有當(dāng)你不確定是什么語句的時(shí)候才應(yīng)該使用execute()方法伐庭,否則應(yīng)該使用executeQuery或者executeUpdate方法。


16. 解釋一下什么是Servlet分冈?

Servlet是使用Java Servlet應(yīng)用程序接口(API)及相關(guān)類和方法的Java程序圾另,所有的Servlet都必須要實(shí)現(xiàn)的核心接口是javax.servlet.servlet。每一個(gè)servlet都必須要直接或者間接實(shí)現(xiàn)這個(gè)接口雕沉,或者繼承javax.servlet.GenericServlet或javax.servlet.HTTPServlet集乔。Servlet主要用于處理客戶端傳來的HTTP請求,并返回一個(gè)響應(yīng)坡椒。


17. JSP常用的指令扰路?

page:針對當(dāng)前頁面的指令。
include:包含另一個(gè)頁面
taglib:定義和訪問自定義標(biāo)簽


18. MVC的各個(gè)部分都有哪些技術(shù)來實(shí)現(xiàn)?如何實(shí)現(xiàn)倔叼?

MVC是Model-View-Controller的簡寫汗唱。
Model代表的是應(yīng)用的業(yè)務(wù)邏輯(通過Java Bean,EJB組件實(shí)現(xiàn))丈攒。
View是應(yīng)用的表示面(由JSP頁面產(chǎn)生)哩罪。
Controller是提供應(yīng)用的處理過程控制(一般是一個(gè)Servlet),通過這種設(shè)計(jì)模型把應(yīng)用邏輯巡验,處理過程和顯示邏輯分成不同的組件實(shí)現(xiàn)际插,這些組件可以進(jìn)行交互和重用。


19. 過濾器和攔截器的區(qū)別

1)攔截器是基于java的反射機(jī)制的显设,而過濾器是基于函數(shù)回調(diào)
2)過濾器依賴于servlet容器框弛,而攔截器不依賴于servlet容器
3)攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用
4)攔截器可以訪問action上下文捕捂、值棧里的對象瑟枫,而過濾器不能
5)在action的生命周期中斗搞,攔截器可以多次被調(diào)用,而過濾器只在容器初始化時(shí)調(diào)用一次

攔截器 :是在面向切面編程的就是在你的service或者一個(gè)方法慷妙,前調(diào)用一個(gè)方法榜旦,或者在方法后調(diào)用一個(gè)方法比如動(dòng)態(tài)代理就是攔截器的簡單實(shí)現(xiàn),在你調(diào)用方法前打印出字符串(或者做其它業(yè)務(wù)邏輯的操作)景殷,也可以在你調(diào)用方法后打印出字符串,甚至在你拋出異常的時(shí)候做業(yè)務(wù)邏輯的操作澡屡。

過濾器:是在Javaweb中猿挚,你傳入的request,response提前過濾掉一些信息,或者提前設(shè)置一些參數(shù)驶鹉,然后再傳入servlet或者struts的 action進(jìn)行業(yè)務(wù)邏輯绩蜻,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者 struts的action前統(tǒng)一設(shè)置字符集室埋,或者去除掉一些非法字符.


20. 保存 session id 有幾種方法 ?

1)保存 session id 的方式可以采用 cookie 办绝,這樣在交互過程中瀏覽器可以自動(dòng)的按照規(guī)則把 這個(gè)標(biāo)識(shí)發(fā)送給服務(wù)器。
2)由于 cookie 可以被人為的禁止姚淆,必須有其它的機(jī)制以便在 cookie 被禁止時(shí)仍然能夠把 session id 傳遞回服務(wù)器孕蝉,經(jīng)常采用的一種技術(shù)叫做 URL 重寫,就是把 session id 附加在 URL 路徑的后面腌逢,附加的方式也有兩種降淮,一種是作為 URL 路徑的附加信息,另一種是作為查詢 字符串附加在 URL 后面搏讶。網(wǎng)絡(luò)在整個(gè)交互過程中始終保持狀態(tài)佳鳖,就必須在每個(gè)客戶端可能 請求的路徑后面都包含這個(gè) session id 。


21. session 何時(shí)被刪除 ?

1)程序調(diào)用 HttpSession.invalidate()
2)距離上一次收到客戶端發(fā)送的 session id 時(shí)間間隔超過了 session 的最大有效時(shí)間
3)服務(wù)器進(jìn)程被停止
注意關(guān)閉瀏覽器只會(huì)使存儲(chǔ)在客戶端瀏覽器內(nèi)存中的 session cookie 失效媒惕,不會(huì)使服務(wù)器端 的 session 對象失效 .


22. 狀態(tài)碼

1XX:指示信息-表示請求已經(jīng)接收系吩,繼續(xù)處理
2XX:成功-表示請求已經(jīng)被成功接收,理解
3XX:重定向-要完成必須進(jìn)行進(jìn)一步操作
4XX:客戶端錯(cuò)誤-請求無法實(shí)現(xiàn)或請求語句錯(cuò)誤
5XX:服務(wù)端錯(cuò)誤-服務(wù)器未能實(shí)現(xiàn)合法請求

200:OK-客戶端請求成功
301:資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其它URL
302:臨時(shí)移動(dòng)妒蔚,(重定向)
400:客戶端請求有語法錯(cuò)誤穿挨,不能被服務(wù)器所理解
401:請求未經(jīng)授權(quán)
403:接收到請求但是拒絕服務(wù)
404:請求資源不存在
500:服務(wù)器發(fā)生了不可預(yù)期的錯(cuò)誤
503:服務(wù)器當(dāng)前不能處理客戶端請求,一段時(shí)間之后可能恢復(fù)正常


23. 談?wù)剬τ贏jax的理解

Ajax的優(yōu)點(diǎn):
1)最大的一點(diǎn)是頁面無刷新面睛,給用戶的體驗(yàn)非常好絮蒿。
2)使用異步方式與服務(wù)器通信,不需要打斷用戶操作叁鉴,具有更加迅速的響應(yīng)能力土涝。
3)ajax的原則是“按需取數(shù)據(jù)”,最大程度的減少冗余請求幌墓,減少服務(wù)器的負(fù)荷但壮。

Ajax的缺點(diǎn):
1)破壞瀏覽器后退按鈕的正常行為冀泻。在動(dòng)態(tài)更新頁面后,用戶無法回到前一個(gè)頁面的狀態(tài).
2)使用JavaScript作Ajax的引擎蜡饵,JavaScript的兼容性和Debug本身就讓人頭大弹渔。

Ajax的應(yīng)用場景:
1)文本輸入提示(自動(dòng)完成)的場景(注冊)
2)對數(shù)據(jù)進(jìn)行聯(lián)動(dòng)過濾的場景(三級聯(lián)動(dòng))


24. 簡述JavaWeb的四大域?qū)ο?/h5>

PageContext,ServletRequest溯祸,HttpSession肢专,ServletContext;

1)PageContext域:作用范圍是整個(gè)JSP頁面焦辅,是四大作用域中最小的一個(gè)博杖;生命周期是當(dāng)對JSP的請求時(shí)開始,當(dāng)響應(yīng)結(jié)束時(shí)銷毀筷登。
2)ServletRequest域:作用范圍是整個(gè)請求鏈(請求轉(zhuǎn)發(fā)也存在)剃根;生命周期是在service方法調(diào)用前由服務(wù)器創(chuàng)建,傳入service方法前方。整個(gè)請求結(jié)束狈醉,request生命結(jié)束。
3)HttpSession域:作用范圍是一次會(huì)話惠险。生命周期是在第一次調(diào)用request.getSession()方法時(shí)苗傅,服務(wù)器會(huì)檢查是否已經(jīng)有對應(yīng)的session,如果沒有就在內(nèi)存中創(chuàng)建一個(gè)session并返回。當(dāng)一段時(shí)間內(nèi)session沒有被使用(默認(rèn)為30分鐘)班巩,則服務(wù)器會(huì)銷毀該session金吗。如果服務(wù)器非正常關(guān)閉(強(qiáng)行關(guān)閉),沒有到期的session也會(huì)跟著銷毀趣竣。如果調(diào)用session提供的invalidate() 摇庙,可以立即銷毀session。

注意:服務(wù)器正常關(guān)閉遥缕,再啟動(dòng)卫袒,Session對象會(huì)進(jìn)行鈍化和活化操作。同時(shí)如果服務(wù)器鈍化的時(shí)間在session 默認(rèn)銷毀時(shí)間之內(nèi)单匣,則活化后session還是存在的夕凝。否則Session不存在。 如果JavaBean 數(shù)據(jù)在session鈍化時(shí)户秤,沒有實(shí)現(xiàn)Serializable 則當(dāng)Session活化時(shí)码秉,會(huì)消失。

4)ServletContext域:作用范圍是整個(gè)Web應(yīng)用鸡号。當(dāng)Web應(yīng)用被加載進(jìn)容器時(shí)創(chuàng)建代表整個(gè)web應(yīng)用的ServletContext對象转砖,當(dāng)服務(wù)器關(guān)閉或Web應(yīng)用被移除時(shí),ServletContext對象跟著銷毀鲸伴。

作用域從小到大為:PageContext(jsp頁面)府蔗,ServletRequest(一次請求)晋控,HttpSession(一次會(huì)話),ServletContext(整個(gè)web應(yīng)用)姓赤。


25. JSP頁面基本結(jié)構(gòu)

1)腳本元素
32指令元素
3)動(dòng)作元素
4)內(nèi)置對象:Out 赡译、request、response不铆、session蝌焚、application、pageContext


26. 作用域的使用原則

能使用小的誓斥,就不使用大的
1)pageContext: 頁面級作用域
只在同一個(gè)頁面中有效
2)request: 請求級作用域
將數(shù)據(jù)存儲(chǔ)在請求對象综看,在產(chǎn)生響應(yīng),請求對象銷毀岖食,其作用域也銷毀
用戶在發(fā)起下一次請求前,上一次請求的數(shù)據(jù)已經(jīng)銷毀了
3)session: 會(huì)話級作用域
將數(shù)據(jù)存儲(chǔ)在服務(wù)器上(session中)舞吭,給客戶端下發(fā)憑證
每個(gè)客戶端都有自己獨(dú)立的session存儲(chǔ)空間
在客戶端不關(guān)閉瀏覽器泡垃,服務(wù)器不超時(shí),客戶端可以隨時(shí)從session中獲得數(shù)據(jù)
4)application:應(yīng)用級作用域
將數(shù)據(jù)存儲(chǔ)在服務(wù)器上(application中)羡鸥,并給數(shù)據(jù)起一個(gè)key
所有客戶端共享同一個(gè)application存儲(chǔ)空間
只要服務(wù)器不關(guān)閉蔑穴,應(yīng)用級作用域中的數(shù)據(jù)一直存在


27. session中數(shù)據(jù)失效的情況

(1)客戶端關(guān)閉了瀏覽器,憑證消失惧浴,不能取得服務(wù)器內(nèi)存的數(shù)據(jù)
(2)服務(wù)器重啟或關(guān)閉存和,服務(wù)器內(nèi)存的內(nèi)存清空,憑證無效
(3)服務(wù)器設(shè)置了超時(shí)時(shí)間衷旅,當(dāng)會(huì)話超過了超時(shí)時(shí)間捐腿,服務(wù)器內(nèi)存被清理,憑證無效
(4)通過程序代碼清除了session中的數(shù)據(jù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柿顶,一起剝皮案震驚了整個(gè)濱河市茄袖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘁锯,老刑警劉巖宪祥,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異家乘,居然都是意外死亡蝗羊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門仁锯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耀找,“玉大人,你說我怎么就攤上這事业崖⊙纳耄” “怎么了凉驻?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長复罐。 經(jīng)常有香客問我涝登,道長,這世上最難降的妖魔是什么效诅? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任胀滚,我火速辦了婚禮,結(jié)果婚禮上乱投,老公的妹妹穿的比我還像新娘咽笼。我一直安慰自己,他們只是感情好戚炫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布剑刑。 她就那樣靜靜地躺著,像睡著了一般双肤。 火紅的嫁衣襯著肌膚如雪施掏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天茅糜,我揣著相機(jī)與錄音七芭,去河邊找鬼。 笑死蔑赘,一個(gè)胖子當(dāng)著我的面吹牛狸驳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缩赛,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼耙箍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了酥馍?” 一聲冷哼從身側(cè)響起究西,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎物喷,沒想到半個(gè)月后卤材,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡峦失,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年扇丛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尉辑。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帆精,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卓练,我是刑警寧澤隘蝎,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站襟企,受9級特大地震影響嘱么,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜顽悼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一曼振、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔚龙,春花似錦冰评、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坑填,卻和暖如春抛人,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背穷遂。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娱据,地道東北人蚪黑。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像中剩,于是被迫代替她去往敵國和親忌穿。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容