亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Java經(jīng)典面試題匯總:Java Web

瀏覽:22日期:2022-08-08 18:30:46
目錄1. JSP 和 servlet 有什么區(qū)別?2. 什么是Tomcat?3. Tomcat容器是如何創(chuàng)建Servlet類實(shí)例?用到了什么原理?4. 攔截器和過濾器的區(qū)別?5.說一下 JSP 的 4 種作用域?6. JSP 有哪些內(nèi)置對象?作用分別是什么?7. Servlet的生命周期8. session 和 cookie 有什么區(qū)別?9. 說一下 session 的工作原理?10. 如果客戶端禁止 cookie 能實(shí)現(xiàn) session 還能用嗎?11. JSP工作原理?12. JSP中動態(tài)include和靜態(tài)include的區(qū)別?13、JSTL是什么?優(yōu)點(diǎn)有哪些?14. GET和POST的區(qū)別?15. 什么是 XSS 攻擊,如何避免?16. 什么是 CSRF 攻擊,如何避免?總結(jié)1. JSP 和 servlet 有什么區(qū)別?

JSP 是 servlet 技術(shù)的擴(kuò)展,本質(zhì)上就是 servlet 的簡易方式。servlet 和 JSP 最主要的不同點(diǎn)在于, servlet 的應(yīng)用邏輯是在 Java 文件中,并且完全從表示層中的 html 里分離開來,而 JSP 的情況是 Java 和 html 可以組合成一個(gè)擴(kuò)展名為 JSP 的文件。JSP 側(cè)重于視圖,servlet 主要用于控制邏輯。

2. 什么是Tomcat?

Tomcat是一個(gè)免費(fèi)的Web應(yīng)用服務(wù)器,Java編寫的Web項(xiàng)目可以部署在上面,用戶在客戶端請求時(shí),都是將請求發(fā)到Tomcat上,Tomcat在將請求發(fā)到對應(yīng)的項(xiàng)目上。

3. Tomcat容器是如何創(chuàng)建Servlet類實(shí)例?用到了什么原理?

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

4. 攔截器和過濾器的區(qū)別? 攔截器是基于java的反射機(jī)制的,而過濾器是基于函數(shù)回調(diào)。 攔截器不依賴與servlet容器,過濾器依賴與servlet容器。 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。 攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。 在action的生命周期中,攔截器可以多次被調(diào)用,而過濾器只能在容器初始化時(shí)被調(diào)用一次。5.說一下 JSP 的 4 種作用域? page:代表與一個(gè)頁面相關(guān)的對象和屬性。 request:代表與客戶端發(fā)出的一個(gè)請求相關(guān)的對象和屬性。一個(gè)請求可能跨越多個(gè)頁面,涉及多個(gè) Web 組件;需要在頁面顯示的臨時(shí)數(shù)據(jù)可以置于此作用域。 session:代表與某個(gè)用戶與服務(wù)器建立的一次會話相關(guān)的對象和屬性。跟某個(gè)用戶相關(guān)的數(shù)據(jù)應(yīng)該放在用戶自己的 session 中。 application:代表與整個(gè) Web 應(yīng)用程序相關(guān)的對象和屬性,它實(shí)質(zhì)上是跨越整個(gè) Web 應(yīng)用程序,包括多個(gè)頁面、請求和會話的一個(gè)全局作用域。6. JSP 有哪些內(nèi)置對象?作用分別是什么?

JSP 有 9 大內(nèi)置對象:

request:封裝客戶端的請求,其中包含來自 get 或 post 請求的參數(shù); response:封裝服務(wù)器對客戶端的響應(yīng); pageContext:通過該對象可以獲取其他對象; session:封裝用戶會話的對象; application:封裝服務(wù)器運(yùn)行環(huán)境的對象; out:輸出服務(wù)器響應(yīng)的輸出流對象; config:Web 應(yīng)用的配置對象; page:JSP 頁面本身(相當(dāng)于 Java 程序中的 this); exception:封裝頁面拋出異常的對象。7. Servlet的生命周期

servlet有良好的生存期的定義,包括加載和實(shí)例化、初始化、處理請求以及服務(wù)結(jié)束。這個(gè)生存期由javax.servlet.servlet接口中的init、service、destroy方法表達(dá)。

(1)加載和實(shí)例化

當(dāng)Servlet容器啟動或客戶端發(fā)送一個(gè)請求時(shí),Servlet容器會查找內(nèi)存中是否存在該Servlet實(shí)例,若存在,則直接讀取該實(shí)例響應(yīng)請求;如果不存在,就創(chuàng)建一個(gè)Servlet實(shí)例。

(2) 初始化

實(shí)例化后,Servlet容器將調(diào)用Servlet的init()方法進(jìn)行初始化(一些準(zhǔn)備工作或資源預(yù)加載工作)。

(3)服務(wù)

初始化后,Servlet處于能響應(yīng)請求的就緒狀態(tài)。當(dāng)接收到客戶端請求時(shí),調(diào)用service()的方法處理客戶端請求,HttpServlet的service()方法會根據(jù)不同的請求 轉(zhuǎn)調(diào)不同的doXxx()方法。

(4)銷毀

當(dāng)Servlet容器關(guān)閉時(shí),Servlet實(shí)例也隨時(shí)銷毀。其間,Servlet容器會調(diào)用Servlet 的destroy()方法去判斷該Servlet是否應(yīng)當(dāng)被釋放(或回收資源)。

8. session 和 cookie 有什么區(qū)別? 存儲位置不同:session 存儲在服務(wù)器端;cookie 存儲在瀏覽器端。 安全性不同:cookie 安全性一般,在瀏覽器存儲,可以被偽造和修改。 容量和個(gè)數(shù)限制:cookie 有容量限制,每個(gè)站點(diǎn)下的 cookie 也有個(gè)數(shù)限制。 存儲的多樣性:session 可以存儲在 Redis 中、數(shù)據(jù)庫中、應(yīng)用程序中;而 cookie 只能存儲在瀏覽器中。9. 說一下 session 的工作原理?

session 的工作原理是客戶端登錄完成之后,服務(wù)器會創(chuàng)建對應(yīng)的 session,session 創(chuàng)建完之后, 會把 session 的 id 發(fā)送給客戶端,客戶端再存儲到瀏覽器中。這樣客戶端每次訪問服務(wù)器時(shí),都會帶著 sessionid, 服務(wù)器拿到 sessionid 之后,在內(nèi)存找到與之對應(yīng)的 session 這樣就可以正常工作了。

10. 如果客戶端禁止 cookie 能實(shí)現(xiàn) session 還能用嗎?

可以用,session 只是依賴 cookie 存儲 sessionid,如果 cookie 被禁用了, 可以使用 url 中添加 sessionid 的方式保證 session 能正常使用。

11. JSP工作原理?

(1)當(dāng)用戶訪問一個(gè)JSP頁面時(shí),會向一個(gè)Servlet容器(Tomcat)發(fā)出請求;

(2)如果是第一次請求頁面,或頁面有所改動,則servlet容器首先要把JSP頁面(假設(shè)為test.jsp)轉(zhuǎn)化為Servlet代碼(test.java),再將其轉(zhuǎn)化為(test.class文件);因?yàn)檫@個(gè)過程(編譯)會耗費(fèi)一定時(shí)間,所以第一次訪問或jsp文件有改動時(shí),訪問時(shí)間有些長;

(3)JSP容器負(fù)責(zé)調(diào)用從JSP轉(zhuǎn)換來的servlet,這些servlet負(fù)責(zé)提供服務(wù)相應(yīng)用戶請求(比如客戶端發(fā)送表單,要求servlet:formprocessor.java來處理,則容器會建立一個(gè)線程,調(diào)用formprocessor.java來處理該請求);如果用戶有多個(gè)請求,則容器會建立多個(gè)線程處理多個(gè)請求;

(4)容器執(zhí)行字節(jié)碼文件(包括調(diào)用的servlet:formprocessor.java字節(jié)嗎),并將其結(jié)果返回到客戶端;(返回的最終方式是由servlet輸出html格式的文件流)

12. JSP中動態(tài)include和靜態(tài)include的區(qū)別? 靜態(tài)include:語法:<%@ include file='文件名' %>,相當(dāng)于復(fù)制,編輯時(shí)將對應(yīng)的文件包含進(jìn)來,當(dāng)內(nèi)容變化時(shí),不會再一次對其編譯,不易維護(hù)。 動態(tài)include:語法:<jsp:include page='文件名'>,能夠自動檢查被包含文件,當(dāng)客戶端對JSP文件進(jìn)行請求時(shí),會重新將對應(yīng)的文件包含進(jìn)來,進(jìn)行實(shí)時(shí)的更新。13、JSTL是什么?優(yōu)點(diǎn)有哪些?

答:JSTL(JSP Standard Tag Library,JSP標(biāo)準(zhǔn)標(biāo)簽庫)是一個(gè)不斷完善的開放源代碼的JSP標(biāo)簽庫,由四個(gè)定制標(biāo)記庫(core、format、xml、sql)和一對通用標(biāo)記庫驗(yàn)證器(ScriptFreeTLV和PermittedTaglibsTLV)組成。

優(yōu)點(diǎn)有:

在應(yīng)用程序服務(wù)器之間提供了一致的接口,最大程度的提高了web應(yīng)用在各應(yīng)用服務(wù)器之間的移植。 簡化了JSP和web應(yīng)用程序的開發(fā)。 以一種統(tǒng)一的方式減少了JSP中scriptlet代碼數(shù)據(jù),可以達(dá)到?jīng)]有任何scriptlet代碼的代碼。在我們公司的項(xiàng)目中是不允許任何scriptlet出現(xiàn)在JSP中。 允許JSP設(shè)計(jì)工具與web應(yīng)用程序開發(fā)的進(jìn)一步集成。相信不久就會有支持JSTL的IDE開發(fā)工具出現(xiàn)。14. GET和POST的區(qū)別?

POST和GET都是向服務(wù)器提交數(shù)據(jù),并且都會從服務(wù)器獲取數(shù)據(jù)。

1、傳送方式:get通過地址欄傳輸,post通過報(bào)文傳輸。

2、傳送長度:get參數(shù)有長度限制(受限于url長度),而post無限制

3、GET和POST還有一個(gè)重大區(qū)別,簡單的說:

GET產(chǎn)生一個(gè)TCP數(shù)據(jù)包;POST產(chǎn)生兩個(gè)TCP數(shù)據(jù)包

長的說:

對于GET方式的請求,瀏覽器會把http header和data一并發(fā)送出去,服務(wù)器響應(yīng)200(返回?cái)?shù)據(jù));

而對于POST,瀏覽器先發(fā)送header,服務(wù)器響應(yīng)100 continue,瀏覽器再發(fā)送data,服務(wù)器響應(yīng)200 ok(返回?cái)?shù)據(jù))。

建議:

1、get方式的安全性較Post方式要差些,包含機(jī)密信息的話,建議用Post數(shù)據(jù)提交方式;

2、在做數(shù)據(jù)查詢時(shí),建議用Get方式;而在做數(shù)據(jù)添加、修改或刪除時(shí),建議用Post方式;

15. 什么是 XSS 攻擊,如何避免?

XSS 攻擊:即跨站腳本攻擊,它是 Web 程序中常見的漏洞。原理是攻擊者往 Web 頁面里插入惡意的腳本代碼(css 代碼、Javascript 代碼等),當(dāng)用戶瀏覽該頁面時(shí),嵌入其中的腳本代碼會被執(zhí)行,從而達(dá)到惡意攻擊用戶的目的,如盜取用戶 cookie、破壞頁面結(jié)構(gòu)、重定向到其他網(wǎng)站等。 預(yù)防 XSS 的核心是必須對輸入的數(shù)據(jù)做過濾處理。

16. 什么是 CSRF 攻擊,如何避免?

CSRF:Cross-Site Request Forgery(中文:跨站請求偽造),可以理解為攻擊者盜用了你的身份,以你的名義發(fā)送惡意請求,比如:以你名義發(fā)送郵件、發(fā)消息、購買商品,虛擬貨幣轉(zhuǎn)賬等。 防御手段: 驗(yàn)證請求來源地址; 關(guān)鍵操作添加驗(yàn)證碼; 在請求地址添加 token 并驗(yàn)證。

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注好吧啦網(wǎng)的更多內(nèi)容!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 免费日韩在线 | 免费看精品黄线在线观看 | 国产最新视频 | 精品成人毛片一区二区视 | 色婷婷久久综合中文久久一本 | 国产美女主播在线 | 麻豆69堂免费视频 | 中文字幕黄色 | 国产成人精品一区二区不卡 | 好黄好猛好爽好痛的视频 | 久久久在线视频精品免费观看 | 古代级a毛片在线 | 成人宗合网 | 成人黄色三级视频 | 999国内精品永久免费视频 | 国产精品久久在线观看 | 99热精品国产三级在线观看 | 伊人久久综合视频 | 亚洲综合九九 | 欧美成人免费看片一区 | 免费一级毛片不卡不收费 | 青草91视频免费观看 | 国产成人ae在线观看网站站 | 成人h视频在线观看 | 亚洲国产高清视频在线观看 | 在线观看av片永久免费 | 国产精品久久久一区二区三区 | 日韩毛片欧美一级a网站 | 99久久精品费精品国产一区二区 | 亚洲国产精品久久久久666 | 日韩3区 | 欧美一级aa天码毛片 | 善良的翁熄日本中文字幕1 上海麻豆文化传媒网站入口 | 久久久精品免费 | 免费成人在线网站 | 亚洲成人中文 | 国产一级二级三级视频 | 一色综合 | 免费看黄色a级片 | 99久久免费精品国产免费 | 国产日韩精品视频一区二区三区 |