天天看點

jsp與servlet

一、JSP的四大作用域

page:隻在一個頁面保留資料(javax.servlet.jsp.PageContext(抽象類))

request:隻在一個請求中儲存資料(javax.servlet.httpServletRequest)

session:在一次會話中儲存資料,僅供單個使用者使用(javax.servlet.http.HttpSession)

application:在整個伺服器中儲存資料,全部使用者共享(javax.servlet.ServletContext)

二、JSP的九大内置對象

JSP有九個内置對象(又叫隐含對象),不需要預先聲明就可以在腳本代碼和表達式中随意使用。JSP九大内置對象分為四類:

  • 輸入輸出對象:out對象、response對象、request對象
  • 通信控制對象:pageContext對象、session對象、application對象
  • Servlet對象:page對象、config對象
  • 錯誤處理對象:exception對象

九種對象簡介:

out對象:用于向用戶端、浏覽器輸出資料。

request對象:封裝了來自用戶端、浏覽器的各種資訊。

response對象:封裝了伺服器的響應資訊。

exception對象:封裝了jsp程式執行過程中發生的異常和錯誤資訊。

config對象:封裝了應用程式的配置資訊。

page對象:指向了目前jsp程式本身。

session對象:用來儲存會話資訊。也就是說,可以實作在同一使用者的不同請求之間共享數

application對象:代表了目前應用程式的上下文。可以在不同的使用者之間共享資訊。

pageContext對象:提供了對jsp頁面所有對象以及命名空間的通路。

三、JSP與servlet的差別和聯系

jsp:JSP(Java Server Pages)是Sun 公司指定的一種伺服器端動态頁面技術的元件規範,Jsp是以“.jsp”為字尾的檔案,在該檔案中主要是html 和少量的java 代碼。jsp 檔案在容器中會轉換成Servlet中執行。

servlet:Servlet (Server Applet)是Sun公司指定的一種用來擴充Web伺服器功能的元件規範,屬于伺服器端程式,主要功能在于互動式地浏覽和修改資料,生成動态Web内容。 借用知乎上java老師的一句話:jsp就是在html裡面寫java代碼,servlet就是在java裡面寫html代碼。

總結:

  首先說明JSP出現的背景:Servlet體系是基于B/S架構開發web應用程式,使用Servlet類将HTTP請求和響應封裝在标準JAVA類中來實作各種web應用方案的。當大量的B/S架構程式開發出來以後出現了很多問題:首先servlet類有大量備援代碼,其次是開發Servlet的沒法做到有精美的頁面效果。是以sun提出将服務端代碼添加在已經設計好的靜态頁面上,經過JSP容器對JSP檔案進行自動解析并轉換成Servlet類來交給web伺服器運作。

  是以JSP在本質上就是Servlet,但是兩者的建立方式不一樣。Servlet都是由JAVA程式代碼構成,用于流程控制和事務處理,通過Servlet來生成動态網頁很不直覺。而JSP由HTML代碼和JSP标簽構成,可以友善地編寫動态網頁.

  servlet是一個特殊的Java程式,它運作于伺服器的JVM中,能夠依靠伺服器的支援向浏覽器提供顯示内容。JSP本質上是Servlet的一種簡易形式,JSP會被伺服器處理成一個類似于Servlet的Java程式,可以簡化頁面内容的生成。Servlet和JSP最主要的不同點在于,Servlet的應用邏輯是在Java檔案中,并且完全從表示層中的HTML分離開來。而JSP的情況是Java和HTML可以組合成一個擴充名為.jsp的檔案。有人說,Servlet就是在Java中寫HTML,而JSP就是在HTML中寫Java代碼,當然這個說法是很片面且不夠準确的。JSP側重于視圖,Servlet更側重于控制邏輯,在MVC架構模式中,JSP适合充當視圖(view)而Servlet适合充當控制器(controller)。