Java Web基礎理解(一)

1.session 和 cookie 的區別。

session 是存儲在服務器端,cookie是存儲在客戶端的,所以安全來講session的安全性要比cookie高,然後我們獲取session裏的信息是通過存放在會話cookie裏的sessionid獲取的。又由於session是存放在服務器的內存中,所以session裏的東西不斷增加會造成服務器的負擔,所以會把很重要的信息存儲在session中,而把一些次要東西存儲在客戶端的cookie裏,然後cookie確切的說分爲兩大類 分爲會話cookie和持久化cookie,會話cookie確切的說是,存放在客戶端瀏覽器的內存中,所以說他的生命週期和瀏覽器是一致的,瀏覽器關了會話cookie也就消失了,然而持久化cookie是存放在客戶端硬盤中,而持久化cookie的生命週期使我們在設置cookie時候設置的那個保存時間,然後我們考慮一個問題當瀏覽器關閉時session會不會丟失,從上面敘述分析session的信息是通過會話cookie的sessionid獲取的,當瀏覽器關閉的時候會話cookie消失所以我們的sessionid也就消失了,但是session的信息還存在服務端,這時我們只是查不到所謂的session但它並不是不存在。那麼,session在什麼情況下丟失,就是在服務器關閉的時候,或者是session過期(默認時間是30分鐘),再或者調用了invalidate()或者是我們想要session中的某一條數據消失調用session.removeAttribute()方法,然後session在什麼時候被創建呢,確切的說是通過調用getSession()來創建,這就是session與cookie的區別。

2.session和cookie的聯繫

session 是通過cookie來工作的

session 和 cookie JSESSIONID 來聯繫的,通過其可以知道session 的 id,從而獲取到其他的信息,

在購物網站中通常將用戶加入購物車的商品連通到JSESSIONID記錄到數據庫中,當用戶再次訪問時,通過sessionid就可以查找到用戶上次加入購物車的商品。因爲JSESSIONID是唯一的,記錄到數據庫中就可以根據這個查找了。

3.servlet的聲明週期,簡述

Servlet 生命週期可以分爲四個階段,加載和實例化、初始化、服務、銷燬。

當客戶第一次請求時,首先判斷其是否存在servlet對象,若不存在,則由Web容器創建對象,然後調用Init()方法對其進行初始化,此初始化方法在整個Servlet生命週期中只調用一次。完成Servlet對象的創建和實例化之後,Web容器會調用Servlet對象的service()方法來處理請求。

當Web容器關閉或者Servlet對象要從容器中被刪除時一個自動調用destory()

4.什麼是webservice?

從表面上看,WebService就是一個應用程序向外界暴露出一個通過Web進行調用的API,也就是說能用編程的方法通過Web來調用這個應用程序。我們把調用這個WebService的應用程序叫做客戶端。而把提供這個WebService的應用程序叫做服務端。從深層次看,WebService是建立可互操作的分佈式應用程序的新平臺,是一個平臺,是一套標準。它定義了應用程序如何在Web上實現互操作性,你可以用任何喜歡的語言,在任何你喜歡的平臺上寫Web Service,只要我們可以通過Web Service 標準對這些服務進行查詢和訪問。

5.jsp和servlet的區別、共同點、各自應用的範圍

JSP是Servlet技術的擴展,本質就是Servlet的簡易方式。JSP編譯後“類servlet”Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java文件中,並且完全從表示層中的HTML裏分離開來。而JSP的情況是Java和HTML可以組合成一個擴展名爲.jsp的文件。JSP側重於視圖,Servlet主要用於控制邏輯。在struts框架中,jsp位於 MVC設計模式的視圖層,而Servlet位於控制層。

6.轉發(forward) 和重定向(redirect)的區別

1.從地址欄顯示來說

forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然後把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容從哪裏來的,所以它的地址欄還是原來的地址

redirect 是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址。所以地址欄顯示的是新的URL。

2.從數據共享來說

forward:轉發頁面和轉發到的頁面可以共享request裏面的數據

3.從運用地方來說

forward:一般用於用戶登錄的時候,根據角色轉發到相應的模塊。

redirect:一般用於用戶註銷登錄時返回主頁面和跳轉到其他的網站等

4.從效率來說

forward:高

redirect:低

7.request.getAttribute() 和request.getParamter() 有何區別?

1、request.getParameter()取得是通過容器的實現來取得通過類似post,get等方式傳入的數據。

2、request.setAttribute()和getAttribute()只是在web容器內部流轉,僅僅是請求處理階段。

3、getAttribute是返回對象,getParamter返回字符串

4、getAttributer()一向是和setAttribute()一起使用的,只有先用setAttribute()設置之後,才能通過getAttribute()來獲得值,他們傳遞的是Object類型的數據。而且必須在同一個request對象中使用纔有效。而getParameter()是接收表單的get或者post提交過來的參數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章