tomcat初級學習
一、tomcat的目錄結構說明
1.bin:可運行程序的目錄 startup.bat shutdown.bat 等
2.conf:配置文件目錄 tomcat-users.xml server.xml
3.lib:tomcat 運行時需要的依賴包
4.logs:tomcat運行時的日誌文件存放目錄
5.temp:tomcat運行時需要的臨時目錄
6.webapps:我們將來存放我們自己開發web應用程序的默認目錄。重要!
7.work:tomcat運行時的工作目錄
二、
Tomcat運行web應用程序:
1:靜態資源的方式:
第一步: 在tomcat的webapps目錄下新建一個 文件夾,起名 webapp1
第二步:進入webapp1目錄下,新建一個html頁面(.html/.htm),index.html
<!DOCTYPE html> <html> <head> <title>webapp1 - title</title> </head> <body> <h1>hello tomcat</h1> </body> </html> |
第三步:保存,(有必要時,重啓tomcat服務器)讓tomcat運行我們的webapp1應用程序。
第四步:通過瀏覽器訪問我們的webapp1應用
http://localhost:8080/webapp1/
or http://localhost:8080/webapp1/index.html
or 通過ip地址或者域名
http://192.168.91.180:8080/webapp1/index.htm
如果在局域網內,訪問自己架設的web網站,需要修改hosts文件
C:\Windows\System32\drivers\etc\hosts 文件的內容,添加域名解析記錄
例如:192.168.91.180newedu.com
注意,因爲系統安全策略的問題, 默認情況下hosts文件沒有修改權限。
需要添加可修改的權限
訪問web應用有一個默認訪問首頁的配置問題:
默認情況下,tomcat,自動訪問 index.html/index.htm
2:動態資源的方式
第一步: 在tomcat的webapps目錄下新建一個 文件夾,起名 webapp2
第二步:進入webapp2目錄下,新建一個jsp頁面,index.jsp
<%@page language="java" import="java.util.*" pageEncoding="utf-8" %> <!DOCTYPE html> <html> <head> <title>webapp1 - title</title> </head> <body>
<h1>hello tomcat- dynamical page </h1> ${header["User-Agent"]} </body> </html> |
第三步:保存,(有必要時,重啓tomcat服務器)讓tomcat運行我們的webapp2應用程序。
第四步:通過瀏覽器訪問我們的webapp2應用
http://localhost:8080/webapp2/index.jsp
WEB-INF下面的資源不能被用戶直接訪問;但是除了WEB-INF這個目錄其他的自己建立的目錄,都是可以被訪問的
例如: /abc/ 建了一個jsp頁面Index.jsp;
如果要訪問index.jsp,就需要訪問http://localhost:8080/webapp2/abc/index.jsp
WEB-INF中可以放置 web.xml 文件,web.xml裏面可以對我們的webapp2項目做特殊配置:
比如說,歡迎頁面,或者叫首頁
(如何修改動態網站的歡迎頁面?)
<?xml version="1.0" encoding="ISO-8859-1"?>
<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" metadata-complete="true">
<display-name>webapp2---jsp page</display-name> <description> Welcome to Tomcat </description> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> <welcome-file>123.jsp</welcome-file> </welcome-file-list>
</web-app> |
Tomcat的主要工作:
1: 提供一個web服務,提供給外部用戶,訪問;我們就可以添加自己的webapp,來達到架設自己網站的目的
2:tomcat 將jsp 翻譯 成java代碼;
這個動作什麼時候 發生呢?
n 在用戶第一次訪問該jsp頁面時,自動將jsp頁面轉換爲一個java文件,
例如: index.jsp 轉換爲 index_jsp.java; 應該有一個類名index_jsp
3:tomcat 將java代碼進行編譯compile;
4:tomcat 初始化我們的index_jsp.java 類
5:tomcat 調用index_jsp.java中的方法。
注意:用戶在第2次訪問 jsp頁面時,直接執行 5步,直接調用index_jsp.java中的方法。
面試題:爲什麼jsp頁面第一次訪問慢,第二次訪問快?
3:Eclipse 集成開發工具與tomcat的配置:
Ctl + S 保存,或者點擊上面的關閉按鈕,提示保存並關閉。完成tomcat的配置
4:Eclipse + tomcat 常見錯誤:
Address already use jvm_bind
針對於端口被佔用的問題的通用解決辦法:
1) 將tomcat shutdown
2) 將tomcat下的目錄webapps 下的所有的無關web項目都刪除
3) 重啓啓動tomcat,即可。
5:Jsp頁面中的聲明
<%@ page
language="java" -- 指定頁面中的開發語言,只能是java,沒有其他值
contentType="text/html;charset=utf-8" -- 告訴瀏覽器,返回的頁面內容是文本文件類型的html小類型,並且 編碼方式爲utf-8
pageEncoding="utf-8" (重要)-- 告訴 tomcat 該頁面保存時使用的編碼方式,並且eclipse工具有一個便捷的方式,如果修改了pageEncoding,頁面保存時的編碼方式,隨之改變,避免了亂碼問題的出現,可以與xml文件頭的encoding做類比記憶。
%>
http的協議解析:
http的協議是一種無狀態的協議,基於tcp/ip協議:
一個請求,一個響應構成了一次完成的http請求過程。
1:Request:
請求頭 |
請求頭的值 |
中文解釋 |
Accept |
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 |
告訴tomcat webserver,客戶端瀏覽器可以接受的文檔類型 |
Accept-Encoding |
gzip, deflate, sdch |
可以接受gzip的壓縮方式 |
Accept-Language |
zh-CN,zh;q=0.8,en;q=0.6 |
告訴tomcat,可以接受的語言 |
Connection |
keep-alive |
“讓子彈飛一會兒”讓服務於客戶端之間的連接時間延長一會兒,讓更多的資源被傳遞,提供瀏覽器的開始資源響應速度。 |
Cookie |
JSESSIONID=52585D1EE5BDD782BE4B3F73E85B306D; tu=21b986504ef97a36723a58eb211cd330 |
在客戶端保存一些服務器的返回信息,以供下次訪問時使用,叫”小甜點” |
DNT |
1 |
? |
Host |
newedu.com:8080 |
Tomcat所在的主機域名以及端口 |
Upgrade-Insecure-Requests |
1 |
Websocket http協議層面的支持 |
User-Agent |
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 |
我們使用的瀏覽器的所在客戶端信息。 |
Request URL |
http://newedu.com:8080/webapp2/index.jsp GET /webapp2/index.jsp HTTP/1.1 |
要從服務器訪問的資源名字以及路徑 |
Request Method |
Get/post |
請求方法 |
Remote Address |
192.168.91.180:8080 |
客戶端的訪問的ip地址 |
2:Response
|
|
|
Response 狀態 |
200 OK |
Tomat響應的狀態碼 |
Content-Length |
311 |
Tomcat服務器響應的內容字節長度 |
Server |
Apache-Coyote/1.1 |
Tomcat的別名 |
Set-Cookie |
JSESSIONID=0FBED8BE3DFBE778B121768FB7868F86; Path=/webapp2/; HttpOnly |
Tomcat設置cookie的內容 |
Content-Type |
text/html;charset=utf-8 |
服務端告訴瀏覽器,返回的內容類型以及編碼方式 |
Date |
Sun, 18 Sep 2016 08:33:16 GMT |
響應時間 |
http的狀態碼分類:
200 – 成功
300 – 轉發
304 緩存
400 – 客戶端錯誤
404 –所請求的資源不存在。
500 – 服務端錯誤
3:總結:
http協議的主要內容:
一個http的請求協議格式:
請求資源的路徑 GET /webapp2/index.jsp HTTP/1.1
很多的請求頭(鍵值對 map)
空格
請求體爲空(因爲參數都放到了url中。例如:http://newedu.com:8080/jsp-day01/login.jsp?name=jerry&pwd=jerry)
如果使用Post方式,那麼參數就被放置到請求體中
(name=jerry&pwd=jerry)
一個http的響應協議格式:
響應請求的狀態碼 HTTP/1.1 200 OK
很多響應頭
空格
響應體(一般情況下,是準備要顯示的html頁面內容)