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


  如今的JSP書籍有的是直接講述JSP的使用,然后再解說SERVERLET的使用;也有書籍是先講述SERVERLET的使用,然后解說JSP使用.個人覺得另外一種相對好一些,至於原因大家能夠在學習體會到!所以今天我們接着學習SERVERLET的使用!

好,廢話少說,如今開始!

  1. 什么是Servlet?
    ① Servlet就是JAVA 類
    ② Servlet是一個繼承HttpServlet類的類
    ③ 這個在server端執行,用以處理client的請求
  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()方法:用來處理client發出的 GET 請求
      public void doPost()方法:用來處理
     POST請求
      還有幾個方法大家自己去查閱API幫助文件
    --javax.servlet包的接口:
      ServletConfig接口:
    在初始化的過程中由Servlet容器使用
      ServletContext接口:定義Servlet用於獲取來自其容器的信息的方法
      ServletRequest接口:向server請求信息
      ServletResponse接口:響應client請求
      Filter接口:
    --javax.servlet包的類:
      ServletInputStream類
    :用於從client讀取二進制數據
      ServletOutputStream類:用於將二進制數據發送到client
    --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 {   

      //用於處理client發送的GET請求   

      public void doGet(HttpServletRequest request, HttpServletResponse response)   

        throws ServletException, IOException {   

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

         PrintWriter out = response.getWriter();    

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

         out.close();   

      }   

      //用於處理client發送的POST請求   

      public void doPost(HttpServletRequest request, HttpServletResponse response)   

        throws ServletException, IOException {   

        doGet(request, response); //這條語句的作用是。當client發送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>


免責聲明!

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



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