Tomcat方面的知识点
一、 WEB 服務(wù)器
1. 什么是 WEB 服務(wù)器?
?????? 就是一臺(tái)電腦,安裝了一個(gè)服務(wù)器軟件
2. 為什么需要安裝 WEB 服務(wù)器
??? 思考問題: 從一臺(tái)計(jì)算機(jī)的 IE 瀏覽器如何去訪問另一臺(tái)計(jì)算機(jī)中的文件
?2.1? 兩臺(tái)計(jì)算機(jī)是如何實(shí)現(xiàn)通訊的?
?????? IP地址(計(jì)算機(jī)的唯一標(biāo)識)
IPV4 4個(gè)字節(jié)的整數(shù),每個(gè)字節(jié)以 點(diǎn)號 隔開 127.1.12.222? 每個(gè)字節(jié)的取值 0~255
IPV6 16字節(jié)
回路ip地址? 127.0.0.1?
在計(jì)算機(jī)中程序會(huì)綁定在某一個(gè)端口? 0~65535? 盡量用 1024 以上的
連接一臺(tái)計(jì)算機(jī)就需要輸入 ip 地址和端口號
作為接收方, 應(yīng)該綁定ip,監(jiān)聽指定的端口
2.2?? 在本地寫程序添加一個(gè)服務(wù),供別人來訪問, 假設(shè)監(jiān)聽 8888 端口
2.3?? 編碼實(shí)現(xiàn)了一個(gè)本地服務(wù)器程序
?????? 作用: 管理本地的資源,只要將html頁面放到指定的目錄下,外界就可以訪問了
2.4?? 安裝服務(wù)器的目的: 開發(fā)好的web資源可以發(fā)布到服務(wù)器上,這樣外界就可以通過瀏覽器訪問了
?
源程序: MyServer.java
// ServerSocket 對象可以監(jiān)聽端口
ServerSocket serversocket = new ServerSocket(6666);
while(true) {
??? Socket socket = serversocket.accept(); // 等待客戶端的連接請求,一旦有請求過來,就結(jié)束阻塞,返回客戶端對象
???
??? // 一旦有客戶來訪問, 就另開一個(gè)新線程去提供服務(wù), main線程繼續(xù)等待下一個(gè)客戶的連接
??? new Thread(new MyService(socket)).start();
?
}
MyService.java
// 提供服務(wù)
InputStream in = socket.getInputStream();
Thread.sleep(200);
int len = in.available(); // 估計(jì)此流不受阻塞能讀取的字節(jié)數(shù)
byte[] buffer = new byte[len];
in.read(buffer);
String request = new String(buffer);
// 截取第一行
String firstLine = request.substring(0, request.indexOf("\n"));
String uriName = firstLine.split(" ")[1];
OutputStream out = socket.getOutputStream();
// 根據(jù)需要訪問的資源創(chuàng)建 File 對象
File file = new File("src" + uriName);
if(!file.exists()) {
??? out.write("對不起!您訪問的資源不存在!別瞎搞!!".getBytes());
??? out.close();
??? return ;
}
// 從文件讀, 往瀏覽器寫
FileInputStream fis = new FileInputStream(file);
?
buffer = new byte[1024];
while ((len = fis.read(buffer)) > 0) {
??? out.write(buffer, 0, len);
}
socket.close();
?
二、Tomcat 服務(wù)器的安裝和配置
1. 使用 tomcat6.0.20.rar 文件解壓即完成安裝
2. tomcat 就是一個(gè)java程序,一定會(huì)用到 jre
??? 所以需要配置環(huán)境變量 java_home 配置成jdk的安裝目錄 c:\jdk1.6
??? tomcat的啟動(dòng)是通過 startup.bat 文件, 實(shí)際上 startup.bat 中是去調(diào)用
??? catalina.bat 文件, 而且是通過 %catalina_home%\bin\catalina.bat 去找
??? 所以為了保證服務(wù)器啟動(dòng)正常, 需要配置 catalina_home 環(huán)境變量為 tomcat的安裝目錄
3. tomcat 的目錄結(jié)構(gòu)
?bin : 存放一些執(zhí)行文件
?conf : 存放服務(wù)器的配置文件
?lib : 存放tomcat 所依賴的 jar 文件
?logs: 存放日志文件
?temp:? 存放臨時(shí)文件
?webapps: web applications 存放所有的web應(yīng)用程序(web資源)
?work: tomcat 的工作目錄, jsp翻譯成的Servlet就在這個(gè)目錄下
4. web應(yīng)用
??? 多個(gè)web資源存放在一個(gè)目錄下即為一個(gè)web應(yīng)用(web應(yīng)用程序、web工程)
? ? web 應(yīng)用的目錄結(jié)構(gòu)
??? 靜態(tài)web資源直接放在目錄下
??? java 類放在classes目錄下
??? web.xml 文件負(fù)責(zé)管理web應(yīng)用下所有的web資源
??? 所有jar包放在lib目錄下
?
三、 WEB 應(yīng)用的映射
1. 虛擬目錄
??? 一個(gè)web應(yīng)用(服務(wù)器上一個(gè)目錄) 需要供外界訪問的路徑,需要映射虛擬目錄
??? 在 tomcat6 中,放在webapps下的web應(yīng)用,服務(wù)器會(huì)自動(dòng)做映射(將文件夾名稱作為虛擬路徑)
??? 對于 webapps 目錄外的web應(yīng)用需要手動(dòng)映射虛擬路徑
1.1. 在 server.xml 文件可以配置
??? <host>
?????? <Context path=”/itcast” docBase=”f:\itcast” />
??? </host>
?
1.2. 在 %tomcat目錄%\conf\catalina\localhost 下寫一個(gè) xml文件
??? 文件名就是 虛擬目錄
??? <Context docBase=”f:\itcast” />
??? 多級目錄配置? aaa#bbb.xml 對應(yīng) /aaa/bbb
??? 如果文件名 是 ROOT.xml 那就是配置了缺省的web應(yīng)用, 訪問時(shí)不需要輸入 虛擬目錄
?
2. web.xml
管理 web 應(yīng)用下所有的web資源
包括咱們后面學(xué)的Servlet jsp 都需要在這個(gè)文件中做映射
實(shí)驗(yàn): 配置web應(yīng)用的 首頁
在 web 應(yīng)用下新建目錄 WEB-INF ,在此目錄下 新建 web.xml 文件
<?xml version="1.0" encoding="ISO-8859-1"?>
?
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??? xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
??? version="2.5">
?
??? <welcome-file-list>
??????? <welcome-file>itcast.html</welcome-file>
??? </welcome-file-list>
?
</web-app>
?
?
3. 域名解析
一個(gè)完整 url
http:\\www.sina.com:80\index.jsp
協(xié)議名?? 主機(jī)名???????? 端口號? 資源名
IE 訪問服務(wù)器的原理,
?在IE中輸入的地址中包含域名,域名就需要被翻譯成服務(wù)器的IP,才能訪問到服務(wù)器
? IE 瀏覽器 www.sina.com |
?sina 服務(wù)器 |
看windows 是否注冊了該 主機(jī)名 DNS服務(wù)器 (網(wǎng)絡(luò)服務(wù)商) 解析域名,獲得一個(gè) IP |
C:\WINDOWS\system32\drivers\etc\hosts
?
4. web應(yīng)用映射的練習(xí):
新建一個(gè) web 應(yīng)用
配置成缺省的web應(yīng)用
配置首頁
配置tomcat監(jiān)聽端口為80
在 windows 中注冊主機(jī)名
C:\WINDOWS\system32\drivers\etc\hosts
?
在c盤下建一個(gè)文件夾 baidu 寫一個(gè)頁面 index.html
在 ie 輸入? http://www.baidu.com? 可以訪問該頁面
?
5. 虛擬主機(jī)
服務(wù)器允許在一個(gè)IP上配置多個(gè)主機(jī),即虛擬主機(jī)
http://www.sina.com:80/index.html
中的 www.sina.com 起了兩個(gè)作用:
找DNS服務(wù)器,作為域名被解析為IP
通過Host頭告訴服務(wù)器訪問的主機(jī)名
?
配置方式: 在 server.xml 文件中配置Host元素, 需要指定主機(jī)名、appBase(默認(rèn)web應(yīng)用存放目錄)
appBase目錄下所有的web應(yīng)用,tomcat會(huì)自動(dòng)映射虛擬路徑
<Host name="www.sohu.com"? appBase="F:\sohu\webapps" />
?
做實(shí)驗(yàn): 給新配置的虛擬主機(jī)配置缺省的web應(yīng)用
<Host name="www.sohu.com"? appBase="F:\sohu\webapps" >
??? <Context path="" docBase="F:\sohu\webapps\abc" />
</Host>
http://www.sohu.com/abc/a.html
訪問一個(gè) a.html 靜態(tài)web資源, IE 做了什么事
1) 將 www.sohu.com 作為域名發(fā)送給DNS , 解析成 IP 地址, 訪問一臺(tái)服務(wù)器
2) 發(fā)送 Host 頭(www.sohu.com),告訴服務(wù)器我要訪問的虛擬主機(jī) ,服務(wù)器拿著Host頭找匹配的Host元素
3) 將abc作為虛擬目錄,告訴服務(wù)器我要訪問的web應(yīng)用 ,服務(wù)器拿著 abc 找匹配的web應(yīng)用
4) 將 a.html 作為資源名, 告訴服務(wù)器我要訪問的 web 資源, 服務(wù)器拿著 a.html 去web.xml文件中找映射
虛擬目錄對應(yīng)是一個(gè)web應(yīng)用的目錄,所以虛擬目錄也被我們稱作web應(yīng)用路徑(web應(yīng)用的上下文contextpath)
?
?
總結(jié)
以上是生活随笔為你收集整理的Tomcat方面的知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 01-java基础加强,eclipse工
- 下一篇: 04-Servlet入门+http协议