1、HTTP 請(qǐng)求的 GET 與 POST 方式的區(qū)別
2、解釋一下什么是 servlet
3岸蜗、說(shuō)一說(shuō) Servlet 的生命周期?
4单芜、Servlet 的基本架構(gòu)
5淤齐、什么情況下調(diào)用 doGet()和 doPost()内狗?
6噪径、Request 對(duì)象的主要方法:
7、forward 和 redirect 的區(qū)別
8眼俊、jsp 有哪些內(nèi)置對(duì)象?作用分別是什么?
9、JSP 的常用指令
10、JSP 中動(dòng)態(tài) INCLUDE 與靜態(tài) INCLUDE 的區(qū)別鞠抑?
1、HTTP 請(qǐng)求的 GET 與 POST 方式的區(qū)別?
【get :從服務(wù)器獲取數(shù)據(jù);傳送參數(shù)拼接在url后数冬,用戶可見(jiàn),安全性低;提交數(shù)據(jù)僅限于文本别渔,大小不超過(guò)1024字節(jié);】
????post :向服務(wù)器傳送數(shù)據(jù)箩朴;傳送參數(shù)存在http包體中,用戶不可見(jiàn)安全性高(用戶注冊(cè))绎橘;可提交文本和二進(jìn)制文件(上傳? ? ? ? 文件選post提交);】
1. get 是從服務(wù)器上獲取數(shù)據(jù)周霉,post 是向服務(wù)器傳送數(shù)據(jù)。
2. 請(qǐng)求的時(shí)候參數(shù)的位置有區(qū)別:get 的參數(shù)是拼接在 url 后面峡懈,用戶在瀏覽器地址欄可以看到;post 是放在 http 包的包體中
3. 提交的數(shù)據(jù)有區(qū)別与斤,get 方式能提交的數(shù)據(jù)只能是文本肪康,且大小不超過(guò) 1024 個(gè)字節(jié)辩蛋,而 post 不僅可以提交文本還有二進(jìn)制
? ? 文件。 所以說(shuō)想上傳文件的話咒循,那我們就需要使用 post 請(qǐng)求方式
4. get 安全性非常低,post 安全性較高久妆;比如說(shuō)用戶注冊(cè)梗夸,不能把用戶提交的注冊(cè)信息用 get 的方式,會(huì)把用戶的注冊(cè)信息都
? ? 顯示在 Url 上士嚎,是不安全的呜魄。
2、解釋一下什么是 servlet莱衩?
【servlet :服務(wù)端程序爵嗅,可動(dòng)態(tài)生成HTML頁(yè)面發(fā)送到客戶端,jsp就是servlet笨蚁;
????servlet在mvc項(xiàng)目中負(fù)責(zé)控制程序邏輯睹晒。】
Servlet 是服務(wù)器端的程序括细,動(dòng)態(tài)生成 html 頁(yè)面發(fā)送到客戶端伪很,但是這樣程序里會(huì)有很多 out.println(),java 與 html 語(yǔ)言混在
一起很亂,所以后來(lái) sun 公司推出了 JSP.其實(shí) JSP 就是 Servlet奋单,每次運(yùn)行的時(shí)候 JSP 都首先被編譯成 servlet 文件锉试,然后再被
編譯成.class 文件運(yùn)行。有了 jsp览濒,在 MVC 項(xiàng)目中 servlet 不再負(fù)責(zé)動(dòng)態(tài)生成頁(yè)面呆盖,轉(zhuǎn)而去負(fù)責(zé)控制程序邏輯的作用,控制 jsp
與 javabean 之間的流轉(zhuǎn)贷笛。
3应又、說(shuō)一說(shuō) Servlet 的生命周期?
【初始化(加載,init方法)–》處理請(qǐng)求(service方法)–》銷毀(服務(wù)結(jié)束乏苦,distroy方法)】
Servlet 生命周期包括三部分:
初始化:Web 容器加載 servlet株扛,調(diào)用 init()方法
處理請(qǐng)求:當(dāng)請(qǐng)求到達(dá)時(shí),運(yùn)行其 service()方法汇荐。service()自動(dòng)派遣運(yùn)行與請(qǐng)求相對(duì)應(yīng)的 doXXX(doGet 或者 doPost)方法洞就。
銷毀:服務(wù)結(jié)束,web 容器會(huì)調(diào)用 servlet 的 distroy()方法銷毀 servlet拢驾。
4奖磁、Servlet 的基本架構(gòu)
【public class ServletName extends HttpServlet {
????public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ }
????public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
????}】
5、什么情況下調(diào)用 doGet()和 doPost()繁疤?
method=get咖为,調(diào)用doGet()方法;
method=post稠腊,調(diào)用doPost()方法躁染。
Jsp 頁(yè)面中的 FORM 標(biāo)簽里的 method 屬性為 get 時(shí)調(diào)用 doGet(),為 post 時(shí)調(diào)用 doPost()架忌。
6吞彤、Request 對(duì)象的主要方法:
7、forward 和 redirect 的區(qū)別?
轉(zhuǎn)發(fā) forward:地址欄不變饰恕;可數(shù)據(jù)共享挠羔,效率高;一般用于用戶登錄埋嵌;
重定向 redirect:地址欄改變破加;不可數(shù)據(jù)共享,效率低雹嗦;一般用于注銷登錄或跳轉(zhuǎn)到其他網(wǎng)站范舀;
轉(zhuǎn)發(fā)與重定向
(1)從地址欄顯示來(lái)說(shuō)
forward 是服務(wù)器請(qǐng)求資源,服務(wù)器直接訪問(wèn)目標(biāo)地址的 URL了罪,把那個(gè) URL 的響應(yīng)內(nèi)容讀取過(guò)來(lái)锭环,然后把這些內(nèi)容再發(fā)給瀏覽
器,瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容從哪里來(lái)的泊藕,所以它的地址欄還是原來(lái)的地址辅辩;
redirect 是服務(wù)端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼吱七,告訴瀏覽器重新去請(qǐng)求那個(gè)地址汽久,所以地址欄顯示的是新的 URL。
(2)從數(shù)據(jù)共享來(lái)說(shuō)
forward:轉(zhuǎn)發(fā)頁(yè)面和轉(zhuǎn)發(fā)到的頁(yè)面可以共享 request 里面的數(shù)據(jù).
redirect:不能共享數(shù)據(jù).
(3)從運(yùn)用地方來(lái)說(shuō)
forward:一般用于用戶登陸的時(shí)候,根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊.
redirect:一般用于用戶注銷登陸時(shí)返回主頁(yè)面和跳轉(zhuǎn)到其它的網(wǎng)站等.
(4)從效率來(lái)說(shuō)
forward:高.
redirect:低.
8踊餐、jsp 有哪些內(nèi)置對(duì)象?作用分別是什么?
9景醇、JSP 的常用指令
【page指令、include指令吝岭、taglib指令】
page 指令: 屬性最多的指令(實(shí)際開(kāi)發(fā)中 page 指令默認(rèn))三痰,屬性最多的一個(gè)指令,根據(jù)不同的屬性窜管,指導(dǎo)整個(gè)頁(yè)面特性散劫。
格式:<%@ page 屬性名 1= “屬性值 1” 屬性名 2= “屬性值 2” …%>
常用屬性如下:
language:jsp 腳本中可以嵌入的語(yǔ)言種類,這個(gè)沒(méi)用幕帆,寫與不寫一樣的获搏;
pageEncoding:當(dāng)前 jsp 文件的本身編碼—內(nèi)部可以包含 contentType
contentType:response.setContentType(text/html;charset=UTF-8)
import:導(dǎo)入 java 的包
errorPage:當(dāng)前頁(yè)面出錯(cuò)后跳轉(zhuǎn)到哪個(gè)頁(yè)面
isErrorPage:當(dāng)前頁(yè)面是一個(gè)處理錯(cuò)誤的頁(yè)面
include 指令: 頁(yè)面包含(靜態(tài)包含)指令,可以將一個(gè) jsp 頁(yè)面包含到另一個(gè) jsp 頁(yè)面中失乾。
格式:<%@ include file=“被包含的文件地址”%>
taglib 指令: 在 jsp 頁(yè)面中引入標(biāo)簽庫(kù)(jstl 標(biāo)簽庫(kù)常熙、struts2 標(biāo)簽庫(kù))。
格式:<%@ taglib uri=“標(biāo)簽庫(kù)地址” prefix=“前綴”%>
10碱茁、JSP 中動(dòng)態(tài) INCLUDE 與靜態(tài) INCLUDE 的區(qū)別裸卫?
動(dòng)態(tài) INCLUDE 用 jsp:include 動(dòng)作實(shí)現(xiàn), < jsp:include page=“included.jsp” flush=“true”/>它總是會(huì)檢查所含文件中的變化,適合用于包含動(dòng)態(tài)頁(yè)面纽竣,并且可以帶參數(shù)墓贿;
靜態(tài) INCLUDE 用 include 偽碼實(shí)現(xiàn)茧泪,不會(huì)檢查所含文件的變化,適用于包含靜態(tài)頁(yè)面 < %@ include file=“included.html” %>