tomcat服務(wù)器
Tomcat 目錄結(jié)構(gòu)bin 運(yùn)行程序conf 配置文件lib tomcat需要類庫(kù)logs tomcat日志webapps 網(wǎng)站部署目錄work 存放JSP 編譯后文件Tomcat 啟動(dòng)問(wèn)題1、沒(méi)有
Tomcat 目錄結(jié)構(gòu)
bin 運(yùn)行程序
conf 配置文件
lib tomcat需要類庫(kù)
logs tomcat日志
webapps 網(wǎng)站部署目錄
work 存放JSP 編譯后文件
Tomcat 啟動(dòng)問(wèn)題
1、沒(méi)有配置JAVA_HOME
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
2、配置JAVA-HOME JAVAHOME 配置值時(shí)候多寫(xiě);
3、將JAVA_HOME配置成為 JRE 路徑
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
端口占用啟動(dòng)問(wèn)題
發(fā)現(xiàn)tomcat 端口被占用(怎么發(fā)現(xiàn)的 logs ) ----- Fport 找到占用端口進(jìn)程名稱 ----- 任務(wù)管理器關(guān)閉進(jìn)程
8080 是tomcat 默認(rèn)端口 Oracle Listener
開(kāi)發(fā)中經(jīng)常將默認(rèn)端口修改為80 ----- conf/server.xml
CATALINA_HOME環(huán)境變量: 用來(lái)指定默認(rèn)運(yùn)行tomcat 目錄位置、不管運(yùn)行哪個(gè)tomcat/bin/startup.bat 都啟動(dòng) CATALINA_HOME配置tomcat
tomcat 中如何部署web 應(yīng)用
1、tomcat/conf/context.xml 里面配置信息將會(huì)用于所有web 應(yīng)用
2、tomcat/conf 為每個(gè)主機(jī)建立一個(gè)context.xml 用于所有該主機(jī)web 應(yīng)用
部署web 應(yīng)用三種方式
1、配置server.xml 修改
1
,在D:apache-tomcat-7.0.69conf下的server.xml
2、配置 $CATALINA_HOME/conf/[enginename]/[hostname]/ directory
在tomcat 安裝目錄下的conf 下新建Catalina 然后在Catalina 下新建 localhost 。在localhost 下建一個(gè)abc.xml 文件,那么abc 就是訪問(wèn)路徑。在abc.xml 中加入
3、將整個(gè)web 應(yīng)用目錄拷貝到 webapps
配置缺省web 應(yīng)用
訪問(wèn)主機(jī)IP ,直接打開(kāi)默認(rèn)web 應(yīng)用 ------------ localhost回車后即可訪問(wèn)web 應(yīng)用的index 內(nèi)容
1、webapps 下建立ROOT 目錄就是缺省應(yīng)用,tomcat 已經(jīng)占據(jù)了
2、配置server.xml
3、在conf/Catalina/localhost 里面建 ROOT.xml 文件,在其中添加
war 文件是 zip 格式
靜態(tài)資源直接存放網(wǎng)站根目錄
動(dòng)態(tài)java 網(wǎng)站會(huì)存在WEB-INF
web.xml 配置歡迎頁(yè)面
在web.xm 中有這么一段代碼,默認(rèn)三個(gè)頁(yè)面為歡迎界面。
如何架設(shè)一個(gè)站點(diǎn)?
1、開(kāi)發(fā)站點(diǎn)代碼
2、一臺(tái)服務(wù)器(1) 自己購(gòu)買服務(wù)器,服務(wù)器托管 2) 購(gòu)買服務(wù)器空間虛擬主機(jī)空間) -------- IP 地址
3、購(gòu)買域名一級(jí)域名 news.itcast.cn 二級(jí)域名
配置虛似主機(jī)
2
,1、在一個(gè)tomcat 服務(wù)器中可以放置多個(gè)網(wǎng)站,所謂配置虛似主機(jī),就是在tomcat 服務(wù)器中配置一個(gè)網(wǎng)站。
2、如需在WEB 服務(wù)器中配置一個(gè)網(wǎng)站,需使用Host 元素進(jìn)行配置,例:
unpackWARs="true" autoDeploy="true"> prefix="localhost_access_log." suffix=".txt" pattern="h l u t "r" s b" />
unpackWARs="true" autoDeploy="true">
3、配置的主機(jī)(網(wǎng)站) 要想被外部訪問(wèn),必須在DNS 服務(wù)器或windows 系統(tǒng)中注冊(cè)
C:WINDOWSsystem32driversetchosts
2、配置hosts 文件將目標(biāo)域名映射本機(jī)
3、提供默認(rèn)缺省虛擬目錄(網(wǎng)站) ---- ROOT
配置缺省虛擬主機(jī)有什么用? ---- 當(dāng)服務(wù)器DNS 癱瘓時(shí),只有缺省虛擬主機(jī)能被訪問(wèn)!
在server.xml 中有一句話
登錄服務(wù)器管理員的方法:
啟動(dòng)tomcat 主頁(yè),點(diǎn)擊tomcat manager要求輸入用戶名密碼。點(diǎn)擊取消進(jìn)入說(shuō)明。
在conf 下的tomcat-users.xml 文件中加入提示的
而后登錄即可
context 元素常用屬性
3
,WEB 應(yīng)用的組成結(jié)構(gòu)
開(kāi)發(fā)web 應(yīng)用時(shí),不同類型的文件有嚴(yán)格的存放規(guī)則,否則不僅可能會(huì)使web 應(yīng)用無(wú)法訪問(wèn),還會(huì)導(dǎo)致web 服務(wù)器啟動(dòng)報(bào)錯(cuò)。


4



在myeclipse 中新建一個(gè)web project工程


5
,OSI 七層協(xié)議 TCP/IP分層
TCP 傳輸層協(xié)議 IP 網(wǎng)絡(luò)層協(xié)議
三次握手
發(fā)送方:你能收到我的數(shù)據(jù)嗎?
接收方:我能收到你的數(shù)據(jù),你能收到我的數(shù)據(jù)嗎
發(fā)送方:我也能收到
TCP 不丟包的數(shù)據(jù)傳輸,發(fā)送方如果一直收不到接收方回應(yīng),就會(huì)超時(shí)
HTTP 請(qǐng)求三部分:請(qǐng)求行、消息頭、消息體
請(qǐng)求行三部分:請(qǐng)求方式(GET/Post)、請(qǐng)求資源路徑、協(xié)議版本
消息頭以鍵值對(duì)的方式傳輸
GET 和POST 區(qū)別
GET 數(shù)據(jù)格式請(qǐng)求數(shù)據(jù)位于請(qǐng)求行中
GET /day4/index.html?username=aaa&password=bbb HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*
Referer: http://localhost/day4/login.html
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Host: localhost
Connection: Keep-Alive
POST 數(shù)據(jù)格式請(qǐng)求數(shù)據(jù)位于請(qǐng)求體中
POST /day4/index.html HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*
Referer: http://localhost/day4/login.html
6
,Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Host: localhost
Content-Length: 25
Connection: Keep-Alive
Cache-Control: no-cache
username=aaa&password=bbb
請(qǐng)求的解析
Accept: text/html,image/* image/jpeg 通知服務(wù)器, 客戶端可以識(shí)別文件格式 MIME-Type
Accept-Charset: ISO-8859-1 客戶端能夠接受編碼
Accept-Encoding: gzip 客戶端識(shí)別壓縮格式
Accept-Language:zh-cn 客戶端語(yǔ)言
Host: www.itcast.com:80 訪問(wèn)目標(biāo)服務(wù)器
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
該資源客戶端存在,告訴服務(wù)器該資源最后修改時(shí)間 ----- 如果客戶端資源已經(jīng)最新,服務(wù)器將通知客戶端找尋本地緩存
Referer: http://www.itcast.com/index.jsp
請(qǐng)求來(lái)源
舉例:
GET http://www.itcast.cn HTTP/1.1
Referer:www.baidu.com
訪問(wèn)itcast 請(qǐng)求來(lái)自百度
防止盜鏈
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Cookie
Connection: close/Keep-Alive
7
,Date: Tue, 11 Jul 2000 18:23:51 GMT
服務(wù)器響應(yīng)的解析
HTTP 響應(yīng)包括3個(gè)部分:響應(yīng)行、頭信息、響應(yīng)體
響應(yīng)行包括3個(gè)部分:協(xié)議版本、狀態(tài)碼、狀態(tài)描述信息
狀態(tài)碼
1xx:請(qǐng)求收到,需要繼續(xù)處理
2xx:請(qǐng)求處理完成
3xx: 重定向
4xx: 客戶端出錯(cuò),服務(wù)器無(wú)法處理 ---- 頁(yè)面找不到
5xx: 服務(wù)器出錯(cuò)
200 請(qǐng)求處理成功
302 重定向 A 找B 借錢,B 告訴A 去找C 借去
304和307 If-modified-since last-modified 服務(wù)器通知客戶端查看本地緩存 A 找B 借錢,B 說(shuō)你兜里有
404 頁(yè)面找不到錯(cuò)誤 A 找B 借錢 B 說(shuō)沒(méi)錢
500 服務(wù)器內(nèi)部異常
響應(yīng)頭含義
Location: http://www.it315.org/index.jsp
結(jié)合302狀態(tài)碼使用,服務(wù)器通知客戶端重定向資源 --- 常見(jiàn)應(yīng)用:未登陸,自動(dòng)跳轉(zhuǎn)登陸頁(yè)面
Server:apache tomcat 服務(wù)器類型
Content-Encoding: gzip 通知客戶端響應(yīng)內(nèi)容使用壓縮格式
Content-Length: 80 響應(yīng)長(zhǎng)度
Content-Language: zh-cn 響應(yīng)語(yǔ)言
Content-Type: text/html; charset=GB2312 響應(yīng)數(shù)據(jù)類型、編碼集
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
通知客戶端,該資源在服務(wù)器上最后修改時(shí)間
8
,Refresh: 1;url=http://www.it315.org ----- 表示1秒后跳轉(zhuǎn)www.it315.org
自動(dòng)刷新功能,案例:用戶在登陸后,顯示5秒后自動(dòng)跳回主頁(yè)
Content-Disposition: attachment; filename=aaa.zip
文件以附件格式下載
Expires: -1 過(guò)期時(shí)間
Cache-Control: no-cache 不緩存
Pragma: no-cache 不緩存
以上三個(gè)頭信息資源,用于通知客戶端響應(yīng)數(shù)據(jù)不緩存,三個(gè)頭一起使用是為了滿足跨瀏覽器
Java 基礎(chǔ)班 Socket 編程通過(guò)控制請(qǐng)求與響應(yīng)實(shí)現(xiàn)部分功能
Serverlet 編程服務(wù)器響應(yīng)請(qǐng)求的處理
publicclass extends HttpServlet {
// 手動(dòng)壓縮
protectedvoid doGet(HttpServletRequest req , HttpServletResponse response ) throws ServletException, IOException {
String data =
"sdgfasgfasdfgasdgasdjklfadshklfasdkfhadsjkfhasdhkfjadshfjkasdhfaskdjfhaskdjfha dsfjkhadkhadshfkaskdhlfaskldfhadshkfhadsklfhladshlfashdlf" ;
}
// 文件下載
protectedvoid demo4(HttpServletRequest request ,
9
byte [] b1 = data .getBytes(); // 原始數(shù)組 System. out .println(b1. length ); ByteArrayOutputStream out = new ByteArrayOutputStream(); // 字節(jié)數(shù)組 GZIPOutputStream gzipOutputStream = new GZIPOutputStream(out ); gzipOutputStream .write(b1); byte [] b2 = out .toByteArray(); // 壓縮后數(shù)組 System. out .println(b2. length );
,HttpServletResponse response ) throws ServletException, IOException { response
.setHeader("Content-Disposition" , "attachment;
filename=mm.jpg");
}
// 防盜鏈程序
protectedvoid demo3(HttpServletRequest request ,
}
// 5秒后跳轉(zhuǎn)到登陸頁(yè)面
protectedvoid demo2(HttpServletRequest req , HttpServletResponse response )
}
10
File file = new File(getServletContext().getRealPath("/mm.jpg")); InputStream in = new FileInputStream(file ); OutputStream out = response .getOutputStream(); int temp ; while ((temp = in .read()) != -1) { } out .close(); in .close(); out .write(temp ); HttpServletResponse response ) throws ServletException, IOException { // 獲得 String referer = request .getHeader("referer" ); if (referer == null || !referer .startsWith("http://localhost/day4")) { System. out .println(" 盜鏈" ); } else { } System. out .println(" 不是盜鏈" ); throws ServletException, IOException { response .setHeader("Refresh" , "5;url=login.html");