JavaWeb-1

Tomcat服務器

image
image

修改tomcat端口號

點擊conf下server.xml 的第69行

 <Connector port="8888" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

其中80端口不要訪問時添加

web相關(guān)概念回顧

  1. 軟件架構(gòu)
    1. C/S:客戶端/服務器端
    2. B/S:瀏覽器/服務器端
  2. 資源分類
    1. 靜態(tài)資源:所有用戶訪問后俐载,得到的結(jié)果都是一樣的贮泞,稱為靜態(tài)資源.靜態(tài)資源可以直接被瀏覽器解析 如: html,css,JavaScript
    2. 動態(tài)資源:每個用戶訪問相同資源后耸棒,得到的結(jié)果可能不一樣流纹。稱為動態(tài)資源。動態(tài)資源被訪問后剪廉,需要先轉(zhuǎn)換為靜態(tài)資源铅祸,在返回給瀏覽器作箍,如:servlet/jsp,php,asp...
  3. 網(wǎng)絡通信三要素
    1. IP:電子設備(計算機)在網(wǎng)絡中的唯一標識硬梁。
    2. 端口:應用程序在計算機中的唯一標識。 0~65536
    3. 傳輸協(xié)議:規(guī)定了數(shù)據(jù)傳輸?shù)囊?guī)則
      1. 基礎協(xié)議:
        1. tcp:安全協(xié)議胞得,三次握手荧止。 速度稍慢
        2. udp:不安全協(xié)議。 速度快

web服務器軟件:

  • 服務器:安裝了服務器軟件的計算機
  • 服務器軟件:接收用戶的請求阶剑,處理請求跃巡,做出響應
  • web服務器軟件:接收用戶的請求,處理請求牧愁,做出響應素邪。
    • 在web服務器軟件中,可以部署web項目猪半,讓用戶通過瀏覽器來訪問這些項目
    • web容器
  • 常見的java相關(guān)的web服務器軟件:
    • webLogic:oracle公司兔朦,大型的JavaEE服務器,支持所有的JavaEE規(guī)范磨确,收費的沽甥。
    • webSphere:IBM公司,大型的JavaEE服務器乏奥,支持所有的JavaEE規(guī)范摆舟,收費的。
    • JBOSS:JBOSS公司的,大型的JavaEE服務器恨诱,支持所有的JavaEE規(guī)范媳瞪,收費的。
    • Tomcat:Apache基金組織照宝,中小型的JavaEE服務器蛇受,僅僅支持少量的JavaEE規(guī)范servlet/jsp。開源的硫豆,免費的龙巨。
      JavaEE:Java語言在企業(yè)級開發(fā)中使用的技術(shù)規(guī)范的總和,一共規(guī)定了13項大的規(guī)范
* Tomcat:web服務器軟件
    1. 下載:http://tomcat.apache.org/
    2. 安裝:解壓壓縮包即可熊响。
        * 注意:安裝目錄建議不要有中文和空格
    3. 卸載:刪除目錄就行了
    4. 啟動:
        * bin/startup.bat ,雙擊運行該文件即可
        * 訪問:瀏覽器輸入:http://localhost:8080 回車訪問自己
                          http://別人的ip:8080 訪問別人

        * 可能遇到的問題:
            1. 黑窗口一閃而過:
                * 原因: 沒有正確配置JAVA_HOME環(huán)境變量
                * 解決方案:正確配置JAVA_HOME環(huán)境變量

            2. 啟動報錯:
                1. 暴力:找到占用的端口號,并且找到對應的進程诗赌,殺死該進程
                    * netstat -ano
                2. 溫柔:修改自身的端口號
                    * conf/server.xml
                    * <Connector port="8888" protocol="HTTP/1.1"
                       connectionTimeout="20000"
                       redirectPort="8445" />
                    * 一般會將tomcat的默認端口號修改為80汗茄。80端口號是http協(xié)議的默認端口號。
                        * 好處:在訪問時铭若,就不用輸入端口號
    5. 關(guān)閉:
        1. 正常關(guān)閉:
            * bin/shutdown.bat
            * ctrl+c
        2. 強制關(guān)閉:
            * 點擊啟動窗口的×
    6. 配置:
        * 部署項目的方式:
            1. 直接將項目放到webapps目錄下即可洪碳。
                * /hello:項目的訪問路徑-->虛擬目錄
                * 簡化部署:將項目打成一個war包,再將war包放置到webapps目錄下叼屠。
                    * war包會自動解壓縮

            2. 配置conf/server.xml文件
                在<Host>標簽體中配置
                <Context docBase="D:\hello" path="/hehe" />
                * docBase:項目存放的路徑
                * path:虛擬目錄

            3. 在conf\Catalina\localhost創(chuàng)建任意名稱的xml文件瞳腌。在文件中編寫
                <Context docBase="D:\hello" />
                * 虛擬目錄:xml文件的名稱

        * 靜態(tài)項目和動態(tài)項目:
            * 目錄結(jié)構(gòu)
                * java動態(tài)項目的目錄結(jié)構(gòu):
                    -- 項目的根目錄
                        -- WEB-INF目錄:
                            -- web.xml:web項目的核心配置文件
                            -- classes目錄:放置字節(jié)碼文件的目錄
                            -- lib目錄:放置依賴的jar包

Servlet: server applet

  • 概念:運行在服務器端的小程序
    • Servlet就是一個接口,定義了Java類被瀏覽器訪問到(tomcat識別)的規(guī)則镜雨。
    • 將來我們自定義一個類嫂侍,實現(xiàn)Servlet接口,復寫方法荚坞。
快速入門
  1. 創(chuàng)建JavaEE項目
  2. 定義一個類挑宠,實現(xiàn)Servlet接口
import javax.servlet.Servlet;
public class ServletDemo1 implements Servlet

  1. 實現(xiàn)接口中的抽象方法
  2. 配置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>com.neusoft.servletdemo.ServletDemo1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo1</servlet-name>
        <url-pattern>/demo1</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>demo2</servlet-name>
        <servlet-class>com.neusoft.servletdemo.ServletDemo2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo2</servlet-name>
        <url-pattern>/hehe</url-pattern>
    </servlet-mapping>
</web-app>

  • 執(zhí)行原理:

    1. 當服務器接受到客戶端瀏覽器的請求后,會解析請求URL路徑颓影,獲取訪問的Servlet的資源路徑
    2. 查找web.xml文件各淀,是否有對應的<url-pattern>標簽體內(nèi)容。
    3. 如果有诡挂,則在找到對應的<servlet-class>全類名
    4. tomcat會將字節(jié)碼文件加載進內(nèi)存碎浇,并且創(chuàng)建其對象
    5. 調(diào)用其方法
  • Servlet中的生命周期方法:

    1. 被創(chuàng)建:執(zhí)行init方法,只執(zhí)行一次
    • Servlet什么時候被創(chuàng)建璃俗?
    • 默認情況下奴璃,第一次被訪問時,Servlet被創(chuàng)建
    • 可以配置執(zhí)行Servlet的創(chuàng)建時機旧找。
    • 在<servlet>標簽下配置
    1. 第一次被訪問時溺健,創(chuàng)建
      • <load-on-startup>的值為負數(shù)
      1. 在服務器啟動時,創(chuàng)建
      • <load-on-startup>的值為0或正整數(shù)
  • Servlet的init方法,只執(zhí)行一次鞭缭,說明一個Servlet在內(nèi)存中只存在一個對象剖膳,Servlet是單例的

    • 多個用戶同時訪問時,可能存在線程安全問題岭辣。
    • 解決:盡量不要在Servlet中定義成員變量吱晒。即使定義了成員變量,也不要對修改值
    1. 提供服務:執(zhí)行service方法沦童,執(zhí)行多次
      • 每次訪問Servlet時仑濒,Service方法都會被調(diào)用一次。
    2. 被銷毀:執(zhí)行destroy方法偷遗,只執(zhí)行一次
      • Servlet被銷毀時執(zhí)行墩瞳。服務器關(guān)閉時,Servlet被銷毀
      • 只有服務器正常關(guān)閉時氏豌,才會執(zhí)行destroy方法喉酌。
      • destroy方法在Servlet被銷毀之前執(zhí)行,一般用于釋放資源

* Servlet3.0:

  • 好處:
  • 支持注解配置泵喘±岬纾可以不需要web.xml了。
  • 步驟:
    1. 創(chuàng)建JavaEE項目纪铺,選擇Servlet的版本3.0以上相速,可以不創(chuàng)建web.xml
    2. 定義一個類,實現(xiàn)Servlet接口
  1. 復寫方法
  2. 在類上使用@WebServlet注解鲜锚,進行配置
  • @WebServlet("資源路徑")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末突诬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子烹棉,更是在濱河造成了極大的恐慌攒霹,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浆洗,死亡現(xiàn)場離奇詭異催束,居然都是意外死亡,警方通過查閱死者的電腦和手機伏社,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門抠刺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人摘昌,你說我怎么就攤上這事速妖。” “怎么了聪黎?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵罕容,是天一觀的道長。 經(jīng)常有香客問我,道長锦秒,這世上最難降的妖魔是什么露泊? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮旅择,結(jié)果婚禮上惭笑,老公的妹妹穿的比我還像新娘。我一直安慰自己生真,他們只是感情好沉噩,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柱蟀,像睡著了一般川蒙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上长已,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天派歌,我揣著相機與錄音,去河邊找鬼痰哨。 笑死,一個胖子當著我的面吹牛匾嘱,可吹牛的內(nèi)容都是我干的斤斧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼霎烙,長吁一口氣:“原來是場噩夢啊……” “哼撬讽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悬垃,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤游昼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后尝蠕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烘豌,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年看彼,在試婚紗的時候發(fā)現(xiàn)自己被綠了廊佩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡标锄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出践剂,到底是詐尸還是另有隱情拧簸,我是刑警寧澤盆赤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站淑际,受9級特大地震影響春缕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宅荤,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一庸汗、第九天 我趴在偏房一處隱蔽的房頂上張望夫晌。 院中可真熱鬧所袁,春花似錦蜈亩、人聲如沸稚配。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崖技。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宾巍。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工渔伯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留顶霞,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓锣吼,卻偏偏與公主長得像选浑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子玄叠,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354