當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Java知识整理——ServletJSP
生活随笔
收集整理的這篇文章主要介紹了
Java知识整理——ServletJSP
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Servlet
servlet是用來處理客戶端請求并生成動態web內容的Java程序語言類。Servlets大多是用來處理或者存儲HTML表單提交的數據,提供動態內容和管理那些不在HTTP無狀態協議中的狀態信息。
核心抽象概念肯定是所有servlet必須實現 javax.servlet.Servlet 接口。 每個 servlet 必須直接或者間接實現這個接口, 也可以繼承于 javax.servlet.GenericServlet 或者javax.servlet.http.HTTPServlet。最后想提的是,每個 servlet 能夠使用多線程服務多個請求。
一個 Applet 是一個跑在客戶機器的 網頁瀏覽器 里面的 客戶端java程序。相反,一個 servlet 是跑在網頁服務器的服務的容器。一個 applet 能使用用戶界面class, 而一個 servlet 不能夠有一個用戶界面。相反,一個servlet 等待客戶端的 HTTP 請求并為每一個請求生成一個響應。
GenericServlet 是一個實現了Servlet 和 ServletConfig 接口的通用的協議無關的 servlet . 那些繼承于GenericServlet 類的 servlet 將重寫 service 方法 。最后想提的是,為了給Web用戶開發一個使用HTTP協議服務的HTTP servlet, 你的 servlet 必須改為繼承于 HttpServlet 。查看Servlet的示例 。
對每一個客戶端的請求,這個Servlet引擎加載servlet和調用它的init方法,以便在servlet初始化。然后, Servlet對象處理所有從客戶端來的后續請求,通過為每個請求單獨調用服務的方法。最后,該servlet調用服務器的destroy方法。
doGet : GET方法附加請求的URL的名稱 - 值對。因此,存在客戶端的請求字符數量的限制。此外,該請求的參數值為可見,因此,如果有敏感信息不能采用這種方式。
doPost: POST方法克服了GET請求的限制,將發送請求的值置于body里。此外,發送值的數量沒有限制。最后,通過POST請求傳遞的敏感信息是不可見的
web應用是web服務的延伸. 主要有兩種類型:面向視覺的和面向服務的. 面向視覺型的應用通過編輯語言來動態展示交互頁面. 面向應用的則提供了后端的service.總的來說,就是一堆置于 server’s URL明明空間下的servlets.
服務端包含是服務端的一種簡單腳本語言,主要應用在Web方面,置于servlet標簽中. 最常用的地方就是在網頁中引入一個或多個文件. 當瀏覽器加載頁面時,使用servlet產生的超文本替換其標簽.
Servlet 鏈是指將上一個servlet的結果傳到下一個.第二個的結構又可以傳到第三個. 最后的servlet負責將響應回復給客戶端.
ServletRequest類可以獲取客戶端的IP地址或主機名. getRemoteAddr()獲取IP getRemoteHost()獲取主機名. 示例如下 here.
HTTP response 包括了三個部分:
Status Code: 描述了這次回應的狀況. 它可以用來檢查這次請求是否成功完成. 一旦請求失敗了, 這個status code可以用來尋找原因. 如果你的 servlet 沒有返回一個status code, 默認就會返回成功的status code, HttpServletResponse.SC_OK.
HTTP Headers: 它包含了response的更多信息.舉個例子,headers可以反應response的訪問date/time, 或者是用于將實體安全地傳送到用戶的編碼形式。可以閱讀 how to retrieve headers in Servlet here.
Body: 它是response的具體內容. 可能包括HTML內容,比如圖片。Body包括了緊接Header發送的HTTP事務消息數據字節。
Cookie是Web服務器發送到瀏覽器的一小塊信息,瀏覽器為每個Web服務器在本地文件中存儲cookie。 在以后的請求里, 瀏覽器對特定的Web服務器,將request和所有特定的Web服務器的cookie一起發送。Session和Cookie之間的區別如下:
Session無論在客戶端瀏覽器的設置都可以工作。客戶端可以選擇禁用cookies。然而,Session仍然可以工作,因為客戶端沒有能力在服務器端禁用Session。
Session和cookie也有不同的信息存儲量。 HTTP會話能夠存儲任何Java對象,而一個cookie只能保存String對象。
HTTP協議.
通道是指使用 HTTP或 HTTPS 封裝其它的網絡協議. HTTP包裝了其他的網絡通信協議. 其它協議通過HTTP來發送請求的過程就使用了通道.
sendRedirect創建一個新的請求, forward只是將請求轉發.之前請求中包含的對象在redirect后將不可用, 因為產生了一個新的請求. 但是 forwarding不受此限制.通常來說,sendRedirect 比 forward 方法慢一些.
URL編碼就是替換其中的空格和特殊字符, 變成相應的Hex碼.解碼就是反向操作。
JSP
一個JSP頁面是一個文本文檔,包含了兩種類型的文本:靜態數據和JSP元素。靜態數據可以以任何一種基于文本的格式表達,比如HTML或者XML。JSP是一種混合了靜態內容與動態生成內容的技術。查看JSP例子
一個JSP請求的到來,瀏覽器首先以一個jsp擴展的文件名來請求一個頁面。然后,Web Server讀取到該請求,使用JSP編譯器將JSP頁面轉換為一個servlet類。注意JSP文件只在該頁面的第一次請求或者JSP文件已經改變時才編譯。生成的servlet類被調用,去處理瀏覽器的請求。一旦請求處理完,servlet會向客戶端返回一個相應。查看如何獲取JSP請求中的參數
使用JSP技術有以下優勢:
JSP網頁被動態的編譯,因此開發者很容易更新當前代碼。
JSP網頁可預編譯。
JSP網頁能容易的組合成靜態模版,包括HTML XML片段,且代碼可形成動態內容。
開發者能提供自定義的JSP標簽庫,且使用類XML語法訪問。
開發者可以在組件級別做邏輯上的改變,但是不能使用程序邏輯編輯個別的網頁。
指令是JSP引擎所處理的命令,當網頁被編譯成小程序時,指令用于去設置頁面級別的命令,從外部文件插入數據,指定自定義的標簽庫。指令被包括在<%@ 和%>內。指令的類型分為:
包含指令:用于包含文件,和當用頁面合并文件內容。
頁面指令:用于定義JSP頁面的具體屬性,比如錯誤頁面和緩沖池。
標簽庫:用于聲明頁面中使用到的自定義標簽庫。
JSP的actions是使用XML語法結構來控制Servlet引擎的行為。JSP的actions是在當JSP頁面請求的時候才執行。它們會動態插入一個文件中,再利用JavaBeans的組件,轉發給用戶到另一個頁面,或者生成帶Java插件的HTML頁面。以下是一些可以操作的actions:
jsp:include- 當JSP頁面被請求的時候,包含了一個文件。
jsp:useBean- 尋找或者實例化一個JavaBean。
jsp:setProperty- 設置JavaBean的屬性。
jsp:getProperty- 得到JavaBean的屬性。
jsp:forward- 轉發請求到新的頁面。
jsp:plugin- 生成特定瀏覽器的代碼。
在Java Server Page(JSP)技術中,scriptlet是嵌入在JSP頁面的其中一塊Java代碼。scriptlet是標簽內的任何東西。在這些標簽之間,用戶可以添加任何有效的scriptlet。
聲明類似于Java中的變量聲明。聲明是為表達式或者scriptlets后續的使用而聲明的變量。添加一個聲明,你必須在你的聲明中使用序列。
JSP表達式是把一個腳本語言表達式的值插入進來,轉換成字符串,進入數據流之后再通過web服務器返回給客戶端。表達式的定義是在<% = 和 %>標簽之間。
JSP隱式對象是指JSP容器在每頁中提供給開發人員的Java對象。開發人員可以直接調用他們,而不需要任何顯示聲明。JSP隱式對象也被稱為預定義變量。以下對象都是在JSP頁面中隱式存在的:
application
page
request
response
session
exception
out
config
pageContext
總結
以上是生活随笔為你收集整理的Java知识整理——ServletJSP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java知识整理——垃圾回收
- 下一篇: Java知识整理——异常处理