1. 程式人生 > >Servlet基礎

Servlet基礎

void oid java http 方法 iter gets tee web服務

1:為什麽需要Servlert?

:在jsp技術出現之前,如果想動態成HTML頁面,那就只有在服務器端運行Java程序,並生成HTML格式的內容。Servlet就是運行在服務前端的Java程序。

1-1:JSP開發Web程序流程圖

技術分享圖片

1—2:Servlet開發Web流程圖

技術分享圖片

2:什麽是Servlet?

:瀏覽器發送一個HTTP請求,HTTP請求由Web容器分配給特定的Servlet進行處理,Servlet的本質是一個Java對象,這個對象擁有一系列的方法來處理HTTP請求。常見的方法有doGet(),doPost()等。Web容器中包含了多個Servlet,特定的HTTP請求該由哪一個Servlet來處理是由Web容器中的web.xml來決定的。

Servlet是一個符合特定規範的Java程序,是一個基於Java技術的web組件,運行在服務器端,由Servlet容器所管理用於生成動態的內容,Servlet是平臺獨立的Java類,編寫一個Servlet,實際上就是按照Servlet規範編寫的一個Java類,它主要用於處理客戶端請求並做出響應,

技術分享圖片

3:Servletr容器?

:Servlet容器也叫作Servlet引擎,是Web服務器或應用程序服務器的一部分,用於在發送的請求和響應之上提供網絡服務,管理和運行Servlet/jsp的容器也稱為Web容器,

4:Servlet與JSP的關系?

1.JSP是Servlet技術的擴展,本質上是Servlet的簡易方式,更強調應用的外表達。

2.JSP編譯後是"類servlet"。

3.Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java文件中,並且 完全 從表示層中的HTML裏分離開來。而JSP的情況是Java和HTML可以組 成一個擴展 名 為.jsp的文件。JSP側重於視圖,Servlet主要用於控制邏輯。

JSP在運行時會被Web容器翻譯成一個Servlet.

5:Servlet接口常用的方法:

方法名稱

功能描述

public void init(ServletConfig config)

由servlet容器調用,用於完成Servlet對象在處理客戶請求前的初始化工作。

public void service(ServletRequest request, ServletResponse response)

由servlet容器調用,用於處理客戶端的請求

public void destroy()

由servlet容器調用,釋放Servlet對象所使用的資源

public ServletConfig getServletConfig()

返回ServletConfig對象,該對象包含此senvlet的初始化和啟動參數。返回的ServletConfig對象是傳遞給init( )方法的對象

public String getServletInfo()

返回有關servlet的信息,如作者、版本和版權。返回的字符串是純文本,而不是任何種類的標記(如HTML、XML等)

6:抽象類GenericServlet的常用方法

方法名稱

功能描述

public void init(ServletConfig config)

調用Servlet接口中的init()方法。此方法還有一個無參的重載方法,其功能與此方法相同

public String getInitParameter(Stringname)

返回名稱為name的初始化參數的值

public ServletContextgetServletContext()

返回ServletContext對象的引用

7:抽象類HttpServlet:

抽象類HttpServlet繼承自GenericServlet類,具有與GenericServlet類似的方法和對象,支持HTTP的post()和get()方法,並提供了與HTTP相關的實現。

HttpServlet能夠根據客戶發出的HTTP請求,進行相關的處理,並得到相應的結果,然後此結果被自動封裝到HttpServletRequest對象中。

HTTPServlet的常用方法:

方法名稱

功能描述

public void service(ServletRequest request, ServletResponse response)

調用GenericServlet類中service()方法的實現

public void service(HttpServletRequest request, HttpServletResponse response)

接收HTTP請求,並將它們分發給此類中定義的doXxx方號

protected void doXXX(HttpServletRequest request, HttpServletResponse response)

|根據請求方式的不同,分別調用相應的處理方法,如doGet(),doPost()等

HttpServletserviceHttpServletRequest request, HttpServletResponse )相當於一個分發器,可以根據請求方法的類型,調用相應的doXXX()方法,所以在編寫Servlet時只需要根據應用的需求,重新寫doGet()或者doPost()方法即可。

HttpServlet類是一個抽象類,如果需要編寫Servlet就需要繼承HttpServlet類,從中需要響應到客戶端的數據封裝到HttpServletResponse對象中,

8ServletConfig接口;

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

ServletConfig的常用方法:

方法名稱

功能描述

public void getInitParameter(String name)

獲取web.xml中設置的以name命名的初始化參數值

public ServletContext getServletContext()

返回Servlet的上下文對象的引用

9:ServletContext對象的常用方法:

方法名稱

功能描述

public String getInitParameter(String name)

獲取名稱為name的系統範圍內的初始化參數,系統範圍內的初始化處參數可以在部署描述符中使用<context-param>元素定義

public void setAttribute(String name,Object object)

設置名稱為name的屬性

public Object getAttribute(String name)

獲取名稱為name的屬性

public String getRealpath(String path)

返回參數所代表目錄的真實路徑

public void log(String messge)

記錄一般日誌

10:ServletRequestrian接口的常用方法

方法名稱

功能描述

public Object getAttribute(String name)

獲取名稱為name的屬性值

public void setAttibute(String name,Object object)

在請求中保存名稱為name的屬性

public void removeAttribute(String name)

清除請求中名字為name的屬性

11:httpServletRequest接口常用方法

方法名稱 功能描述
public String getContextPath() 返回請求URL中表示請求上下文的路徑,上下文路徑時請求URL的開始部分
public Cookie[] getCookies() 返回客戶端在此次請求中發送的所有cookie對象
public HttpSession getsession() 返回和此次請求相關聯的session,如果沒有給客戶端分配session,則會創建一個新的session
public String getMethod() 返回此次請求所使用的HTTP方法的名字,如GET,POST

12:ServletResponse接口常用方法:

方法名稱

功能描述

public PrintWrite getWriter()

返回PrintWrite對象,用於向客戶端發送文本

public String getCharacteEncoding()

返回在響應發送的正文所使用的字符編碼集

public void setCharacterEncoding()

設置發送到客戶端的響應市委字符編碼

public void setContentType(String type)

設置發送到客戶端響應的內容類型,此時響應的狀態屬於尚未提交

13:httpServletResponse接口:

方法 名稱 功能描述
public void addCookie(Cookie cookie) 增加一個cookie到響應中,這個方法可多次調用,設置多個cookie
public void addHeader(String name,String value) 將一個名稱為name,值為value的響應報頭添加到響應中
public void sendRedirect(String location) 發送一個臨時的的重定向響應到客戶端,以便客戶端訪問新的URL
public void encodeURL(String url) 使用session ID對用於重定向的URL進行編碼

14:Servlet的生命周期

技術分享圖片技術分享圖片

Servlet基礎