- Java EE程序設計與開發實踐教程
- 馮志林編著
- 1506字
- 2021-10-27 17:05:32
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的效果是一樣的。
- 案例式C語言程序設計
- R語言數據可視化之美:專業圖表繪制指南
- Mastering Articulate Storyline
- Python從入門到精通(精粹版)
- Python Geospatial Development(Second Edition)
- 深入RabbitMQ
- 智能手機故障檢測與維修從入門到精通
- Illustrator CS6設計與應用任務教程
- Web編程基礎:HTML5、CSS3、JavaScript(第2版)
- 深入理解Kafka:核心設計與實踐原理
- FusionCharts Beginner’s Guide:The Official Guide for FusionCharts Suite
- Java面試一戰到底(基礎卷)
- 系統分析師UML用例實戰
- Swift 2 Blueprints
- Puppet Cookbook(Third Edition)