文章目錄
Servlet的小知識點
1.生命週期
- Servlet 通過調用 init () 方法進行初始化。
- Servlet 調用 service() 方法來處理客戶端的請求。
- Servlet 通過調用 destroy() 方法終止(結束)。
- 最後,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的。
2.請求轉發(Forward)和重定向(sendredirect)的區別
- Forward是在服務器端的跳轉,就是客戶端一個請求發給服務器,服務器直接將請求相關的參數的信息原封不動的傳遞到該服務器的其他jsp或Servlet去處理。
- sendredirect是在客戶端的跳轉,服務器會返回給客戶端一個響應報頭和新的URL地址,原來的參數什麼的信息如果服務器端沒有特別處理就不存在了,瀏覽器會訪問新的URL所指向的Servlet或jsp:重定向可以防止表單重複提交。
- 轉發的是同一次請求;重定向是兩次不同請求
- 轉發地址欄沒有變化;重定向地址欄有變化
3.講講filter listener 與Servlet
-
執行順序
listener(監聽器) -> filter(過濾器) -> Servlet
-
Servlet
當客戶端向服務器發出HTTP請求時,首先會由服務器中的 Web 容器(如Tomcat)對請求進行路由,交給該URL對應的 Servlet 進行處理,Servlet 所要做的事情就是返回適當的內容給用戶
-
filter
Filter 是介於 Web 容器和 Servlet 之間的過濾器,用於過濾未到達 Servlet 的請求或者由 Servlet 生成但還未返回響應。
-
listener
基於觀察者模式:Listener 用於監聽 java web程序中的事件,例如創建、修改、刪除Session、request、context等,並觸發響應的事件。比如顯示在線人數;單態登錄:一個賬號只能在一臺機器上登錄;等等全局的操作。
4.Request對象的主要方法
答:
setAttribute(String name,Object):設置名字爲name的request的參數值
getAttribute(String name):返回由name指定的屬性值
getAttributeNames():返回request對象所有屬性的名字集合,結果是一個枚舉的實例
getCookies():返回客戶端的所有Cookie對象,結果是一個Cookie數組
getCharacterEncoding():返回請求中的字符編碼方式
getContentLength():返回請求的Body的長度
getHeader(String name):獲得HTTP協議定義的文件頭信息
getHeaders(String name):返回指定名字的request Header的所有值,結果是一個枚舉的實例
getHeaderNames():返回所以request Header的名字,結果是一個枚舉的實例
getInputStream():返回請求的輸入流,用於獲得請求中的數據
getMethod():獲得客戶端向服務器端傳送數據的方法
getParameter(String name):獲得客戶端傳送給服務器端的有name指定的參數值
getParameterNames():獲得客戶端傳送給服務器端的所有參數的名字,結果是一個枚舉的實例
getParameterValues(String name):獲得有name指定的參數的所有值
getProtocol():獲取客戶端向服務器端傳送數據所依據的協議名稱
getQueryString():獲得查詢字符串
getRequestURI():獲取發出請求字符串的客戶端地址
getRemoteAddr():獲取客戶端的IP地址
getRemoteHost():獲取客戶端的名字
getSession([Boolean create]):返回和請求相關Session
getServerName():獲取服務器的名字
getServletPath():獲取客戶端所請求的腳本文件的路徑
getServerPort():獲取服務器的端口號
():獲取服務器的名字
getServletPath():獲取客戶端所請求的腳本文件的路徑
getServerPort():獲取服務器的端口號
removeAttribute(String name):刪除請求中的一個屬性