tomcat java,Servlet and Tomcat

 2023-10-17 阅读 24 评论 0

摘要:web相關概念回顧軟件架構C/S:客戶端/服務器端 B/S:瀏覽器/服務器端 資源分類tomcat java,靜態資源:所有用戶訪問后,得到的結果都是一樣的,稱為靜態資源.靜態資源可以直接被瀏覽器解析如: html,css,JavaScript 動態資源:每個用戶訪

web相關概念回顧

軟件架構

網絡通信三要素

  1. IP:電子設備(計算機)在網絡中的唯一標識。
  2. 端口:應用程序在計算機中的唯一標識。 0~65536
  3. 傳輸協議:規定了數據傳輸的規則

基礎協議:

  1. tcp:安全協議,三次握手。 速度稍慢
  2. udp:不安全協議。 速度快

web服務器軟件:

  • 服務器:安裝了服務器軟件的計算機
  • 服務器軟件:接收用戶的請求,處理請求,做出響應
    web服務器軟件:接收用戶的請求,處理請求,做出響應。
    在web服務器軟件中,可以部署web項目,讓用戶通過瀏覽器來訪問這些項目
    web容器
  • 常見的java相關的web服務器軟件:
    webLogic:oracle公司,大型的JavaEE服務器,支持所有的JavaEE規范,收費的。
    webSphere:IBM公司,大型的JavaEE服務器,支持所有的JavaEE規范,收費的。
    JBOSS:JBOSS公司的,大型的JavaEE服務器,支持所有的JavaEE規范,收費的。
    Tomcat:Apache基金組織,中小型的JavaEE服務器,僅僅支持少量的JavaEE規范servlet/jsp。開源的,免費的。

  • JavaEE:Java語言在企業級開發中使用的技術規范的總和,一共規定了13項大的規范

Tomcat:web服務器軟件

  1. 下載:http://tomcat.apache.org/
  2. 安裝:解壓壓縮包即可。
    注意:安裝目錄建議不要有中文和空格
  3. 卸載:刪除目錄就行了
  4. 啟動:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    * bin/startup.bat ,雙擊運行該文件即可* 訪問:瀏覽器輸入:http://localhost:8080 回車訪問自己http://別人的ip:8080 訪問別人* 可能遇到的問題:1. 黑窗口一閃而過:* 原因: 沒有正確配置JAVA_HOME環境變量* 解決方案:正確配置JAVA_HOME環境變量2. 啟動報錯:1. 暴力:找到占用的端口號,并且找到對應的進程,殺死該進程* netstat -ano2. 溫柔:修改自身的端口號* conf/server.xml* <Connector port="8888" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8445" />* 一般會將tomcat的默認端口號修改為80。80端口號是http協議的默認端口號。* 好處:在訪問時,就不用輸入端口號
    
  5. 關閉:

正常關閉:
bin/shutdown.bat
ctrl+c
強制關閉:
點擊啟動窗口的×
6. 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
* 部署項目的方式:1. 直接將項目放到webapps目錄下即可。* /hello:項目的訪問路徑-->虛擬目錄* 簡化部署:將項目打成一個war包,再將war包放置到webapps目錄下。* war包會自動解壓縮2. 配置conf/server.xml文件在<Host>標簽體中配置<Context docBase="D:\hello" path="/hehe" />* docBase:項目存放的路徑* path:虛擬目錄3. 在conf\Catalina\localhost創建任意名稱的xml文件。在文件中編寫<Context docBase="D:\hello" />* 虛擬目錄:xml文件的名稱* 靜態項目和動態項目:* 目錄結構* java動態項目的目錄結構:-- 項目的根目錄-- WEB-INF目錄:-- web.xml:web項目的核心配置文件-- classes目錄:放置字節碼文件的目錄-- lib目錄:放置依賴的jar包* 將Tomcat集成到IDEA中,并且創建JavaEE的項目,部署項目。

Servlet: server applet

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

Servlet就是一個接口,定義了Java類被瀏覽器訪問到(tomcat識別)的規則。
將來我們自定義一個類,實現Servlet接口,復寫方法。

快速入門:

  1. 創建JavaEE項目
  2. 定義一個類,實現Servlet接口
    public class ServletDemo1 implements Servlet
  3. 實現接口中的抽象方法
  4. 配置Servlet
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    在web.xml中配置:<!--配置Servlet --><servlet><servlet-name>myp</servlet-name><servlet-class>com.ndky.ServletDemo</servlet-class></servlet><servlet-mapping><servlet-name>myp</servlet-name><url-pattern>/myp</url-pattern></servlet-mapping>
    

執行原理:

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

Servlet中的生命周期方法:

被創建:執行init方法,只執行一次

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

提供服務:執行service方法,執行多次

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

被銷毀:執行destroy方法,只執行一次

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

Servlet3.0:

  • 好處:
    支持注解配置。可以不需要web.xml了。

  • 步驟:

  1. 創建JavaEE項目,選擇Servlet的版本3.0以上,可以不創建web.xml
  2. 定義一個類,實現Servlet接口
  3. 復寫方法
  4. 在類上使用@WebServlet注解,進行配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    @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的體系結構

    Servlet – 接口
    |
    GenericServlet – 抽象類
    |
    HttpServlet – 抽象類
  • GenericServlet:將Servlet接口中其他的方法做了默認空實現,只將service()方法作為抽象
    將來定義Servlet類時,可以繼承GenericServlet,實現service()方法即可

  • HttpServlet:對http協議的一種封裝,簡化操作

  1. 定義類繼承HttpServlet
  2. 復寫doGet/doPost方法

Servlet相關配置

  • urlpartten:Servlet訪問路徑
    一個Servlet可以定義多個訪問路徑 : @WebServlet({“/d4”,”/dd4”,”/ddd4”})
  • 路徑定義規則:
  1. /xxx:路徑匹配
  2. /xxx/xxx:多層路徑,目錄結構
  3. *.do:擴展名匹配

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 啟動

謝謝你請我吃糖果

支付寶
微信

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/143625.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息