1. 程式人生 > >Servlet一些個人理解

Servlet一些個人理解

創建 http src .cn 容器管理 mage 進行 路徑 配置

一、什麽是Servlet

  1.Servlet是一個基於Java技術的動態網頁技術,運行在服務器端,由Servlet容器管理,用於生成動態內容,是jsp( servlet進行網頁開發非常的繁瑣,所以現在一般用於流程控制)的前身。

  補充:jsp:jsp的框架是HTML,開發網頁非常簡單方便,裏面嵌套java,jsp的本質是servlet。jsp的執行過程:jsp----翻譯---->.java(servlet)----編譯---->.class-----> 執行。

  2.Servlet本質是一個實現了特定接口的java類,編寫一個servlet,實際上就是按照Servlet規範編寫了一個java類。

  3.Servlet不是由用戶或程序員直接調用,是由容器管理的,沒有main方法。

二、Servlet的生命周期

  技術分享圖片

  1.加載:

    (1)如果在web.xml中配置了<load-on-start>則在服務器啟動的時候就自動加載

    (2)沒有配置就在第一次想servlet發送請求的時候加載

  2.實例化:

    加載Servlet後,服務器創建一個Servlet實例。

    補充:在學習Spring的自動註入時,曾疑惑為什麽不能在servlet裏面進行service類的註  入。後來查詢資料,明白了,原因是:Spring不對servlet進行管理,服務器在進行加載servlet時會實例化一個對象,如果在applicationContext.xml中進行自動註入,又會創建一個對象。這兩個對象不是同一個!

  3.初始化:

    調用init()方法,Servlet初始化參數被傳遞給Servlet配置對象ServletConfiig

  4.處理請求:

    調用service()方法,該方法用於傳遞請求和響應對象,進行流程控制。從請求對象(HttpServletRequest)中獲取請求信息,處理該請求並用響應對象(HttpServletResponse)的方法返回給客戶端。也可以調用doGet(),dopost()方法。

  5.銷毀:

    當服務器不在需要Servlet,或重新裝入新的Servlet實例時,服務器會調用destroy()方法。

三、Servlet相關實現

技術分享圖片

  --Servlet必須直接或間接實現javax.servlet.Servlet接口

  --通過繼承javax.servlet.GenericServlet抽象類實現跨協議的Servlet

  --通過繼承javax.servlet.HttpServlet類實現http Servlet(常用方法)

    技術分享圖片

裏面有兩個service方法,下面的是父類的,如果用這個的話,還需要把requst和response轉為http的,所有一般直接實現上面的service方法,或者實現doGet(),doPost()方法(如果不實現會報405錯

)。

四、Servlet在web.xml中配置

  <servlet-name>用來定義servlet的名稱,該名稱在整個應用中必須是唯一的,可以隨便起

  <servlet-class>用來指定servlet的完全限定的名稱。

  <servlet-name>:Servlet的名字,唯一性和一致性,與<servlet>元素中聲明的名字一致。

  <url-pattern>:指定相對於Servlet的URL的路徑。該路徑相對於web應用程序上下文的根路徑。

  <servlet-mapping>將URL模式映射到某個Servlet,即該Servlet處理的URL。也就是說可以通過這個路徑訪問到該servlet

<servlet>
  <servlet-name>FristServlet</servlet-name>
  <servlet-class>全限定路徑FristServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>FristServlet</servlet-name>
  <url-pattern>/servlet/frist</url-pattern>
</servlet-mapping>  

  

Servlet一些個人理解