簡述servlet


什么是Servlet?

Servlet是一種動態的web開發技術,本質就是一個運行在服務端的Java小程序,負責處理業務邏輯,生成動態web內容。

編寫一個servlet步驟:
 1.編寫一個類
  繼承HttpServlet
  重寫doGet或者doPost方法

(截圖里實現了Servlet接口,其實可以不用實現的)


 2.編寫配置文件(web-inf/web.xml)
  注冊servlet
  綁定路徑


 3.訪問
  http://主機:端口號/項目名/路徑

 例:http://localhost:8080/Servlet/ss    (Servlet包下的ss)

接受參數:  格式:key=value
 String value=request.getParameter("key")
 例如: http://localhost/day09/hello?username=tom
 request.getParameter("username")就可以獲取tom值
回寫內容:
 response
 response.getWriter().print("success");
 處理響應數據中文亂碼:
 resp.setContentType("text/html;charset=utf-8"); //建議大家放在方法中的第一行

Servlet的體系結構

  Servlet(接口)

    ↓

  GenericServlet(抽象類)

    ↓

  HttpServlet(抽象類)

    ↓

  自定義Servlet

servlet常用方法: 

    void init(ServletConfig config):初始化
      void service(ServletRequest request,ServletResponse response):服務 處理業務邏輯
           void destroy():銷毀
  
           ServletConfig getServletConfig() :獲取當前servlet的配置對象


  GenericServlet常用方法: 
  除了service方法沒有實現,其他都實現了
  空參的init();方法,是專門留給開發者重寫的方法。在init(ServletConfig config)中會調用init();但是,開發者千萬不要重寫帶有參數的這個init方法。
 
 HttpServlet常用方法:
  對service方法進行了實現,把Service的參數做了強轉,並調用了重載的Service();方法,重載的service方法根據請求方式的不同調用相應doXxx()方法(doGet和doPost方法)
  

Servlet的生命周期

Servlet是單實例,多線程的。默認第一次訪問的時候,服務器創建Servlet,並調用init方法實現初始化操作(init只會執行一次,所以是單實例),並調用一次service方法。

每當請求來的時候,服務器創建一個線程,調用service方法執行自己的業務邏輯。

當servlet被移除的時候,或者服務器正常關閉的時候,服務器調用servlet的destory方法進行銷毀操作。

正常關閉:

右鍵:

 

非正常關閉:

 

url-pattern的配置:
 方式1:完全匹配  必須以"/"開始 例如: /hello /a/b/c
 方式2:目錄匹配  必須"/"開始  以"*"結束   例如: /a/*  /*
 方式3:后綴名匹配 以"*"開始 以字符結尾 例如: *.jsp  *.do  *.action
 
 優先級:
  完全匹配>目錄匹配>后綴名匹配

總而言之:就是優先加載url-pattern比較詳細的路徑。

在Servlet標簽中有一個子標簽,Load-on-start-up,作用:用來修改servlet的初始化時機,取值:正整數  值越大優先級越低。

當我們的配置文件里面沒有指定配置的話,會查找tomcat的web.xml,
 若請求我們自己的項目處理不了,tomcat的默認的servlet會幫我們處理信息(defaultServlet),處理404之類的。

 

ServletContext上下文(全局管理者)

是一個項目的引用,代表了當前項目。

當項目啟動的時候,服務器為每一個web項目創建一個ServletContext對象。

當項目被移除或者服務器關閉的時候,銷毀ServletContext對象。

 ServletContext的作用:
  1.獲取全局的初始化參數
  2.共享資源(xxxAttribute)
  3.獲取文件資源
  4.其他操作
獲取servletcontext:
  方式1: getServletConfig().getServletContext()
  方式2: getServletContext();

常用方法:
   1.  String  getInitParameter(String key):通過名稱獲取指定的參數值
     Enumeration getInitParameterNames() :獲取所有的參數名稱 
    在根標簽下有一個 context-param子標簽 用來存放初始化參數

<context-param>
     <param-name>encoding</param-name>
     <param-value>utf-8</param-value>
    </context-param>


2.  setAttribute(String key,Object value);//設置值
     Object getAttribute(String key);//獲取值
     removeAttribute(String key)://移除值

3.
   String getRealPath(String path):獲取文件部署到tomcat上的真實路徑(帶tomcat路徑)

  運行結果:  
     InputStream getResourceAsStream(String path):以流的形式返回一個文件

4.
  獲取文件的mime類型  大類型/小類型   String getMimeType(String 文件名稱)

 

ServletContext是java四大域對象之一。

java四大域對象總結 后面會介紹。

獲取文件的路徑: 在沒有ServletContext的情況下,通過類加載器也能獲取文件的路徑:

注意:這里的文件必須放在src目錄下,不然獲取不到。

運行結果:

 

 


   

 


   
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM