JSP/SERVLET入門教程--Servlet 使用入門

來源:互聯網
上載者:User

  現在的JSP書籍有的是直接講述JSP的使用,然後再講解SERVERLET的使用;也有書籍是先講述SERVERLET的使用,然後講解JSP使用.個人認為第二種相對好一些,至於原因大家可以在學習體會到!所以今天我們接著學習SERVERLET的使用!

好,廢話少說,現在開始!

  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>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.