JSP中需要區別的幾個概念

備注

這里只是簡單區別每組概念,不作具體代碼演示。

請求重定向和請求轉發

首先介紹下兩種行為:
請求重定向:客戶端行為,本質上來說相當于兩次請求,因此前一次的請求對象不會保存,并且URL地址會改變。代碼實現:response.sendRedirect()
請求轉發:服務器行為,本質上是一次請求,因此前一次的請求對象會保存,并且URL地址不會改變。代碼實現:request.getRequestDispatcher().forward(request,response)
那兩者到底有什么區別呢?舉個生活中的例子:
小明同學想向學校申請借教室,于是他填好了申請表,來到了招生辦申請,但招生辦的老師說:“同學,我們這里不負責借教室哦,你想借教室的話要去找教務處。”小明只好離開招生辦,去找教務處再填一次申請表,再申請一次,這就是請求重定向。
小強同學同樣想申請借教室,他也是填好了申請表來到了招生辦申請,但這次招生辦的老師比較熱心:“同學你把申請表給我,在外面等一下吧,我幫你向教務處申請,你就不用再走一趟了。”這就是請求轉發。
這里小明和小強好比是客戶端,學校好比是服務器,而申請表中的申請資料則好比是請求對象。小明向招生辦申請借教室和向教務處申請是兩個不同的請求,要填兩次申請表,因此前一次的請求對象不會被保存,就像第一次的申請表已經作廢了,小明又要再填一次申請表,而小明自己又跑了一趟,去到了教務處,所以請求重定向是客戶端行為,并且URL地址發生了改變。
小強則不同,招生辦的老師幫他完成了向教務處的申請,申請資料也是直接挪用申請表上的,小強不需要在填寫一次申請表,因此這兩次實際上是一次請求,小強也沒有離開招生辦,因此請求轉發是服務器行為,URL地址不會改變。

Session和Cookie

共同點:

  • 都是用來保存用戶狀態和用戶信息的機制
  • 都有生存期限,即都會過期

區別:

  • 保存位置:session保存在服務器(的內存),cookie以文本文件的形式保存在客戶端
  • 數據類型:session中保存的是Object類型(任意數據類型),cookie中保存的是String類型(字符串類型)
  • 銷毀時間:session會隨會話的結束而銷毀,cookie則會長期保存在客戶端 (當然cookie也是有生存期限的)
  • 作用:session保存重要的、安全性較高的信息,cookie保存相對不重要、安全性不高的信息(比如用戶的瀏覽記錄、搜索記錄等信息)

總的來說,session的安全性比cookie要高。

Iuclude指令和Include動作

  • include指令代碼為:<%@ include file="..." %>,include動作代碼為:<jsp:include page="...">
  • include指令作用在頁面轉換期間,include動作作用在請求期間
  • include指令會將包含頁面的JSP代碼插入其中,而 include動作只將包含頁面的輸出包含進來
  • 使用include指令,主頁面和包含頁面會轉換為一個Servlet,而使用include動作,主頁面和包含頁面會轉換為兩個獨立的Servlet

include指令的優點在于其功能強大,所包含的代碼可以含有總體上影響主頁面的JSP構造,比如屬性、方法的定義和文檔類型的設定。而由于只包含輸出,并非頁面的實際代碼,因此include動作包含的頁面不能使用任何有可能在整體上影響主頁面的JSP構造。
然而include指令的缺點是難以維護,只要被包含的頁面發生更改,就必須更改主頁面,這是因為主頁面不會自動地查看被包含的頁面是否發生更改。而使用include動作則無需對主頁面進行更改,因此include動作比include指令在維護上有著明顯優勢。
include指令是將源文件與include添加的文件一起編譯成一個servlet,因此執行速度相比起include動作來說稍快一些。但如果頁面經常變化的話,使用include動作只需要單獨編譯主頁面或者包含頁面就行,這樣一來效率比起使用include指令會更高。

參考資料:

慕課網(IMOOC)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 一、jsp定義及作用 JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網...
    yzw12138閱讀 1,255評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,287評論 25 708
  • 從高中開始還是看了不少關于強奸、性虐待、還有關于同性戀的影片和文章,一直以來也沒有把自己的感想,寫下來。 我之所以...
    葉子的綠光閱讀 676評論 0 3
  • 今天的作業是古風人物。需要上色的部分不多,主要練習的還是人物線條。感覺自己今天的人物輪廓還可以,線條比較流暢。 繪...
    金炭閱讀 147評論 1 3