javascript
JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)
文章來(lái)源:http://www.cnblogs.com/smyhvae/p/4046862.html
?
【前言】
JSP本身是JavaWeb中的知識(shí),但是在學(xué)習(xí)Android網(wǎng)絡(luò)時(shí),必然要涉及到與服務(wù)器之間的交互,所以學(xué)一下JSP以及其他JavaWeb的內(nèi)容還是很有必要的,至少能明白程序在訪(fǎng)問(wèn)服務(wù)器時(shí),整個(gè)過(guò)程的原理。
其實(shí),在學(xué)習(xí)Android之前,Java和JavaWeb的知識(shí)都是要先學(xué)習(xí)的。本人是在2014年7月正式開(kāi)始Android方向的研究學(xué)習(xí),在這之前沒(méi)有接觸任何和計(jì)算機(jī)軟件相關(guān)的知識(shí)(唯一相關(guān)的是,本科學(xué)過(guò)一門(mén)C語(yǔ)言課程,不過(guò)現(xiàn)在已經(jīng)忘光了)。
我們來(lái)看下面的這張圖就知道了:
兩張圖拼起來(lái)看就對(duì)了,借鑒的是李剛的“瘋狂Java學(xué)習(xí)路線(xiàn)圖”,手機(jī)像素渣,圖片不是很清晰,將就一下吧。說(shuō)白了,在學(xué)習(xí)Android之前要具備一定的Java基礎(chǔ)(Java SE 、JavaWeb、數(shù)據(jù)庫(kù)等)。而如果要學(xué)的扎實(shí)并且有個(gè)好的就業(yè)崗位,以下基礎(chǔ)知識(shí)需要全部具備:計(jì)算機(jī)基礎(chǔ)知識(shí)(操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫(kù)、設(shè)計(jì)模式等)、C/C++、Java、Android、Linux。
所以,考慮到時(shí)間的因素,像我這種初學(xué)者,只能在邊學(xué)Android的時(shí)候邊學(xué)其他的知識(shí)。我學(xué)到了哪里,我的博客就會(huì)寫(xiě)哪里,也希望能和其他初學(xué)者一起共勉,一起見(jiàn)證!
?
【正文】
一、JSP簡(jiǎn)介
JSP:Java Server Pages。在傳統(tǒng)的HTML文件(*htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)記(tag),就構(gòu)成了JSP網(wǎng)頁(yè)。
?
二、學(xué)習(xí)重點(diǎn):
- JSP語(yǔ)法(腳本、指令、動(dòng)作)
- JSP的內(nèi)置對(duì)象
- 創(chuàng)建動(dòng)態(tài)的內(nèi)容
- 用戶(hù)會(huì)話(huà)跟蹤
?
三、使用tomcat軟件在本地搭建服務(wù)器:
Tomcat是Apache組織的Jakarta項(xiàng)目中的一個(gè)重要子項(xiàng)目,是Sun公司推薦的運(yùn)行Servlet和JSP的容器(引擎),其源代碼完全公開(kāi)。
有了這個(gè)服務(wù)器,就相當(dāng)于在本地的計(jì)算機(jī)有了一個(gè)網(wǎng)站,然后我們可以通過(guò)瀏覽器來(lái)訪(fǎng)問(wèn)這個(gè)網(wǎng)站。
tomcat軟甲是apache旗下的一個(gè)開(kāi)源項(xiàng)目。軟件下載鏈接:http://tomcat.apache.org/
下載之后,將壓縮包解壓:
注意目錄名不能有中文和空格。目錄介紹如下:
- bin:二進(jìn)制執(zhí)行文件。里面最常用的文件是startup.bat
- conf:配置目錄。里面最核心的文件是server.xml。可以在里面改端口號(hào)等。默認(rèn)端口號(hào)是8080,也就是說(shuō),此端口號(hào)不能被其他應(yīng)用程序占用。
- lib:庫(kù)文件。tomcat運(yùn)行時(shí)需要的jar包所在的目錄
- logs:日志
- temp:臨時(shí)產(chǎn)生的文件,即緩存
- webapps:web的應(yīng)用程序。web應(yīng)用放置到此目錄下瀏覽器可以直接訪(fǎng)問(wèn)
- work:編譯以后的class文件。
軟件運(yùn)行之前要保證Java環(huán)境變量已經(jīng)配置:
上圖中,變量名為JAVA_HOME,變量值為:JDK安裝的絕對(duì)路徑。
注:Catalina_Home環(huán)境變量:指定tomcat在啟動(dòng)時(shí)啟動(dòng)哪個(gè)tomcat,一般不推薦配置。
回到tomcat的bin目錄中, 雙擊startup.bat:
之后彈出如下界面:
這個(gè)時(shí)候,本地的服務(wù)器就已經(jīng)搭建起來(lái)了。如果想關(guān)閉服務(wù)器,可以直接關(guān)閉上面的窗口,或者在里面輸入Ctrl+C禁止服務(wù)。
首先查看自己電腦的ip地址,我的計(jì)算機(jī)的ip地址為:192.168.1.112。
在瀏覽器中輸入http://192.168.1.112:8080/(或者輸入http://localhost:8080/也是可以的)。如果彈出如下界面,進(jìn)入本地服務(wù)器的首頁(yè),表示tomcat安裝成功并且啟動(dòng)起來(lái)了:
上方圖片中,顯示我的Tomcat的版本為:8.0.14。它的版本號(hào)是跟著JDK的版本走的,所以,建議JDK的版本為1.8。
我們現(xiàn)在在瀏覽器上測(cè)試一下它吧:
首先在D:\apache-tomcat-8.0.14\webapps\ROOT目錄中新建一個(gè)jsp文件:
jsp文件中填入如下內(nèi)容:
<%String name = request.getParameter("name"); String pwd = request.getParameter("password"); out.print("name:" + name + ",password:" + pwd); //在瀏覽器上顯示輸入地址中的用戶(hù)名與密碼%>?現(xiàn)在我們隨便起一個(gè)用戶(hù)名和密碼的賬號(hào),比如用戶(hù)名smyhvae,密碼為smyh,然后在瀏覽器中輸入如下內(nèi)容:
http://192.168.1.112:8080/test.jsp?name=smyhvae&password=smyh
輸入這個(gè)鏈接之后,回車(chē),出現(xiàn)如下界面:
上圖中表示,我們向服務(wù)器發(fā)送這樣一個(gè)請(qǐng)求,鏈接中,問(wèn)號(hào)前面的內(nèi)容代表請(qǐng)求的路徑,問(wèn)號(hào)后面是我們要傳送的參數(shù)(鍵是固定不變的,值是用戶(hù)自己填寫(xiě)的),然后服務(wù)器返還給我們這樣的數(shù)據(jù)。
?
三、將Tomcat和eclipse相關(guān)聯(lián):
打開(kāi)eclipse for Java EE ,選擇菜單欄Windows-->preferences,彈出如下界面:
上圖中,點(diǎn)擊“add”的添加按鈕,彈出如下界面:
上圖中,選擇對(duì)應(yīng)的Tomcat版本,繼續(xù):
上圖中,選擇Tomcat的路徑,以及JRE,點(diǎn)擊“完成”,配置完畢。
新建java工程,建一個(gè)動(dòng)態(tài)的工程:
注:對(duì)“動(dòng)態(tài)”的理解:html是靜態(tài)的,寫(xiě)成什么,就是什么。動(dòng)態(tài)指的是根據(jù)服務(wù)器端返回的數(shù)據(jù)動(dòng)態(tài)地生成頁(yè)面。比如張三登陸可以看到張三的信息;換成李四登陸,可以看到李四的信息。
點(diǎn)開(kāi)上圖中的紅框部分,彈出如下界面:
按照上圖進(jìn)行配置,其中,第三個(gè)紅框中,是加載自己的jdk的安裝路徑即可:
然后,單擊finish。繼續(xù):
?
工程文件結(jié)構(gòu):
上圖中,deployment descriptor:部署的描述。Web App Libraries:自己加的包可以放在里面。build:放入編譯之后的文件。WebContent:放進(jìn)寫(xiě)入的頁(yè)面。
在WebContent文件夾下新建一個(gè)jsp文件。在下圖中可以看到它的默認(rèn)代碼:
上圖中,這種編碼方式不支持中文。我們來(lái)修改一下JSP文件的編碼方式,按上圖所示,鼠標(biāo)右擊,選擇"Preferences",彈出如下對(duì)話(huà)框:
上圖中,將編碼方式改為UTF-8。
同樣,我們還需要將文本內(nèi)容的編碼方式改為UTF-8(這個(gè)編碼和程序無(wú)關(guān)),選擇菜單欄Windows--preferences,打開(kāi)如下界面,將編碼方式改為UTF-8,并點(diǎn)擊update:
以后每次新建一個(gè)jsp文件,默認(rèn)的編碼方式就是UTF-8了。默認(rèn)代碼如下:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 11 </body> 12 </html>我們?cè)趆ello.jsp中修改一下,將上方的第7行的標(biāo)題改一下,并在第10行添加輸出語(yǔ)句。最終代碼如下:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>hello JSP</title> 8 </head> 9 <body> 10 <% 11 out.println("hello,JSP"); 12 %> 13 </body> 14 </html>上方的第11行,out指的是輸出流。通過(guò)頁(yè)面獲取這個(gè)輸出流,并打印在頁(yè)面中。以前學(xué)的System.out.println()指的是向控制臺(tái)輸出。
程序運(yùn)行之前,我們先修改一下瀏覽器選項(xiàng):
現(xiàn)在我們開(kāi)始運(yùn)行程序:
運(yùn)行時(shí),彈出如下錯(cuò)誤:(如果沒(méi)有此錯(cuò)誤,請(qǐng)忽略)
原因是,我們之前點(diǎn)擊了Tomcat安裝包中的?startup.bat,這樣一來(lái)就手動(dòng)打開(kāi)了Tomcat服務(wù)器,這明顯是多余的,因?yàn)槌绦蜻\(yùn)行時(shí),eclipse會(huì)自動(dòng)開(kāi)啟Tomcat服務(wù)器。所以我們先手動(dòng)關(guān)掉tomcat軟件,再次運(yùn)行程序,就行了。控制臺(tái)信息如下:
瀏覽器會(huì)自動(dòng)打開(kāi),網(wǎng)頁(yè)信息如下:
現(xiàn)在來(lái)解釋一下上方網(wǎng)址的名稱(chēng)為什么顯示的是 http://localhost:8080/TomcatTest/
我們選中項(xiàng)目,右鍵選擇“properties”,彈出如下對(duì)話(huà)框:
上圖顯示,我們所部署的路徑是根目錄,根目錄的名稱(chēng)默認(rèn)為我們新建的項(xiàng)目名,所以網(wǎng)址才會(huì)顯示為:主機(jī)名+端口號(hào)+項(xiàng)目名。
網(wǎng)頁(yè)顯示的錯(cuò)誤為404,即找不到網(wǎng)頁(yè),可見(jiàn)網(wǎng)頁(yè)中并沒(méi)有看到我們新建的jsp文件,我們?cè)賮?lái)找一下原因。打開(kāi)工程文件中,WEB-INF目錄下的web.xml文件:
上圖解釋:當(dāng)程序運(yùn)行時(shí),Tomcat會(huì)首先讀取工程的配置文件,且名字必須為web.xml。當(dāng)系統(tǒng)默認(rèn)進(jìn)入的鏈接為:主機(jī)名+端口+工程名時(shí),服務(wù)器就會(huì)找上圖中<welcome-file-list>標(biāo)簽里的頁(yè)面(有好幾個(gè)頁(yè)面的話(huà),就依次往下找);而標(biāo)簽<welcome-file-list>中并沒(méi)有hello.jsp文件。所以,我們需要在瀏覽器地址欄輸入:http://localhost:8080/TomcatTest/hello.jsp,才會(huì)將hello.jsp頁(yè)面顯示出來(lái)。效果如下:
四、程序運(yùn)行的原理:
我們現(xiàn)在來(lái)分析一下上面的程序運(yùn)行的原理。
當(dāng)在服務(wù)器上運(yùn)行后,會(huì)生成與工程文件并列的一個(gè)文件夾:Servers。如下:(如果刪掉了Servers文件夾,當(dāng)重新運(yùn)行時(shí),文件夾又會(huì)自動(dòng)生成)
這個(gè)文件夾是Tomcat服務(wù)器的一個(gè)基本的配置。
上圖中表明,我們新建的項(xiàng)目已經(jīng)部署到Tomcat服務(wù)器上去了,也就是看到了TomcatTest這個(gè)工程被發(fā)布出去了(發(fā)布的過(guò)程即:將寫(xiě)的工程打包以后放到Tomcat里)。
其實(shí)eclipse for EE已經(jīng)包含了Tomcat服務(wù)的插件,但其也必須依賴(lài)Tomcat來(lái)啟動(dòng)。我們雙擊上圖的紅框部分,顯示如下信息:
上圖的紅框部分表明,服務(wù)的部署是在eclipse里面(默認(rèn)是放在工作空間里的.metadata文件夾下),而不是在Tomcat里面。我們來(lái)改一下,前提是工程并沒(méi)有發(fā)布到Tomcat中去,那我們先把之前發(fā)布的版本刪了吧(稍后重新發(fā)布):
然后就可以修改部署的路徑了:
上圖中,使用Tomcat的安裝目錄作為部署的位置,并修改部署的路徑Deploy path(建議改成Tomcat的webapps目錄下),然后保存即可。這時(shí),重新運(yùn)行程序。現(xiàn)在來(lái)到Tomcat的webapps目錄下,發(fā)現(xiàn)多了一個(gè)TomcatTest文件夾(即工程文件名),并且文件夾下包含了工程文件中WebContent的內(nèi)容:
上圖說(shuō)明,說(shuō)明這才是真正將程序發(fā)布到服務(wù)器上。
我們?cè)賮?lái)到Tomcat的work目錄中,看一下編譯之后的文件:
?
上圖表明,Tomcat會(huì)先將jsp文件轉(zhuǎn)為java文件,然后再把java文件編譯為class文件,最終執(zhí)行的是class文件。現(xiàn)在來(lái)看一下JSP運(yùn)行的原理。
?
四、JSP的運(yùn)行原理:
- 只有當(dāng)客戶(hù)端第一次請(qǐng)求JSP時(shí),才需要將其轉(zhuǎn)換、編譯(所以第二次瀏覽同樣的網(wǎng)頁(yè)時(shí),速度會(huì)更快)
- Web服務(wù)器在遇到訪(fǎng)問(wèn)JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),首先執(zhí)行其中的程序片段,然后將執(zhí)行結(jié)果以HTML格式返回給客戶(hù)。
- 程序片段可以操作數(shù)據(jù)庫(kù)、重新定向網(wǎng)頁(yè)以及發(fā)送email等等,這就是建立動(dòng)態(tài)網(wǎng)站所需要的功能。
- 所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶(hù)端的僅是得到的結(jié)果,對(duì)客戶(hù)瀏覽器的要求最低。
總結(jié):本文的整個(gè)過(guò)程,讓我們學(xué)會(huì)了如何配置Tomcat和部署工程文件,明白了jsp文件是怎樣發(fā)布到服務(wù)器上并最終顯示出來(lái)。關(guān)于JSP的進(jìn)一步學(xué)習(xí),將在后面呈現(xiàn)。
?
?
?
五、Tomcat的其他問(wèn)題:
1、端口占用問(wèn)題:
在cmd中輸入netstat -ano命令,查看占用端口的進(jìn)程pid,再用任務(wù)管理器關(guān)閉相應(yīng)進(jìn)程即可。
我們?cè)跒g覽器中輸入"www.baidu.com",但是并沒(méi)有輸入端口號(hào)依然能進(jìn)入網(wǎng)頁(yè),這是因?yàn)?span style="margin:0px; padding:0px; color:rgb(0,0,255)">瀏覽器默認(rèn)的端口號(hào)為80,如果對(duì)方服務(wù)器是監(jiān)聽(tīng)在80端口上,則在瀏覽器中輸入網(wǎng)址時(shí),可以不用輸入端口號(hào)。
Tomcat默認(rèn)監(jiān)聽(tīng)的端口號(hào)是8080(server.xml文件的第63行),可以在配置文件conf/server.xml中修改。
【備注】Tomcat關(guān)聯(lián)幫助文檔Javadoc
我們以后如果要使用到Servlet類(lèi),但是想查看里面的源碼和幫助文檔,發(fā)現(xiàn)看不到:
按住ctrl點(diǎn)進(jìn)去之后,是下面的界面:
我們下載的tomcat中自帶了源碼,但是幫助文檔需要另外下載:
總結(jié)
以上是生活随笔為你收集整理的JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java中Filter、Listener
- 下一篇: 尚硅谷_JavaScript_学习笔记