1. 程式人生 > >面試題 --- Web部分

面試題 --- Web部分

1、講一下http get 和 post請求得區別?

    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的安全性高。
由於資料會在地址中呈現。所以可以通過歷史記錄找到密碼等關鍵資訊。

2、說一下對 servlet 的理解?或者 serlet 是什麼?

    Servlet(Server Applet),全稱 Java Servlet。是用Java 編寫的伺服器端程式,而這些 Servlet 都要實現 Servlet 這個藉口。其主要功能在於互動式地遊覽器和修改資料,生成動態 Web 內容,Servlet 運行於支援Java 的應用伺服器中。
    HttpServlet 重寫 doGet 和 doPost 方法或者你也可以重寫 service 方法完成對get 和 post 請求得響應

3、簡單說一下 servlet 的生命週期?

    servlet 有良好的生存週期的定義,包括載入和例項化、初始化、處理請求以及服務結束。這個生存期由 javax.servlet.Servlet 介面的 init service 和 destroy 方法表達。
    servlet 啟動時,開始載入 servlet 生命週期開始,servlet 被伺服器例項化後,容器執行其 init 方法,請求到達時執行其 servlet 方法,service 方法自動派遣執行與請求對應的doXXX 方法(doGet doPost)等,當伺服器決定將例項銷燬的時候(伺服器關閉)呼叫其destory 方法。

載入 servlet 的 class ----> 例項化Servlet -----> 呼叫 Servlet 的init 完成初始化 ----> 響應請求(Servlet 的service 方法) -----> Servlet 容器關閉(Servlet 的 destory 方法)

4、servlet API 中 forward() 和 redirect() 的區別?

1、forward 是服務端的轉向,而 redirect 是客戶端的跳轉;
2、使用 forward 瀏覽器的地址不會發生改變。而 redirect 會發生改變;
3、forward 是一次請求中完成,而 redirect 是重新發送請求;
4、forward 是在伺服器端完成,而不用客戶端重新發起請求。效率較高。

5、JSP 和 Servlet 有哪些相同點和不同點,他們之間聯絡是什麼?

相同點:Jsp 是 Servlet 技術的擴充套件,所有得jsp 檔案都會被翻譯為一個繼承HttpServlet 的類,也就是jsp 最終也是一個Servlet。這個Servlet 對外提供服務。
不同點:JSP側重於檢視,Servlet 主要用於控制邏輯。

    servlet 和 jsp 的區別 最主要的不同點於,Servlet 如果實現 html 的功能,必須使用 Writer 輸出對應的html。Servlet 的應用邏輯是在Java 檔案中,並且完全從表示是中的HTMl 裡分離開來,而JSP 的情況是 Java 和HTMl 可以組合成一個副檔名為jsp 的檔案,JSP 側重於檢視,Servlet 在主要用於控制邏輯。

6、jsp 有哪些內建物件? 作用分別是什麼?分別有什麼方法?

9個內建物件:
    request 使用者端請求,此請求會包含來自 GET/POST 請求的引數
    response 網頁傳回使用者端的迴應
    pageConext 網頁的屬性是在這裡管理
    session 與請求有關的會話期
    applocation servlet 正在執行的內容
    out 用來傳送回應的輸出
    config servlet 的架構部件
    page JSP 網頁本身
    exception 針對錯誤網頁,為捕捉的例外

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

jsp 傳值 request、 session、 application、 cookie 也能傳值

7、session 和 cookie 的區別?你在專案中那些地方使用了?

    session 和 cookie 都是會話(Session) 跟蹤技術。cookie 通過客戶端記錄資訊確定使用者身份,Session 通過在伺服器端記錄資訊確定使用者身份,但是 session 的實現依賴於cookie,sessionID(session 的唯一標識需要存放在客戶端)

cookie 和 session 的區別:
    1、cookie 資料存放在客戶的瀏覽器,session 資料放在伺服器上。
    2、cookie 不是很安全,別人可以分析存放在本地得cookie 並進行 cookie欺騙 考慮到安全應當使用 session
    3、session 會在一定時間內儲存在伺服器上,當訪問增多,會比較佔用你伺服器效能,考慮到減輕伺服器效能方面,應當使用 cookie
    4、單個cookie 儲存的資料不能超過4K ,很多瀏覽器都限制一個站點最多儲存20個cookie

個人建議:
    將登陸資訊等重要資訊存放在SESSION
    其他資訊如果需要保留,可以放在COOKIE中()

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

    

8、MVC 的各個部分都有哪些技術實現?

M(model)模型:javabean
V(View)程式碼檢視:html、jsp、volicity、freemaker
C(Control)控制器:servlet、action

jsp+Servlet+javabean 最經典 mvc 模式,實際上就是 model2 的實現方式,就是把檢視和邏輯隔離開來。

Model1 的方式 jsp + service + dao
Model2 的方式 jsp + servlet + service + dao

使用:struts2 和 SpringMVC 這樣的 mvc 框架後,我們就變成 jsp + 核心控制器 + action + javabean