Tomcat服務器
修改tomcat端口號
點擊conf下server.xml 的第69行
<Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
其中80端口不要訪問時添加
web相關(guān)概念回顧
- 軟件架構(gòu)
- C/S:客戶端/服務器端
- B/S:瀏覽器/服務器端
- 資源分類
- 靜態(tài)資源:所有用戶訪問后俐载,得到的結(jié)果都是一樣的贮泞,稱為靜態(tài)資源.靜態(tài)資源可以直接被瀏覽器解析 如: html,css,JavaScript
- 動態(tài)資源:每個用戶訪問相同資源后耸棒,得到的結(jié)果可能不一樣流纹。稱為動態(tài)資源。動態(tài)資源被訪問后剪廉,需要先轉(zhuǎn)換為靜態(tài)資源铅祸,在返回給瀏覽器作箍,如:servlet/jsp,php,asp...
- 網(wǎng)絡通信三要素
- IP:電子設備(計算機)在網(wǎng)絡中的唯一標識硬梁。
- 端口:應用程序在計算機中的唯一標識。 0~65536
- 傳輸協(xié)議:規(guī)定了數(shù)據(jù)傳輸?shù)囊?guī)則
- 基礎協(xié)議:
- tcp:安全協(xié)議胞得,三次握手荧止。 速度稍慢
- udp:不安全協(xié)議。 速度快
- 基礎協(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接口,復寫方法荚坞。
快速入門
- 創(chuàng)建JavaEE項目
- 定義一個類挑宠,實現(xiàn)Servlet接口
import javax.servlet.Servlet;
public class ServletDemo1 implements Servlet
- 實現(xiàn)接口中的抽象方法
- 配置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í)行原理:
- 當服務器接受到客戶端瀏覽器的請求后,會解析請求URL路徑颓影,獲取訪問的Servlet的資源路徑
- 查找web.xml文件各淀,是否有對應的<url-pattern>標簽體內(nèi)容。
- 如果有诡挂,則在找到對應的<servlet-class>全類名
- tomcat會將字節(jié)碼文件加載進內(nèi)存碎浇,并且創(chuàng)建其對象
- 調(diào)用其方法
-
Servlet中的生命周期方法:
- 被創(chuàng)建:執(zhí)行init方法,只執(zhí)行一次
- Servlet什么時候被創(chuàng)建璃俗?
- 默認情況下奴璃,第一次被訪問時,Servlet被創(chuàng)建
- 可以配置執(zhí)行Servlet的創(chuàng)建時機旧找。
- 在<servlet>標簽下配置
- 第一次被訪問時溺健,創(chuàng)建
- <load-on-startup>的值為負數(shù)
- 在服務器啟動時,創(chuàng)建
- <load-on-startup>的值為0或正整數(shù)
-
Servlet的init方法,只執(zhí)行一次鞭缭,說明一個Servlet在內(nèi)存中只存在一個對象剖膳,Servlet是單例的
- 多個用戶同時訪問時,可能存在線程安全問題岭辣。
- 解決:盡量不要在Servlet中定義成員變量吱晒。即使定義了成員變量,也不要對修改值
- 提供服務:執(zhí)行service方法沦童,執(zhí)行多次
- 每次訪問Servlet時仑濒,Service方法都會被調(diào)用一次。
- 被銷毀:執(zhí)行destroy方法偷遗,只執(zhí)行一次
- Servlet被銷毀時執(zhí)行墩瞳。服務器關(guān)閉時,Servlet被銷毀
- 只有服務器正常關(guān)閉時氏豌,才會執(zhí)行destroy方法喉酌。
- destroy方法在Servlet被銷毀之前執(zhí)行,一般用于釋放資源
* Servlet3.0:
- 好處:
- 支持注解配置泵喘±岬纾可以不需要web.xml了。
- 步驟:
- 創(chuàng)建JavaEE項目纪铺,選擇Servlet的版本3.0以上相速,可以不創(chuàng)建web.xml
- 定義一個類,實現(xiàn)Servlet接口
- 復寫方法
- 在類上使用@WebServlet注解鲜锚,進行配置
- @WebServlet("資源路徑")