來源:weixin_42010394 發(fā)布時間:2018-11-14 10:59:13 閱讀量:1154
一 Servlet
1.1通過實現(xiàn)接口方法實現(xiàn)Servlet
public class AServlet implements Servlet{
//銷毀時被調(diào)用
public void destroy() {
System.out.println("我銷毀了");
}
//獲取Servlet的配置信息
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
//獲取Servlet的介紹信息
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
//創(chuàng)建時被調(diào)用
public void init(ServletConfig arg0) throws ServletException {
System.out.println("我創(chuàng)建了");
}
//請求時被調(diào)用
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("我處理請求");
}
}
1.2 ServletConfig
ServletConfig表示Servlet的配置信息
常用方法:
String getServletName():獲取Servlet的名稱
ServletContext getServletContext():獲取Servlet的上下文(三大域,詳情見后)
Enumeration getInitParameterNames():獲取所有初始化參數(shù)的名稱
String getInitParameter(String name):根據(jù)配置名稱獲取對應(yīng)的值
引入Enumeration,這個類似于Iterator(迭代器),兩個方法,boolean hasMoreElements(); E nextElemenet()
1.3 ServletContext
Servlet的上下文,用來共享數(shù)據(jù)/傳遞數(shù)據(jù)
服務(wù)端三大域:ServletContext(或者application)
Request
Session
介紹幾種方法:
Object getAttribute(String name):獲取指定name的值
void setAttribute(String name,Object obj):往域中存指定名稱的值
void removeArrtibute(String name):去域中指定的值
String getContextPath():獲取當(dāng)前項目的路徑
String getRealPath():獲取真實路徑
Enumeration getInitParameterNames():獲取所有初始化參數(shù)的名稱
String getInitParameter(String name):根據(jù)配置名稱獲取對應(yīng)的值
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext sc=this.getServletContext();
sc.setAttribute("name", "Tom");
System.out.println(sc.getAttribute("name"));
System.out.println(sc.getContextPath());
System.out.println(sc.getRealPath("User.jsp"));
System.out.println("-------------------------------");
Enumeration<String> enu = sc.getAttributeNames();
while(enu.hasMoreElements()){
String text = enu.nextElement();
System.out.println(text+"====="+sc.getInitParameter(text));
}
}
1.4 HttpServlet
與協(xié)議有關(guān),在Http下運行
注意:Servlet是單例的,可以會出現(xiàn)線程安全問題;盡量不要創(chuàng)建有狀態(tài)的成員變量,如果非要創(chuàng)建,一定要保證只讀
二 服務(wù)端響應(yīng)
HttpServletResponse
2.1 與狀態(tài)碼相關(guān)
void setStatus(int sc):向客戶端返回響應(yīng)的狀態(tài)碼
void setStatus(int sc,String name):返回狀態(tài)碼和服務(wù)端提示信息
void sendError(int sc):返回錯誤碼
void sendError(int sc,String name):返回錯誤狀態(tài)碼和提示信息
狀態(tài)碼簡介:1代表請求未完成;2代表成功;3表示中轉(zhuǎn);4表示客戶端錯誤;5表示服務(wù)端內(nèi)部錯誤
2.2 與響應(yīng)頭相關(guān)
void setHeader(String name,String value):設(shè)置單值響應(yīng)頭
void addHeader(String name,String value):添加多值響應(yīng)頭信息
2.3 服務(wù)端響應(yīng)內(nèi)容相關(guān)
PrintWriter getWriter():返回字符輸出流,向客戶端寫數(shù)據(jù)
ServletOutputStream getOutputStream():返回字節(jié)輸出流
三 客服端請求
HttpServletRequest:封裝了客戶端的請求信息,如請求URL,請求協(xié)議,請求參數(shù)
String getMethod():獲取請求方式
String getLocalAddr():獲取本地路徑
String getLocalName():獲取本地名稱
String getRemoteAddr():獲取遠(yuǎn)程請求地址
String getRemoteUser():獲取遠(yuǎn)程請求用戶
String getRemoteHost():獲取遠(yuǎn)程主機(jī)
int getRemotePort():獲取遠(yuǎn)程端口號
int getLocalPort():獲取本地端口號
String getProtocol():獲取協(xié)議版本
String getScheme():獲取協(xié)議
String getQueryString():獲取請求參數(shù)
String getRequestURI():獲取請求資源
StringBuffer getRequestURL():獲取請求路徑
URI和URL的區(qū)別?
URI:統(tǒng)一資源標(biāo)識符,標(biāo)志網(wǎng)絡(luò)上的一個資源,如圖片,視頻音頻等
URL:統(tǒng)一資源定位符,專制網(wǎng)址
---------------------