【聲明】 html
歡迎轉載,但請保留文章原始出處→_→ java
生命壹號:http://www.cnblogs.com/smyhvae/web
文章來源:http://www.cnblogs.com/smyhvae/p/4046862.html數據庫
【前言】apache
JSP自己是JavaWeb中的知識,可是在學習Android網絡時,必然要涉及到與服務器之間的交互,因此學一下JSP以及其餘JavaWeb的內容仍是頗有必要的,至少能明白程序在訪問服務器時,整個過程的原理。設計模式
其實,在學習Android以前,Java和JavaWeb的知識都是要先學習的。本人是在2014年7月正式開始Android方向的研究學習,在這以前沒有接觸任何和計算機軟件相關的知識(惟一相關的是,本科學過一門C語言課程,不過如今已經忘光了)。瀏覽器
咱們來看下面的這張圖就知道了:緩存
兩張圖拼起來看就對了,借鑑的是李剛的「瘋狂Java學習路線圖」,手機像素渣,圖片不是很清晰,將就一下吧。說白了,在學習Android以前要具有必定的Java基礎(Java SE 、JavaWeb、數據庫等)。而若是要學的紮實而且有個好的就業崗位,如下基礎知識須要所有具有:計算機基礎知識(操做系統、計算機網絡、數據結構、數據庫、設計模式等)、C/C++、Java、Android、Linux。tomcat
因此,考慮到時間的因素,像我這種初學者,只能在邊學Android的時候邊學其餘的知識。我學到了哪裏,個人博客就會寫哪裏,也但願能和其餘初學者一塊兒共勉,一塊兒見證!服務器
【正文】
1、JSP簡介
JSP:Java Server Pages。在傳統的HTML文件(*htm,*.html)中加入Java程序片斷(Scriptlet)和JSP標記(tag),就構成了JSP網頁。
2、學習重點:
3、使用tomcat軟件在本地搭建服務器:
Tomcat是Apache組織的Jakarta項目中的一個重要子項目,是Sun公司推薦的運行Servlet和JSP的容器(引擎),其源代碼徹底公開。
有了這個服務器,就至關於在本地的計算機有了一個網站,而後咱們能夠經過瀏覽器來訪問這個網站。
tomcat軟甲是apache旗下的一個開源項目。軟件下載連接:http://tomcat.apache.org/
下載以後,將壓縮包解壓:
注意目錄名不能有中文和空格。目錄介紹以下:
軟件運行以前要保證Java環境變量已經配置:
上圖中,變量名爲JAVA_HOME,變量值爲:JDK安裝的絕對路徑。
注:Catalina_Home環境變量:指定tomcat在啓動時啓動哪一個tomcat,通常不推薦配置。
回到tomcat的bin目錄中, 雙擊startup.bat:
以後彈出以下界面:
這個時候,本地的服務器就已經搭建起來了。若是想關閉服務器,能夠直接關閉上面的窗口,或者在裏面輸入Ctrl+C禁止服務。
首先查看本身電腦的ip地址,個人計算機的ip地址爲:192.168.1.112。
在瀏覽器中輸入http://192.168.1.112:8080/(或者輸入http://localhost:8080/也是能夠的)。若是彈出以下界面,進入本地服務器的首頁,表示tomcat安裝成功而且啓動起來了:
上方圖片中,顯示個人Tomcat的版本爲:8.0.14。它的版本號是跟着JDK的版本走的,因此,建議JDK的版本爲1.8。
咱們如今在瀏覽器上測試一下它吧:
首先在D:\apache-tomcat-8.0.14\webapps\ROOT目錄中新建一個jsp文件:
jsp文件中填入以下內容:
<% String name = request.getParameter("name"); String pwd = request.getParameter("password"); out.print("name:" + name + ",password:" + pwd); //在瀏覽器上顯示輸入地址中的用戶名與密碼 %>
如今咱們隨便起一個用戶名和密碼的帳號,好比用戶名smyhvae,密碼爲smyh,而後在瀏覽器中輸入以下內容:
http://192.168.1.112:8080/test.jsp?name=smyhvae&password=smyh
輸入這個連接以後,回車,出現以下界面:
上圖中表示,咱們向服務器發送這樣一個請求,連接中,問號前面的內容表明請求的路徑,問號後面是咱們要傳送的參數(鍵是固定不變的,值是用戶本身填寫的),而後服務器返還給咱們這樣的數據。
3、將Tomcat和eclipse相關聯:
打開eclipse for Java EE ,選擇菜單欄Windows-->preferences,彈出以下界面:
上圖中,點擊「add」的添加按鈕,彈出以下界面:
上圖中,選擇對應的Tomcat版本,繼續:
上圖中,選擇Tomcat的路徑,以及JRE,點擊「完成」,配置完畢。
新建java工程,建一個動態的工程:
注:對「動態」的理解:html是靜態的,寫成什麼,就是什麼。動態指的是根據服務器端返回的數據動態地生成頁面。好比張三登錄能夠看到張三的信息;換成李四登錄,能夠看到李四的信息。
點開上圖中的紅框部分,彈出以下界面:
按照上圖進行配置,其中,第三個紅框中,是加載本身的jdk的安裝路徑便可:
而後,單擊finish。繼續:
工程文件結構:
上圖中,deployment descriptor:部署的描述。Web App Libraries:本身加的包能夠放在裏面。build:放入編譯以後的文件。WebContent:放進寫入的頁面。
在WebContent文件夾下新建一個jsp文件。在下圖中能夠看到它的默認代碼:
上圖中,這種編碼方式不支持中文。咱們來修改一下JSP文件的編碼方式,按上圖所示,鼠標右擊,選擇"Preferences",彈出以下對話框:
上圖中,將編碼方式改成UTF-8。
一樣,咱們還須要將文本內容的編碼方式改成UTF-8(這個編碼和程序無關),選擇菜單欄Windows--preferences,打開以下界面,將編碼方式改成UTF-8,並點擊update:
之後每次新建一個jsp文件,默認的編碼方式就是UTF-8了。默認代碼以下:
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>
咱們在hello.jsp中修改一下,將上方的第7行的標題改一下,並在第10行添加輸出語句。最終代碼以下:
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指的是輸出流。經過頁面獲取這個輸出流,並打印在頁面中。之前學的System.out.println()指的是向控制檯輸出。
程序運行以前,咱們先修改一下瀏覽器選項:
如今咱們開始運行程序:
運行時,彈出以下錯誤:(若是沒有此錯誤,請忽略)
緣由是,咱們以前點擊了Tomcat安裝包中的startup.bat,這樣一來就手動打開了Tomcat服務器,這明顯是多餘的,由於程序運行時,eclipse會自動開啓Tomcat服務器。因此咱們先手動關掉tomcat軟件,再次運行程序,就好了。控制檯信息以下:
瀏覽器會自動打開,網頁信息以下:
如今來解釋一下上方網址的名稱爲何顯示的是 http://localhost:8080/TomcatTest/
咱們選中項目,右鍵選擇「properties」,彈出以下對話框:
上圖顯示,咱們所部署的路徑是根目錄,根目錄的名稱默認爲咱們新建的項目名,因此網址纔會顯示爲:主機名+端口號+項目名。
網頁顯示的錯誤爲404,即找不到網頁,可見網頁中並無看到咱們新建的jsp文件,咱們再來找一下緣由。打開工程文件中,WEB-INF目錄下的web.xml文件:
上圖解釋:當程序運行時,Tomcat會首先讀取工程的配置文件,且名字必須爲web.xml。當系統默認進入的連接爲:主機名+端口+工程名時,服務器就會找上圖中<welcome-file-list>標籤裏的頁面(有好幾個頁面的話,就依次往下找);而標籤<welcome-file-list>中並無hello.jsp文件。因此,咱們須要在瀏覽器地址欄輸入:http://localhost:8080/TomcatTest/hello.jsp,纔會將hello.jsp頁面顯示出來。效果以下:
4、程序運行的原理:
咱們如今來分析一下上面的程序運行的原理。
當在服務器上運行後,會生成與工程文件並列的一個文件夾:Servers。以下:(若是刪掉了Servers文件夾,當從新運行時,文件夾又會自動生成)
這個文件夾是Tomcat服務器的一個基本的配置。
上圖中代表,咱們新建的項目已經部署到Tomcat服務器上去了,也就是看到了TomcatTest這個工程被髮布出去了(發佈的過程即:將寫的工程打包之後放到Tomcat裏)。
其實eclipse for EE已經包含了Tomcat服務的插件,但其也必須依賴Tomcat來啓動。咱們雙擊上圖的紅框部分,顯示以下信息:
上圖的紅框部分代表,服務的部署是在eclipse裏面(默認是放在工做空間裏的.metadata文件夾下),而不是在Tomcat裏面。咱們來改一下,前提是工程並無發佈到Tomcat中去,那咱們先把以前發佈的版本刪了吧(稍後從新發布):
而後就能夠修改部署的路徑了:
上圖中,使用Tomcat的安裝目錄做爲部署的位置,並修改部署的路徑Deploy path(建議改爲Tomcat的webapps目錄下),而後保存便可。這時,從新運行程序。如今來到Tomcat的webapps目錄下,發現多了一個TomcatTest文件夾(即工程文件名),而且文件夾下包含了工程文件中WebContent的內容:
上圖說明,說明這纔是真正將程序發佈到服務器上。
咱們再來到Tomcat的work目錄中,看一下編譯以後的文件:
上圖代表,Tomcat會先將jsp文件轉爲java文件,而後再把java文件編譯爲class文件,最終執行的是class文件。如今來看一下JSP運行的原理。
4、JSP的運行原理:
總結:本文的整個過程,讓咱們學會了如何配置Tomcat和部署工程文件,明白了jsp文件是怎樣發佈到服務器上並最終顯示出來。關於JSP的進一步學習,將在後面呈現。
5、Tomcat的其餘問題:
一、端口占用問題:
在cmd中輸入netstat -ano命令,查看佔用端口的進程pid,再用任務管理器關閉相應進程便可。
咱們在瀏覽器中輸入"www.baidu.com",可是並無輸入端口號依然能進入網頁,這是由於瀏覽器默認的端口號爲80,若是對方服務器是監聽在80端口上,則在瀏覽器中輸入網址時,能夠不用輸入端口號。
Tomcat默認監聽的端口號是8080(server.xml文件的第63行),能夠在配置文件conf/server.xml中修改。
【備註】Tomcat關聯幫助文檔Javadoc
咱們之後若是要使用到Servlet類,可是想查看裏面的源碼和幫助文檔,發現看不到:
按住ctrl點進去以後,是下面的界面:
咱們下載的tomcat中自帶了源碼,可是幫助文檔須要另外下載: