日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】

發布時間:2024/9/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • Java后端 學習路線 筆記匯總表【黑馬程序員】
  • Servlet和HTTP請求協議-學習筆記01【Servlet_快速入門-生命周期方法、Servlet_3.0注解配置、IDEA與tomcat相關配置】

  • Servlet和HTTP請求協議-學習筆記02【Servlet_體系結構與urlpartten配置、HTTP請求協議】

  • 目錄

    01 Servlet_快速入門

    Servlet_概述

    Java EE 7API doc —— servlet

    Servlet_快速入門

    Idea——實現servlet

    Servlet_執行原理

    02 Servlet_生命周期方法

    Servlet_生命周期方法

    Servlet_生命周期詳解

    03 Servlet_3.0注解配置

    Servlet_3.0注解配置

    Servlet_3.0注解配置方式1

    public @interface WebServlet {}

    Servlet_3.0注解配置方式2

    public class ServletDemo implements Servlet {}

    04 IDEA與tomcat相關配置

    IDEA與tomcat相關配置

    Tomcat 斷點調試


    01 Servlet_快速入門

    Servlet_概述

    Servlet:server applet

    * 概念:運行在服務器端的小程序。
    ?? ?* Servlet就是一個接口,定義了Java類被瀏覽器訪問到(tomcat識別)的規則。
    ?? ?* 將來我們自定義一個類,實現Servlet接口,復寫方法。

    Java EE 7API doc —— servlet

    Servlet_快速入門

    快速入門:
    ?? ?1. 創建JavaEE項目
    ?? ?2. 定義一個類,實現Servlet接口
    ?? ??? ?* public class ServletDemo1 implements Servlet {}
    ?? ?3. 實現接口中的抽象方法
    ?? ?4. 配置Servlet
    ?? ??? ? 在web.xml中配置:
    ?? ? ? ?<!--配置Servlet -->
    ?? ? ? ?<servlet>
    ?? ? ? ? ? ?<servlet-name>demo1</servlet-name>
    ?? ? ? ? ? ?<servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
    ?? ? ? ?</servlet>
    ?? ?
    ?? ? ? ?<servlet-mapping>
    ?? ? ? ? ? ?<servlet-name>demo1</servlet-name>
    ?? ? ? ? ? ?<url-pattern>/demo1</url-pattern>
    ?? ? ? ?</servlet-mapping>

    定義一個類,實現Servlet接口,實現這5個方法。

    Idea——實現servlet

    ??

    Servlet_執行原理

    執行原理:

  • 當服務器接受到客戶端瀏覽器的請求后,會解析請求URL路徑,獲取訪問的Servlet的資源路徑。
  • 查找web.xml文件,是否有對應的<url-pattern>標簽體內容。
  • 如果有,則在找到對應的<servlet-class>全類名。
  • tomcat會將字節碼文件加載進內存,并且創建其對象。
  • 調用其方法。
  • 02 Servlet_生命周期方法

    Servlet_生命周期方法

    Servlet中的生命周期方法:

  • 被創建:執行init方法,只執行一次。
  • 提供服務:執行service方法,執行多次。
  • 被銷毀:執行destroy方法,只執行一次。
  • package cn.itcast.web.servlet;import javax.servlet.*; import java.io.IOException;/*** Servlet的方法*/ public class ServletDemo2 implements Servlet {/*** 初始化方法* 在Servlet被創建時,執行。只會執行一次** @param servletConfig* @throws ServletException*/@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("init...");}/*** 獲取ServletConfig對象* ServletConfig:Servlet的配置對象** @return*/@Overridepublic ServletConfig getServletConfig() {return null;}/*** 提供服務方法* 每一次Servlet被訪問時,執行。執行多次** @param servletRequest* @param servletResponse* @throws ServletException* @throws IOException*/@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("service...");}/*** 獲取Servlet的一些信息,版本、作者等...** @return*/@Overridepublic String getServletInfo() {return null;}/*** 銷毀方法* 在服務器正常關閉時(Servlet銷毀),執行,執行一次。*/@Overridepublic void destroy() {System.out.println("destroy...");} }

    Servlet_生命周期詳解

    * Servlet中的生命周期方法:
    ?? ?1. 被創建:執行init方法,只執行一次。
    ?? ??? ?* Servlet什么時候被創建?
    ?? ??? ??? ?* 默認情況下,第一次被訪問時,Servlet被創建。
    ?? ??? ??? ?* 可以配置執行Servlet的創建時機。
    ?? ??? ??? ??? ?* 在<servlet>標簽下配置
    ?? ??? ??? ??? ??? ?1. 第一次被訪問時,創建
    ? ? ? ? ? ? ? ? ?? ??? ?* <load-on-startup>的值為負數
    ?? ??? ? ? ? ? ? ? ?2. 在服務器啟動時,創建
    ?? ??? ? ? ? ? ? ? ? ? ?* <load-on-startup>的值為0或正整數
    ?? ??? ?* Servlet的init方法,只執行一次,說明一個Servlet在內存中只存在一個對象,Servlet是單例的。
    ?? ??? ??? ?* 多個用戶同時訪問時,可能存在線程安全問題。
    ?? ??? ??? ?* 解決:盡量不要在Servlet中定義成員變量。即使定義了成員變量,也不要修改其值(避免并發操作)。

    ?? ?2. 提供服務:執行service方法,執行多次。
    ?? ??? ?* 每次訪問Servlet時,Service方法都會被調用一次。

    ?? ?3. 被銷毀:執行destroy方法,只執行一次。
    ?? ??? ?* Servlet被銷毀時執行。服務器關閉時,Servlet被銷毀。
    ?? ??? ?* 只有服務器正常關閉時,才會執行destroy方法。
    ?? ??? ?* destroy方法在Servlet被銷毀之前執行,一般用于釋放資源。

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><!--配置Servlet --><servlet><servlet-name>demo1</servlet-name><servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class></servlet><servlet-mapping><servlet-name>demo1</servlet-name><url-pattern>/demo1</url-pattern></servlet-mapping><!--配置Servlet --><servlet><servlet-name>demo2</servlet-name><servlet-class>cn.itcast.web.servlet.ServletDemo2</servlet-class><!--指定Servlet的創建時機1.第一次被訪問時,創建* <load-on-startup>的值為負數(默認值為-1)2.在服務器啟動時,創建* <load-on-startup>的值為0或正整數--><load-on-startup>-5</load-on-startup></servlet><servlet-mapping><servlet-name>demo2</servlet-name><url-pattern>/demo2</url-pattern></servlet-mapping></web-app>

    03 Servlet_3.0注解配置

    Servlet_3.0注解配置

    * Servlet3.0:
    ?? ?* 好處:
    ?? ??? ?* 支持注解配置。可以不需要web.xml了。

    ?? ?* 步驟:
    ?? ??? ?1. 創建JavaEE項目,選擇Servlet的版本3.0以上,可以不創建web.xml
    ?? ??? ?2. 定義一個類,實現Servlet接口
    ?? ??? ?3. 復寫方法
    ?? ??? ?4. 在類上使用@WebServlet注解,進行配置
    ?? ??? ??? ?* @WebServlet("資源路徑")

    Servlet_3.0注解配置方式1

    public @interface WebServlet {}

    按住“Ctrl鍵”,點擊“WebServlet”:

    ??

    @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface WebServlet {String name() default ""; // 相當于<Servlet-name>String[] value() default {}; // 代表urlPatterns()屬性配置String[] urlPatterns() default {}; // 相當于<url-pattern>int loadOnStartup() default -1; // 相當于<load-on-startup>WebInitParam[] initParams() default {};boolean asyncSupported() default false;String smallIcon() default "";String largeIcon() default "";String description() default "";String displayName() default ""; }

    Servlet_3.0注解配置方式2

    public class ServletDemo implements Servlet {}

    package cn.itcast.web.servlet;import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException;@WebServlet("/demo2") public class ServletDemo implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("Servlet3.0來了...");}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {} }

    04 IDEA與tomcat相關配置

    IDEA與tomcat相關配置

    1. IDEA會為每一個tomcat部署的項目單獨建立一份配置文件。
    ?? ?* 查看控制臺的log:Using CATALINA_BASE: ? "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\_itcast"

    2. 工作空間項目和tomcat部署的web項目
    ?? ?* tomcat真正訪問的是“tomcat部署的web項目”,"tomcat部署的web項目"對應著"工作空間項目"的web目錄下的所有資源。
    ?? ?* WEB-INF目錄下的資源不能被瀏覽器直接訪問。

    3. 斷點調試:使用"小蟲子"啟動(dubug 啟動)

    Tomcat 斷點調試

    總結

    以上是生活随笔為你收集整理的Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。