1.1 Servlet API
包括四個包
1)javax.servlet ? ? 定義Servlet和Servlet容器之間契約的類和接口
2)javax.servlet.http ? 定義http Servlet和Sercvlet容器之間契約的類和接口
3)javax.servlet.annotation ? ?對Servlet锤躁、Filter足绅、Listener進(jìn)行標(biāo)注的注解
4)javax.servlet.descriptor ? ? ?為Web應(yīng)用程序的配置信息提供編程式訪問的類型
javax.servlet中的主要類型
interface: Servlet ServletRequest ServletResponse ServletContext ServletConfigRequestDispatcher Filter
Class ?: GenencServlet
Servlet接口作用:
Servlet容器把Servlet類加載到內(nèi)存中淳梦,并在Servlet實例中調(diào)用特定的方法绎谦。一個應(yīng)用程序中,一個Servlet類只有一個實例秽荞。
用戶請求引發(fā)Servlet容器調(diào)用一個Servlet的service方法,傳入一個ServletRequest實例和一個ServletResponse實例。
? ? ? ? ServletRequest實例:封裝當(dāng)前的http請求灵份。
? ? ? ? ServletResponse實例:當(dāng)前用戶的http響應(yīng)。
Servlet容器為每個應(yīng)用程序創(chuàng)建一個ServletContext實例哮洽。每個Servlet實例封裝一個ServletConfig填渠。
1.2 Servlet接口
定義五個方法:
void init(ServletConfig)
voidservice(ServletRequest,ServletResponse)
void destroy()
String getServletInfo()
ServletConfig getServletConfig()
init:第一次請求Servlet時,Servlet容器調(diào)用該方法
service:每次請求Servlet時鸟辅,Servlet容器調(diào)用該方法
destroy:要銷毀Servlet時氛什,Servlet容器調(diào)用該方法,通常發(fā)生在卸載應(yīng)用或者關(guān)閉Servlet容器時
getServletInfo:返回Servlet的描述
getServletConfig:返回Servlet容器傳給init方法的ServletConfig
1.3編寫基礎(chǔ)的Servlet程序
注解:
@WebServlet(name="MyServlet",urlPatterns={"/my"})
WebServlet注解類型來聲明一個Servlet匪凉,urlPatterns告訴容器哪個url調(diào)用這個Servlet
應(yīng)用程序的目錄結(jié)構(gòu)
——app
————WEB-INF
————————classes
——————————————package
——————————————————字節(jié)碼文件
————————lib
WEB-INF下只允許Servlet訪問枪眉,不允許用戶訪問
1.4 ServletRequest
對于每一個http請求,Servlet容器都會創(chuàng)建一個ServletRequest實例再层,將它傳給Servlet的service方法
ServletRequest接口中部分方法:
public int getContentLength() ? ?返回請求主體的字節(jié)數(shù)
public String getContentType() ? ? 返回請求主體的MIME類型
public String getParameter(String name) ? ?返回指定請求參數(shù)的值
public String getProtocol() ? ? 返回這個http請求的協(xié)議名稱和版本號
1.5 ServletResponse
在調(diào)用一個Servlet的service方法之前贸铜,Servlet容器會先創(chuàng)建一個ServletResponse,將它傳給service方法
ServletResponse接口中部分方法:
public PrintWriter getWriter()返回一個PrintWriter對象
1.6 ServletConfig
在Servlet容器初始化Servlet時聂受,Servlet容器將ServletConfig傳給Servlet的init方法蒿秦。
ServletConfig封裝通過@WebServlet或者部署描述符傳給一個Servlet的配置信息。
這種方式傳遞的每一條信息都稱為初始參數(shù)蛋济,由鍵和值組成棍鳖。
ServletConfig接口中部分方法:
String getInitParameter(String name) ? ? ? 獲取指定初始參數(shù)
Enumeration getInitParameterNames() ? ? 返回所有初始參數(shù)的鍵的enum對象
1.7 ServletContext
ServletContext表示Servlet應(yīng)用程序
在ServletConfig中調(diào)用getServletContext()可以獲得ServletContext對象
作用:可以共享能通過應(yīng)用程序的所有資源訪問的信息,促進(jìn)web對象的動態(tài)注冊碗旅。通過將一個內(nèi)部Map中的對象保存在ServletContext中來實現(xiàn)鹊杖。保存在ServletContext中的對象被稱為屬性attribute。
ServletContext部分方法:
Object getAttribute(String name)
EnumerationgetAttributeNames()
void setAttribute(String name,Objectobject)
void removeAttributr(String name)
1.8 GenericServlet抽象類
將init方法中的ServletConfig對象賦給一個內(nèi)部對象扛芽,通過getServletConfig()方法來獲取
為Servlet接口中的所有方法提供默認(rèn)實現(xiàn)
提供方法來封裝ServletConfig中的方法
使用中只需要覆蓋service方法即可
1.9 HTTP Servlet
javax.servlet.http中的主要類型
HttpServlet ——————>GenericServlet-------> Servlet
HttpSession
HttpServletRequest ——————>ServletRequest
HttpServletResponse ——————>ServletResponse
Cookie
HttpServlet特性:
不覆蓋service方法骂蓖,而是覆蓋DoGet或者DoPost方法
將用HttpServletRequest和HttpServletResponse代替ServletRequest和ServletResponse
HttpServletRequest 繼承ServletRequest接口
方法:
String getContextPath() ? ?返回請求context的請求URI部分
Cookie[] getCookies() ? ?返回一個cookie對象數(shù)組
String getHeader(String name) ? ? 返回http標(biāo)頭的值
String getMethod() ? ?返回請求的方法名稱
String getQueryString() ? ? 返回請求URL中的查詢字符串
HttpSession getSession() ? ?返回與請求有關(guān)的Session對象,如果沒有找到川尖,則創(chuàng)建一個新的Session對象
HttpSession getSession(boolean create) ? ?返回與請求有關(guān)的Session對象登下,如果沒有找到且未true,則創(chuàng)建一個新的Session對象
HttpServletResponse 表示HTTP環(huán)境中的Servlet響應(yīng)
方法:
void addCookie(Cookie cookie)給響應(yīng)對象添加一個cookie
void addHeader(String name,String value)給響應(yīng)對象添加一個標(biāo)頭
void sendRedirect(String location)發(fā)送響應(yīng)代號叮喳,將瀏覽器重定向到指定的位置
1.10處理HTML表單
Http輸入域或者文本域被當(dāng)做一個字符串發(fā)送到服務(wù)器被芳,用getParameter獲取
Http的select元素會給標(biāo)頭發(fā)送一個字符串,未選擇任何選項時馍悟,會發(fā)送顯示的選項值
帶有多個值得選擇元素畔濒,將發(fā)送一個字符串?dāng)?shù)組,用getParameterValues()獲取
被選中的復(fù)選框?qū)⒆址皁n”發(fā)送到服務(wù)器,未選中的復(fù)選框不發(fā)送任何內(nèi)容到服務(wù)器
單選按鈕將被選按鈕的值發(fā)送到服務(wù)器
表單中包含多個同名元素時锣咒,所有的值都會發(fā)送到服務(wù)器侵状,用getParameterValues獲取
1.11使用部署描述符
部署的一個方面是給Servlet映射配置的一條路徑
部署描述符被命名為web.xml,放在WEB-INF目錄下