- JavaWeb從入門到精通(視頻實戰版)
- 常倬林等編著
- 1518字
- 2018-12-31 19:35:54
2.2 第一個JSP程序
本節介紹如何在Tomcat服務器上創建和發布JSP程序。這里首先講解Tomcat的目錄結構以及Web應用的目錄結構,接著介紹如何將JSP部署到Web應用中,運行第一個JSP程序并測試它。
2.2.1 JSP的工作原理

圖2.13 JSP執行過程圖
JSP服務器管理JSP頁面有兩個階段:轉換階段(translation phase)和執行階段(execution phase)。當有一個客戶請求到來時,JSP服務器檢驗JSP頁面的語法是否正確,將JSP頁面轉換為Servlet(Servlet就是用Java語言實現的CGI程序,后面章節將詳細介紹)源文件,然后調用javac工具類編譯Servlet源文件生成class文件,這一階段是轉換階段。接下來,Servlet容器加載轉換后的Servlet類,實例化一個對象處理客戶端的請求,在請求處理完成后,響應對象被JSP服務器接收,服務器將HTML格式的響應信息發送到客戶端,這一階段是執行階段,如圖2.13所示。
從整個過程中可以知道,當第一次加載JSP頁面時,因為要將JSP文件轉換為Servlet類,所以響應速度較慢。當再次請求時,JSP服務器就會直接執行第一次請求時產生的Servlet,而不會再重新轉換JSP文件,所以其執行速度和原始的Servlet執行速度幾乎就相同了。在JSP執行期間,JSP服務器會檢查JSP文件,看是否有更新或修改。如果有更新或修改,JSP服務器會再次編譯JSP或Servlet;如果沒有更新或修改,就直接執行前面產生的Servlet。這也是JSP相對于Servlet的好處之一。
2.2.2 JSP目錄結構
在Tomcat上發布Web應用之前,首先要了解Tomcat的目錄結構,參見表2.1。這些目錄都是其子目錄。Tomcat 6.0與以前的版本相比,對目錄結構做了很大改動,合并和簡化了一些目錄,現在的結構簡單而且清晰。
表2.1 Tomcat 6.0目錄結構

Web應用具有固定的目錄結構,這里舉例假定正在開發的Web應用名為jsp_example。首先,應該在/webapps目錄下創建這個Web應用的目錄結構,參見表2.2。
注意
此處介紹的Web目錄結構不僅僅針對Tomcat,在所有的JSP服務器中都適用。
表2.2 Web應用的目錄結構


圖2.14 Web應用的目錄結構
在classes以及lib子目錄下,都可以存放Java類文件。在運行過程中,Tomcat的裝載器會先裝載classes目錄下的類,再裝載lib目錄下的類。因此,如果兩個目錄下存在同名的類,classes目錄下的類具有優先權。一般情況下lib中只應存放外部引用的類,如JDBC驅動程序的JAR文件和后文中會提到的開源項目的包,而用戶自己編寫的類文件應該放在classes目錄下。用一個圖來說明更加清楚,如圖2.14所示。
注意
WEB-INF目錄對用戶來說是隱藏的,用戶不能通過瀏覽器直接訪問這個目錄中的文件。
2.2.3 解讀web.xml
Java Web應用通過一個基于XML的發布描述符文件來配置其發布信息,這個文件名為web.xml,它存放于WEB-INF子目錄下。在web.xml文件中可主要包含如下配置信息:
1)Servlet的定義。
2)Servlet的初始化參數。
3)Servlet以及JSP的映射。
4)Filter的定義。
5)安全域配置參數。
6)welcome文件清單。
7)資源引用。
8)環境變量的定義。
創建一個默認的web.xml文件,并把這個文件放到WEB-INF目錄中,該文件的內容如實例2-1所示。
【實例2-1】默認web.xml頁面
01 <?xml version="1.0" encoding="UTF-8"?> 02 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 03 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 04 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 05 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 06 <!--空web配置, 只包含歡迎頁面--> 07 <welcome-file-list> 08 <welcome-file>index.jsp</welcome-file> 09 </welcome-file-list> 10 </web-app>
【代碼剖析】上面代碼中的第7行標簽<welcome-file-list>為文件清單,這里只包含歡迎頁面。
2.2.4 編寫第一個JSP
創建兩個JSP文件,其中一個是login.jsp,如實例2-2,它顯示登錄頁面,要求輸入用戶名和口令。這個頁面鏈接到另一個JSP文件welcome.jsp,如實例2-3,顯示歡迎頁面。JSP的語法將在以后的章節詳細討論,本節側重于介紹JSP的發布過程。這兩個JSP文件都應放在jsp_example自己的目錄下。
【實例2-2】login.jsp示例
01 <html> 02 <head> 03 <title>第一個JSP</title> 04 </head> 05 <body> 06 <form name="loginForm" method="post" action="welcome.jsp"> 07 <table> 08 <tr> 09 <td> 10 用戶名: 11 </td> 12 <td> <!--用戶名輸入框--> 13 <input type="text" name="username"> 14 </td> 15 </tr> 16 <tr> 17 <td> 18 密碼: 19 </td> 20 <td> <!--密碼輸入框--> 21 <input type="口令" name="password"> 22 </td> 23 </tr> 24 <tr> 25 <td> <!--提交按鈕--> 26 <input type="Submit" name="Submit" value="確定"> 27 </td> 28 </tr> 29 </table> 30 </form> 31 </body> 32 </html>
【代碼剖析】上面代碼中第13行創建了一個文本框類型input標簽,在第21行創建了一個密碼類型input標簽,最后又通過第26行創建了一個“確定”按鈕。
【實例2-3】welcome.jsp示例
01 <html> 02 <head> 03 <title>歡迎</title> 04 </head> 05 <body> 06 歡迎您: 07 <%=request.getParameter("username")%> <!--顯示相應的信息--> 08 </body> 09 </html>
【代碼剖析】上面代碼中第7行通過類request的getParameter()方法獲取參數username的值。
2.2.5 發布與測試
按表2.2中Web應用的目錄結構,在Tomcat的webapps目錄下創建目錄jsp_example,將寫好的兩個jsp文件和web.xml文件放入指定目錄,重新啟動Tomcat。訪問JSP可以看到結果,如圖2.15和圖2.16所示。

圖2.15 登錄界面

圖2.16 歡迎頁面
- 精通Nginx(第2版)
- AngularJS Testing Cookbook
- Mastering Adobe Captivate 2017(Fourth Edition)
- 垃圾回收的算法與實現
- Vue.js 3.x從入門到精通(視頻教學版)
- 深入理解Java7:核心技術與最佳實踐
- Mastering AndEngine Game Development
- Mastering Apache Spark 2.x(Second Edition)
- Android程序設計基礎
- ANSYS Fluent 二次開發指南
- Visual FoxPro程序設計習題集及實驗指導(第四版)
- ASP.NET開發與應用教程
- Terraform:多云、混合云環境下實現基礎設施即代碼(第2版)
- 細說Python編程:從入門到科學計算
- Hands-On Nuxt.js Web Development