天天看點

java面試③Web部分

Java面試①整體流程

Java面試②基礎部分

Java面試③web部分

Java面試④資料庫部分

Java面試⑤前端部分

Java面試⑥架構部分

Java面試⑦進階部分

Java面試⑧項目和業務部分

get和post請求都是http的請求方式,使用者通過不同的http請求方式完成對資源(url)的不同操作,具體點來講get一般用于擷取/查詢資源資訊,而post一般用于更新資源資訊。

http定義了與伺服器互動的不同方法,最基本的方法有4種,分别是get,post,put,delete,url全稱是資源描述符,我們可以這樣認為:一個URL位址,它用于描述一個網絡上的資源,而http中的get,post,put,delete就是對應着這個資源的查,改,增,删4個操作,具體點get一般用于擷取/查詢資源資訊,而post一般用于更新資源資訊。

1)get請求送出的資料會在位址欄顯示出來,而post請求不會在位址欄顯示出來。

get送出請求的資料會附在URL之後(就是把資料放置在http協定頭中)以?分割url和傳輸資料,多個參數用&連接配接;post送出:把送出的資料放置的是在http包的包體中,是以,get送出的資料會在位址欄中顯示出來,而post送出,位址欄不會改變。

2)傳輸資料的大小

http get請求由于浏覽器對位址長度的限制而導緻傳輸的資料有限制,而post請求不會因為位址長度限制而導緻傳輸資料限制。

3)安全性,post的安全性要比get的安全性高,由于資料是會在位址中呈現,是以安全性可以曆史記錄找到密碼相關等資訊。

servlet(servlet applet),全稱java servlet,是用java編寫的服務端程式,而這些Servlet都要實作Servlet這個接口,其主要功能在于互動式地浏覽和修改資料,生成動态web内容,servlet運作于支援java的應用伺服器中。

httpservlet重寫doGet和doPost方法或者你也可以重寫service方法完成對get和post請求的響應。

servlet有良好的生存期的定義,包括加載和執行個體化、初始化、處理請求以及服務結束,這個生存期由java servlet Servlet接口的init,service,destory方法表達。

Servlet啟動時,開始加載Servlet生命周期開始,servlet被伺服器執行個體化後,容器運作其init方法,請求到達時運作其service方法,service方法自動派遣運作與請求對其的doxxx方法(doGet,doPost)等,當伺服器決定将執行個體化銷毀的時候(伺服器關閉)調用其destory方法

加載Servlet的class-->執行個體化Servlet的init完成初始化-->響應請求(Servlet的service方法)-->Servlet容器關閉時(Servlet的destory方法)

前者僅是容器中控制權的轉向,在用戶端浏覽器位址欄中不會顯示出轉向後的位址;後者則是完全的連結,浏覽器(用戶端)将會得到跳轉的連結,并重新發送請求連結。forward還是原來的請求而rediect是重新發起請求。這樣,從浏覽器的位址欄中可以看出跳轉後的連結位址,是以前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,并且這樣有助于隐藏實際的連結,在有些情況下,比如,需要跳轉到一個其他伺服器上的資源則必須使用sendRedirect()方法。

1)forward是伺服器請求的轉向而rediect是用戶端的跳轉。

2)使用forward浏覽器的位址不會發生改變,而redrect會發生改變。

3)forward是一次請求中完成,而redrect是重新發起請求。

3)forward是在伺服器端完成,而不用用戶端重新發起請求,效率高。

JSP是Servlet的擴充。所有的jsp檔案都會被翻譯為一個繼承httpServlet的類,也就是說jsp最終也是一個Servlet,這個servlet對外提供服務。

Servlet和JSP最主要的不同點在于,Servlet如果要實作html的功能,必須使用Writer輸出對應的html比較麻煩,Servlet的應用邏輯是在java檔案,并完全從表示層中的html分離出來,而jsp的情況是Java和HTML可以組合成一個擴充名為.jsp檔案比較友善而嵌入邏輯比較複雜,jsp側重視圖,Servlet主要用于控制邏輯。

9個内置的對象:

request   使用者請求,此請求會包含來自get/post請求的參數

response     網頁傳回使用者端的回應

pageContext 網頁的屬性是在這裡管理

session   與請求有關的會話棋

application    servlet正在執行的内容

  out 用來傳送回應的輸出

config   servlet 的構架部件

page jsp網頁本身

exception 針對錯誤網頁,未捕抓的例外

四大作用域:pageContext,request,session,application可以通過jstl從四大作用域中取值

jsp傳遞值request,session,application,cookie也能傳值

Session和cookie都是會話跟蹤技術,cookie通過用戶端記錄資訊确定使用者身份,session通過在服務端确定使用者身份,但是session的實作依賴于cookie,sessionId(session的唯一辨別需要存放在用戶端)

cokike和session的差別

1)cookie資料存放在客戶的浏覽器上,session資料存放在伺服器上。

2)cookie不是很安全,别人可以分析存放本地的cookie并進行cookie欺騙,考慮到安全性應當使用session

3)session會在一定時間内儲存在伺服器上,當通路增多,會比較占用你伺服器的性能考慮到減輕伺服器性能方面,應當使用cookie

4)單個cookie儲存的資料不能超過4k,很多浏覽器都限制一個站點最多儲存20cookie

5)是以個人建議:

将登入等重要資訊存放為session,其他資訊如果需要保留,可以存放cookie中,比如購物車。

購物車最好使用cookie,但是cookie是可以在使用者端禁用的,這時候我們要使用cookie+資料庫的方式實作,當從cookie中不能取出資料時,就從資料庫擷取

M(Model)模型 javaBean,hibernate,mybatis

V(View)代碼視圖 jsp,html,freemaker,velocity

C(Controller)控制器 Servlet,Action,struts

Jsp+Servlet+javaBean 最經典mvc模式。實際上就是model2的實作方式,就是把視圖和邏輯隔離開來

model1的方式 jsp+service+dao

model2的方式 jsp+servlet+service+dao

使用struts2和springMVC這樣的mvc結構後,jsp+核心控制器+action+javaBean

微信搜尋公衆号:javafirst