Servlet學習

Server applet

概念:運行在服務器端的小程序java

  • Servlet就是一個接口,定義了Java類被瀏覽器訪問到(tomcat識別)的規則。web

  • 未來咱們自定義一個類,實現Servlet接口,複寫方法。小程序

    package com.jplus.action;
    
    import javax.servlet.*;
    import javax.servlet.http.HttpServlet;
    import java.io.IOException;
    
    public class ServletDemo implements Servlet {
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
    
        }
    
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
    //提供服務
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("hello Servlet!");
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        @Override
        public void destroy() {
    
        }
    }
  • 配置Servlet瀏覽器

    在web.xml中配置tomcat

    <!-- 配置Servelt -->
        <servlet>
            <servlet-name>Demo</servlet-name>
            <servlet-class>com.jplus.action.ServletDemo</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>Demo</servlet-name>
            <url-pattern>/Demo</url-pattern>
        </servlet-mapping>

執行原理

  1. 當服務器接收到客戶端瀏覽器請求後,會解析請求URL路徑,獲取訪問的Servlet的資源路徑
  2. 查找web.xml文件,是否有對應的 標籤體內容
  3. 若是有,則在找到對應的 全類名
  4. tomcat會將字節碼文件加載進內存,並建立其對象
  5. 調用其方法

Servlet中的生命週期

  1. 被建立:執行init方法,只執行一次安全

    • Servlet何時被建立服務器

      默認狀況:在第一次被訪問時候被建立app

      能夠配置web.xml,改變建立的時機ide

      <servlet>
              <servlet-name>Demo</servlet-name>
              <servlet-class>com.jplus.action.ServletDemo</servlet-class>
              <!--指定Servlet建立時機
              1.第一次被訪問時建立 <load-on-startup>負數
              2.服務器啓動的時候被建立 <load-on-startup>0或正數
              -->
              <load-on-startup>5</load-on-startup>
          </servlet>
    • Servlet的init方法,只執行一次,說明一個Servlet在內存中只存在一個對象,Servlet是單例的url

      多個用戶同時訪問,可能存在線程安全問題

      解決:不要再Servlet中定義成員變量,定義成員變量,不要修改值。

  2. 提供服務:執行service方法,執行屢次

    每次訪問Servlet時,Service方法都會被調用一次

  3. 被銷燬:執行destroy方法,只執行一次

    • Servlet被銷燬時執行。服務器關閉時,Servlet被銷燬
    • 只有服務器正常關閉時,纔會執行destroy方法
    • destroy方法在Servlet被銷燬以前執行,通常用於釋放資源

Servlet3.0

註解配置

  1. 選擇Servlet的版本3.0以上,能夠不建立web.xml

  2. 定義一個類,實現Servlet接口

  3. 複寫方法

  4. 使用註解

    @WebServlet(「資源路徑」)

IDEA與Tomcat相關配置

  1. IDEA會爲每個tomcat部署的項目單獨創建一份配置文件
  2. 工做空間項目和tomcat部署的web項目不同,Tomcat訪問的是「Tomcat部署的web項目」,Tomcat部署的web項目,對應着工做空間項目,web目錄下的全部資源。
  3. WEB-INF文件夾一下的文件訪問不到
  4. Tomcat項目怎麼斷點調試,點IDEA裏面的「小蟲子」

Servlet的體系結構

Servlet - -接口

GenericServlet - -抽象類

將Servlet接口中其餘方法作了默認空實現,只將service( )方法做爲抽象,

未來定義Servlet類時,能夠繼承GenericServlet,實現service( )方法便可

HttpServlet - -抽象類

定義類繼承HttpServlet

複寫doGet/doPost方法

相關文章
相關標籤/搜索