Servlet簡單介紹(二)

前言

    前面說到Servlet的由來、工作流程及創建等,這篇文章繼續說下servlet的API。

正文

一、概覽-Servlet API中主要的接口和類

這裏寫圖片描述

二、Servlet 接口

    要編寫一個Servlet,需要實現javax.servlet.Servlet接口,該接口定義了5個方法

//1、Servlet容器通過ServletConfig 參數向Servlet傳遞配置信息
public void init(ServletConfig  config) throws ServletException
//2、處理客戶端的請求
public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException
//3、 釋放Servlet 對象的資源,隨後該對象會被java的垃圾收集器所回收
public  void destory()
//4、ServletConfig對象包含了Servlet的初始化參數,傳遞給init方法
public ServletConfig getSevletConfig()
//5、該方法返回關於Servlet的信息
public java.lang.string getServletInfo()

三、ServletResquest 和 ServletResoponse 接口

    Servlet 由 Servlet 容器來管理,當客戶請求到來時,容器創建一個ServletRequest 對象,封裝請求數據,同時創建一個ServletResponse對象,封裝響應數據。Servlet利用ServletRequest對象處理客戶端發來的請求數據,利用ServletResponse對象發送響應數據。
    這兩種對象常用的方法在這裏就不做介紹了,用到了可以去查看API 文檔。

四、ServletConfig 接口

    Servlet 容器使用ServletConfig對象在Servlet初始化期間向它傳遞配置信息,一個Servlet只能有一個ServletConfig對象。

// 返回名字爲name 的初始化參數的值,該初始化參數在web.xml配置文件中進行配置
public java.lang.String getInitParameter(java.lang.String name)
// 返回Servlet所有初始化參數的名字的枚舉集合 
public java.util.Enumeration getInitParameterNames() 
// 返回Servlet上下文對象的引用
public ServletContext getServletContext()
//返回Servlet 實例的名字,這個名字是在Web應用程序的web.xml配置文件中指定的
public java.lang.String getServletName()

五、GenericServlet 類

爲了簡化Servlet 的編寫,在javax.servlet包中提供了一個抽象的類GenericServlet,她給出了除service()方法外的其他4個方法的簡單實現。GenericServlet類定義了一個通用的、不依賴於具體協議的Servlet,它實現了Servlet接口和ServletConfig接口。

public abstract class GenericServlet extends java.lang.Object implements Servlet,ServletConfig,java.io.Serializable  

如果我們要編寫一個通用的Servlet,只需要從GenericServlet類繼承,並實現其中的抽象方法service()。
在GenericServlet類中,定義了兩個重載的init()方法:

public void init(ServletConfig config) throws ServletException 
public vid init() throws ServletException 

第一個init()方法是Servlet接口中init()方法的實現。在這個方法中,首先講ServletConfig 對象保存在一個transient實例變量中(用transient關鍵字標記的成員變量不參與序列化過程),然後調用第二個不帶參數的init()方法。

六、HttpServlet

    爲了快遞開發應用於HTTP協議的Servlet 類,Sun公司在javax.servlet.http 包中提供了一個抽象的類HttpServlet,它繼承自GenericServlet類,用於創建適合web站點的HTTP Servlet.

public abstract class HttpServlet extends GenericServvlet implements java.io.Serializable 

    在HttpServlet類中提供了兩個重載的service()方法:

public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException 
protected void service(HttpServletRequest req,HttpServletResponse res) throws ServletException,java.io.IOException 

    第一個service()方法是GenericServlet類中service()方法的實現,這個方法中,首先將req和res對象轉換爲HttpServletRequest(繼承自ServletRequest 接口)和HttpServletResponse(繼承自ServletResponset 接口)類型,然後調用第二個service() 方法,對客戶請求進行處理。

七、HttpServletRequest 和 HttpServletResponse接口

HttpServletRequest中的方法 描述
getContextPath() 返回請求上下文的部分
getCookies() 返回客戶端在此次請求中發送的所有Cookie對象
getHeader(String name) 返回名字爲name的請求報頭的值
getMethod() 返回此次請求所使用的HTTP方法的名字
getQueryStrig() 返回請求URL中在路徑後面的查詢字符串
HttpServletResponse中的方法 描述
addCooke(Cookie cookie) 增加一個Cookie到響應中
addHeader(String name,String value)() 用給出的name和value 增加一個響應報頭到響應中
contaisHeader(String name) 判斷以name爲名字的響應報頭是否已經設置
sendRedirect(String location) 發送一個臨時的重定向響應到客戶端,讓客戶端訪問新的URL
setStatus(int sc) 爲響應設置狀態代碼

總結

     感謝您的閱讀,在一次次http 請求和響應中不斷熟悉以上內容,下期再會!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章