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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...