servlet入門知識

来源:http://www.cnblogs.com/maociyuan/archive/2016/02/18/5198620.html
-Advertisement-
Play Games

什麼是Servlet?① Servlet就是JAVA 類② Servlet是一個繼承HttpServlet類的類③ 這個在伺服器端運行,用以處理客戶端的請求 Servlet相關包的介紹--javax.servlet.* :存放與HTTP 協議無關的一般性Servlet 類;--javax.servl


    1. 什麼是Servlet?
      ① Servlet就是JAVA 類
      ② Servlet是一個繼承HttpServlet類的類
      ③ 這個在伺服器端運行,用以處理客戶端的請求
    2. Servlet相關包的介紹
      --javax.servlet.* :存放與HTTP 協議無關的一般性Servlet 類;
      --javax.servlet.http.* :除了繼承javax.servlet.* 之外,並且還增加與HTTP協議有關的功能。
        (註意:大家有必要學習一下HTTP協議,因為WEB開發都會涉及到)
        所有的Servlet 都必須實現javax.servlet.Servlet 介面(Interface)。
        若Servlet程式和HTTP 協議無關,那麼必須繼承javax.servlet.GenericServlet類;
        若Servlet程式和HTTP 協議有關,那麼必須繼承javax.servlet.http.HttpServlet 類。
      --HttpServlet :提供了一個抽象類用來創建Http Servlet。
        public void doGet()方法:用來處理客戶端發出的 GET 請求
        public void doPost()方法:用來處理 POST請求
        還有幾個方法大家自己去查閱API幫助文件
      --javax.servlet包的介面:
        ServletConfig介面:
      在初始化的過程中由Servlet容器使用
        ServletContext介面:定義Servlet用於獲取來自其容器的信息的方法
        ServletRequest介面:向伺服器請求信息
        ServletResponse介面:響應客戶端請求
        Filter介面:
      --javax.servlet包的類:
        ServletInputStream類
      :用於從客戶端讀取二進位數據
        ServletOutputStream類:用於將二進位數據發送到客戶端
      --javax.servlet.http包的介面:
        HttpServletRequest介面:
      提供Http請求信息
        HttpServletResponse介面:提供Http響應
    3. Servlet生命周期
      --Servlet生命周期就是指創建Servlet實例後,存在的時間以及何時銷毀的整個過程.
      --Servlet生命周期有三個方法
        init()方法
        service()方法:Dispatches client requests to the protected service method 
        destroy()方法:Called by the servlet container to indicate to a servlet that the servlet is being taken out of service.
      --Servlet生命周期的各個階段
        ----實例化:Servlet容器創建Servlet實例
        ----初始化:調用init()方法
        ----服務:如果有請求,調用service()方法
        ----銷毀:銷毀實例前調用destroy()方法
        ----垃圾收集:銷毀實例
    4. Servlet的基本結構
        

      package cn.dragon.servlet;

      //下麵是導入相應的包

      import java.io.IOException;

      import java.io.PrintWriter;

      import javax.servlet.ServletException;

      import javax.servlet.http.HttpServlet;

      import javax.servlet.http.HttpServletRequest;

      import javax.servlet.http.HttpServletResponse;

      /**

      * 這是第一個Servlet的例子

      * @author cn.dragon

      */

      public class ServletDemoFirst extends HttpServlet {   

        //用於處理客戶端發送的GET請求   

        public void doGet(HttpServletRequest request, HttpServletResponse response)   

          throws ServletException, IOException {   

           response.setContentType("text/html;charset=GB2312"); //這條語句指明瞭向客戶端發送的內容格式和採用的字元編碼.   

           PrintWriter out = response.getWriter();    

           out.println(" 您好!"); //利用PrintWriter對象的方法將數據發送給客戶端   

           out.close();   

        }   

        //用於處理客戶端發送的POST請求   

        public void doPost(HttpServletRequest request, HttpServletResponse response)   

          throws ServletException, IOException {   

          doGet(request, response); //這條語句的作用是,當客戶端發送POST請求時,調用doGet()方法進行處理   

        }

      }

    5. Servlet的部署
        

      以下截取部分
       

      <servlet>
          <description>任意</description>
          <display-name>任意</display-name>
          <servlet-name>ServletDemoFirst</servlet-name>
          <servlet-class>cn.dragon.servlet.ServletDemoFirst</servlet-class>
        </servlet>

       <servlet-mapping>
          <servlet-name>ServletDemoFirst</servlet-name>
          <url-pattern>/servlet/ServletDemoFirst</url-pattern>
        </servlet-mapping>

       

      【註意】

        ① 上面的兩個<servlet-name>必須相同
        ② <servlet-class>後面指在對應的類上面.  技巧:你可以直接在你的servlet類中複製過來,這樣可以避免出錯!
        ③ <url-pattern> 必須是/servlet 再加servlet名字.大家現在就這麼記.

       

    6. Servlet實例演示

      package cn.dragon.servlet;

      import java.io.IOException;
      import java.io.PrintWriter;

      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;

      public class ServletDemoSecond extends HttpServlet {
         //初始化
         public void init() throws ServletException {
            System.out.println("我是init()方法!用來進行初始化工作");
         }
         //處理GET請求
         public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
            System.out.println("我是doGet()方法!用來處理GET請求");
            response.setContentType("text/html;charset=GB2312");
            PrintWriter out = response.getWriter();
            out.println("<HTML>");
            out.println("<BODY>");
            out.println("這是Servlet的例子");
            out.println("</BODY>");
            out.println("</HTML>");
         }
         //處理POST請求
         public void doPost(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
            doGet(request, response);
         }
         //銷毀實例
         public void destroy() {
            super.destroy();
            System.out.println("我是destroy()方法!用來進行銷毀實例的工作");
         }
      }

       

      web.xml文件

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app version="2.4" 
         xmlns="http://java.sun.com/xml/ns/j2ee
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

        <servlet>
          <servlet-name>ServletDemoSecond</servlet-name>
          <servlet-class>cn.dragon.servlet.ServletDemoSecond</servlet-class>
        </servlet>

        <servlet-mapping>
          <servlet-name>ServletDemoSecond</servlet-name>
          <url-pattern>/servlet/ServletDemoSecond</url-pattern>
        </servlet-mapping>

      </web-app>


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在這篇文章中,將介紹一些提高 ASP.NET Web 應用性能的方法和技巧。眾所周知,解決性能問題是一項繁瑣的工作,當出現性能問題,每個人都會歸咎於編寫代碼的開發人員。 以下為譯文 那性能問題到底該如何解決?以下是應用系統發佈前,作為 .NET 開發人員需要檢查的點。 1.debug=「false」
  • Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpo
  • 在eclipse里jsp編譯後的java和class文件的位置 eclipse版本不一樣,位置也不一樣第一種:1.java類編譯後產生的.class文件在D:\workspace\test\WEB-INF\classes下; 2.jsp產生的JAVA類文件則在D:\workspace\test\wo
  • 話說用了就要有點產出,要不然過段時間又忘了,所以在這裡就記錄一下試用Kafka的安裝過程和php擴展的試用。 實話說,如果用於隊列的話,跟PHP比較配的,還是Redis。用的順手,呵呵,只是Redis不能有多個consumer。但Kafka官方對PHP不支持,PHP擴展是愛好者或使用者寫的。下麵就開
  • 一、簡介 http://www.xuebuyuan.com/2195578.html 二、教程 http://dev.ariel-networks.com/apr/
  • 有時候,由於初期考慮不周,或者後期的需求變化,一些普通變數可能也會有線程安全的需求。
  • Java垃圾回收機制 說到垃圾回收(Garbage Collection,GC),很多人就會自然而然地把它和Java聯繫起來。在Java中,程式員不需要去關心記憶體動態分配和垃圾回收的問題,這一切都交給了JVM來處理。顧名思義,垃圾回收就是釋放垃圾占用的空間,那麼在Java中,什麼樣的對象會被認定為“
  • 安裝好Python 2.7.10 下載解壓Django Django-1.9.2.tar.gz cmd cd到解壓縮目錄(***) python setup.py install 檢測是否安裝成功 環境變數 path C:\Python27\Lib\site-packages\Django-1.9.
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...