1.1 Servlet API概述:
Servlet API中四個java包
javax.servlet
javax.servlet.http 包括定義Http Servlet與Servlet容器之間契約的類和接口
javax.servlet.annotation 包含對Servlet Filter 和Listener進行標注的注解
javax.servlet.description 包含為WEB應用程序的配置信息提供編程式訪問的類型
javax.servlet 包
Servlet類通過直接實現Servlet接口或者間接拓展一個實現servlet接口的類
之後Servlet容器會把Servlet類加載到内存中。
1.2 Servlet
Servlet接口定義了5隔方法:
void init(ServletConfig config)
void service(ServletRequest req,ServletResponse resp)
void destroy()
String getServletInfo()
ServletConfig getServletConfig()
Servlet的生命周期:
init: 衹會在第一次請求Servlet時,Servlet容器會調用這個方法。通常用於初始化
service:每次請求Servlet時,Servlet容器都會調用這個方法
這個方法傳入一個ServletRequest實例:封裝當前的HTTO請求,
一個ServletResponse實例:封裝當前用戶的HTTP響應
destroy:要銷毀Servlet時,Servlet容器就會調用這個方法,通常發生在卸載應用程序或者關閉Servlet容器時。通常在這裏關閉一下資源
getServletInfo:該方法返回Servlet的描述
getServletConfig:返回由Servlet容器傳給init方法的ServletConfig
1.3 應用程序的目錄結構
放在應用程序目錄的任何資源,用戶都可以通過輸入該資源的URL直接訪問,在WEB-INF目錄下面的程序,不能被用戶訪問,衹能被Servlet訪問
1.4 ServletRequest
對於每一個HTTP請求,Servlet容器都會創建一個ServletRequest實例,并將它傳給Servlet的service方法
ServletRequest接口的方法:
int getContentLength() 返回請求主體的字節數
String getContentType() 返回請求主體的MIME類型
String getParameter(String name) 返回請求參數的值
1.5 ServletResponse
在調用一個Servlet的service方法時,Servlet容器會創建一個ServletResponse實例
ServletResponse 的getWrite方法 返回java.io.PrintWrite
1.6 ServletConfig
Servlet容器初始化Servlet時,Servlet容器會將ServletConfig傳給Servlet的init方法
ServletConfig封裝可以通過@WebServlet 或者部署描述符傳給Servlei的配置信息
ServletConfig 調用getInitParameter方法,獲取初始化信息
ServletConfig 的getServletContext方法,獲取從Servlet内部獲取ServletContext
ServletContext 表示Servlet應用程序,每個WEB應用程序衹有一個ServletContext
保存在ServletContext中的對象稱爲屬性(attribute)
ServletContext方法:
getAttribute getAttributeNames setAttribute removeAttribute
2.1 HTTP Servlet
這個service方法接收的是HttpServletRequest HttpServletResponse 實例
HttpServletRequest HttpServletResponse可以通過ServletRequest ServletResponse向下轉型得到
例如:HttpServletRequest=(HttpServletRequest)ServletRequest
HttpServlet 的service 方法會查看通常用於發送請求的HTTP方法,
並調用(doGet,doPost,doHead,doPut,doTrace,doOption和doDelete)的HTTP方法
2.2 HttpServletRequest
表示HTTP環境中的Servlet請求,繼承javax.servlet.ServletRequest接口,並增加幾個方法
String getContextPath() 返回表示請求context的請求URI部分
String getHeader(String name) 返回指定的HTTP標頭的值
Cookie[] getCookies() 返回一個Cookie對象數組
String getMethod() 返回發出這條請求的HTTP方法的名稱
HttpSession getSession() 返回與這個請求有關的session對象,如果沒有找到,則創建新的session對象
2.3 HttpServletResponse 表示HTTP環境下的Servlet響應
void addCookie(Cookie cookie) 給這個響應對象添加Cookie
void addHeader(String name,String value) 給這個響應對象添加標頭
void sendRedirect(String location) 發送響應代號,將瀏覽器重定向到指定的位置