官术网_书友最值得收藏!

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 歡迎頁面

主站蜘蛛池模板: 潍坊市| 桃江县| 博爱县| 抚顺市| 灌南县| 福安市| 赣榆县| 阿合奇县| 榆中县| 金阳县| 共和县| 安平县| 环江| 科技| 德钦县| 名山县| 芜湖县| 扬州市| 香河县| 古浪县| 银川市| 红原县| 黑山县| 汝城县| 葵青区| 江陵县| 诸城市| 衢州市| 轮台县| 铜陵市| 仁寿县| 崇礼县| 来凤县| 正宁县| 焉耆| 湄潭县| 奈曼旗| 黄冈市| 高雄市| 海盐县| 通许县|