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

5.6 應用案例2:Servlet制作2(HttpServlet類)

第5章任務6

1.新建Web工程

新建Web工程,設置工程名“ServletInputExample”,選擇Java EE版本為“JavaEE 5”。

2.新建input.html網頁

在Dreamweaver中新增input.html網頁,設置表單的動作(action)屬性為myservlet,方法(method)屬性為POST,輸入控件的名稱(name)屬性為inputAAA。界面顯示結果如圖5-8所示。

圖5-8 新增input.html網頁

input.html代碼如下:

3.新建Servlet類

新建Class,設置類的包名:zjc,類名:InputServlet,父類:HttpServlet,顯示結果如圖5-9所示。

圖5-9 新增Servlet類

4.重載doGet方法和doPost方法

選擇Source菜單,然后單擊Override/Implement Methods,把doGet方法和doPost方法打勾。界面如圖5-10所示。

圖5-10 重載doGet方法和doPost方法

重載InputServlet類的doPost方法,代碼如下:

5.修改web.xml文件

新增myservlet的說明,修改后的web.xml代碼如下:

6.運行工程

右鍵單擊項目,選擇“Run As|MyEclipse server Application”,在網址欄中輸入:http://127.0.0.1:8080/ServletInputExample/input.html。當在input.html的輸入框中輸入內容后,可以在/myservlet頁面中顯示輸入的內容,如圖5-11所示。

圖5-11 運行結果

該程序完整的執行過程如下:

1)當單擊input.html中表單的“提交”按鈕后,Tomcat將自動執行action中指定的URL網頁地址(即/myservlet)。注意:action中不能加/。

2)Tomcat執行到/myservlet時,將查找web.xml中的<servlet-mapping>項,發現存在url-pattern為/myservlet的這項,然后從該<servlet-mapping>項的servlet-name中知道將執行inputservlet。

3)在<servlet>項中查找,發現存在servlet-name為inputservlet的這項,然后從該<servlet>項的servlet-class中知道將執行的servlet類為zjc.InputServlet。

4)由于input.html中表單form的method屬性POST,因此,將執行zjc.InputServlet類的doPost方法。

下面給出本例的5個要點說明。

(1)要點說明1:Servlet的執行過程

首先根據在地址欄輸入的路徑信息找到<servlet-mapping>中<url-pattern>對應的<servlet-name>,再對應找到<servlet>中該<servlet-name>對應的<servlet-class>類,從而實例化該Servlet并執行。

在本例中的<url-pattern>為/myservlet(此路徑為相對路徑),所以在地址欄中輸入全路徑http://127.0.0.1:8080/ServletExample/myservlet后將找到對應的inputServlet這個Servlet,再對應找到inputServlet對應的<servlet-class>類zjc.InputServlet類,實例化該Servlet并執行。

(2)要點說明2:InputServlet類

這個InputServlet類繼承了HttpServlet接口。HttpServlet是一個實現了Servlet接口的類,所以這個Servlet就間接地實現了Servlet的接口,從而可以使用接口提供的服務。

這個程序中的doGet()方法就是具體的功能處理方法,這個方法可以對瀏覽器以GET方法發起的請求進行處理,在這里這個方法的功能就是輸出一個HTML頁面。

本例中并沒有出現具體的init()方法和destroy()方法,而是由Servlet容器以默認的方式對這個Servlet進行初始化和銷毀動作。

(3)要點說明3:Servlet的管理

Servlet編譯完以后不能直接運行,還需要存放在指定位置,并在web.xml文件中進行配置。在這里以Tomcat為Servlet應用服務器為例進行介紹。

1)Servlet的存放。將Servlet編譯成功后生成的.class文件按要求放在Tomcat安裝目錄的指定位置,在本例中將InputServlet.class文件放在Tomcat安裝目錄的webapps/ServletExample/WEB-INF/classes目錄下。

2)Servlet的配置。配置文件是webapps/ServletExample/WEB-INF目錄下的web.xml文件,注意:該文件不需要手工創建,當運行Web工程時,MyEclipse自動會將工程的本地文件web.xml上傳到Tomcat的webapps的SimpleServlet目錄中。

(4)要點說明4:web.xml中對Servlet的配置管理

在web.xml配置文件中<servlet>和<servlet-mapping>標識用于對Servlet進行配置,這個配置信息可以分為兩個部分,第一部分是配置Servlet的名稱和對應的類,第二部分是配置Servlet的訪問路徑。

1)<servlet>是對每個Servlet進行說明和定義。

Servlet容器中有N個servlet類,就需要配置N次。

2)<servlet-name>是Servlet的名稱,這個名字可以任意命名,但是要和<servlet-mapping>節點中的<servlet-name>保持一致。

3)<servlet-class>是Servlet對應類的路徑,在這里要注意,如果有Servlet帶有包名,一定要把包路徑寫完整,否則Servlet容器就無法找到對應的Servlet類。

4)<init-param>用于對Servlet初始化參數進行設置(沒有可省略)。

例如,可以在這里指定兩個參數:

① 參數user的值為zjc。

② 參數address的值為http://www.zjc.zjut.edu.cn。

這樣以后要修改用戶名和地址時就不需要修改Servlet代碼,只需修改配置文件。對這些初始化參數的訪問,可以在init()方法體中通過getInitParameter()方法進行獲取。

5)<servlet-mapping>是對Servlet的訪問路徑進行映射。

<servlet>和<servlet-mapping>必須是成對出現的。

6)<servlet-name>是這個Servlet的名稱,要和<servlet >節點中的<servlet-name>保持一致。

7)<url-pattern>定義了Servlet的訪問映射路徑,這個路徑就是在地址欄中輸入的路徑。

(5)要點說明5:表單提交的管理

由于表單提交方式采用POST方式,因此該網頁的名稱是/myservlet,也就是form表單的action中指定的網頁地址http://127.0.0.1:8080/ServletInputExample/myservlet。

/myservlet后面的.action可以省略。

例如,http://127.0.0.1:8080/ServletInputExample/myservlet.action和http://127.0.0.1: 8080/ServletInputExample/myservlet的效果是一樣的。

主站蜘蛛池模板: 筠连县| 河北区| 永仁县| 依安县| 阿合奇县| 当雄县| 涡阳县| 呼伦贝尔市| 蛟河市| 河南省| 尚志市| 云梦县| 体育| 伽师县| 高邮市| 泰安市| 卫辉市| 东源县| 凤冈县| 富平县| 三河市| 文化| 左贡县| 弥渡县| 象州县| 信宜市| 罗源县| 象州县| 庄河市| 贵南县| 眉山市| 灵璧县| 西乡县| 修文县| 定远县| 府谷县| 襄垣县| 金湖县| 曲靖市| 桦甸市| 政和县|