版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SCWCD 認證專家應考指南(2/e),第2章:Servlet模型,2.1: Servlet如何處理HTTP請求 2.2: Servlet如何產生HTTP回應 2.3: 實例探討: 建立HTTP Servlet 2.4: Servlet 的生命週期(life cycle),SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.1: Servlet如何處理HTTP請求,在HttpServlet類別中,service()方法會根據不同的HTTP請求形式,將客戶端請求分配給不同方法來執行(包括GET、HEAD、PUT、POST、DELETE、OPTIONS與TRACE)。 HTTP請求形式所對應
2、的方法習慣上是以doXXX()表示。 doXXX()方法必須傳入兩個物件參考:HttpServletRequest與HttpServletResponse。,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.1: Servlet處理HTTP請求的流程,當Servlet容器接收到HTTP請求後,將會呼叫Servlet的service()方法。 service()方法會解析HTTP請求的內容,藉此決定其HTTP請求形式為何。 根據客戶端的HTTP請求形式,service()方法會呼叫相對應的doXXX()方法。,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.1: HTTP請求形
3、式對應的Servlet方法,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.2: 如何取得HTTP請求內容,javax.servlet.ServletRequest介面提供下列方法,可用來讀取Servlet請求內容: String getParameter(String name) String getParameterValues(String name) Enumeration getParameterNames() HttpServletRequest繼承自ServletRequest介面,只要是實作介面的類別,都可以經由這些取得HTTP Servlet請求內容!,SCWCD
4、認證專家應考指南(2/e) 學貫行銷,2.1.2: 讀取Servlet請求內容的方法,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.3: 如何取得HTTP請求之標頭資訊,HttpServletRequest介面提供三個方法,可取得HTTP請求之標頭資訊: getHeader(String name) getHeaders(String name) getHeaderNames(),SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.3:讀取HTTP 請求標頭資訊的方法,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.4: 存取客戶端瀏覽器的Cookie資料,取得客戶
5、端瀏覽器所紀錄的Cookie資料: HttpServletRequest介面的getCookies()方法 將新的Cookie資料傳送至客戶端瀏覽器 : HttpServletResponse介面的addCookie(Cookie cookie)方法,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.5: HTTP請求形式之實例探討,request.html檔案內容: 1. 2. 3. 4.Enter your name: 5. 6. 7. 8. 9.,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.5: HelloServlet.java,1.package scwcd.c
6、h02; 2. 3.import java.io.*; 4.import javax.servlet.http.*; 5. 6.public class HelloServlet extends HttpServlet 7. public void doGet(HttpServletRequest request, 8. HttpServletResponse response) 9. throws IOException 10. response.setContentType(text/html); 11. 12. String name = request.getParameter(nam
7、e); 13. PrintWriter out = response.getWriter(); 14.,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.5: HelloServlet.java,15. out.println(); 16. out.println(); 17. out.println(Hello Servlet); 18. out.println(); 19. out.println(); 20. out.println(Hello, + name + !); 21. out.println(); 22. out.println(); 23. out.close();
8、 24. 25.,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.5: 利用GET形式呼叫HelloServlet,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.6: 利用POST形式送出HTTP請求,修改request.html檔案內容: 1. 2. 3. 4.Enter your name: 5. 6. 7. 8. 9.,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.6: 利用POST形式送出HTTP請求,因為HelloServlet未撰寫doPost()方法, 所以無法處理HTTP POST請求!,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1
9、.6: 在HelloServlet加入doPost()方法,為了讓HelloServlet回應POST請求,必須加入doPost()方法: 6.public class HelloServlet2 extends HttpServlet . . . . . . . . . . . . . . . . . . . . . . . . 25. public void doPost(HttpServletRequest request, 26. HttpServletResponse response) 27. throws IOException 28. doGet(request, respon
10、se); 29. 30.,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.6: DisplayHeaderInfo.java,1.package scwcd.ch02; 2. 3.import javax.servlet.*; 4.import javax.servlet.http.*; 5.import java.io.*; 6.import java.util.*; 7. 8.public class DisplayHeaderInfo extends HttpServlet 9. private String CONTENT_TYPE = text/html; charset=
11、Big5; 10. public void doGet(HttpServletRequest request, 11. HttpServletResponse response) 12. throws ServletException, IOException 13. response.setContentType(CONTENT_TYPE); 14. PrintWriter out = response.getWriter(); 15. out.println(); 16. out.println(); 17. out.println(); 18. out.println(“HTTP Ser
12、vlet 所接收的 Header 資訊 );,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.6: DisplayHeaderInfo.java,19. 20. out.println(); 21. Enumeration headers = request.getHeaderNames(); 22. 23. while(headers.hasMoreElements() 24. String header = (String) headers.nextElement(); 25. String value = request.getHeader(header); 26. out.p
13、rintln(); 27. out.println( 28. + header +); 29. out.println( + value +); 30. out.println(); 31. 32. out.println(); 33. out.println(); 34. out.println(); 35. 36.,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.1.6: DisplayHeaderInfo.java 執行結果,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.2: Servlet如何產生HTTP回應,在doXXX()方法內,可透過HttpServletRespo
14、nse物件輸出HTTP回應訊息,例如: PrintWriter out = response.getWriter(); out.println(); out.println(); out.println(This is my first Servlet! ); out.println(); out.println();,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.2.1 如何設定HTTP Servlet之回應內容,ServletResponse介面的重要方法:,SCWCD 認證專家應考指南(2/e) 學貫行銷,HttpServletResponse介面的重要方法:,2.2.1 如何設
15、定HTTP Servlet之回應內容,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.3 實例演練: 撰寫HTTP Servlet,實例演練2-1: 利用文字編譯器撰寫一個MyFirstServlet.java 利用javac編譯MyFirstServlet 將MyFirstServlet.class複製到Tomcat伺服器的適當目錄 在Web瀏覽器內執行MyFirstServlet,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.3 實例演練: 撰寫HTTP Servlet,實例演練2-2: 在MyFirstServlet內加入一個doPost()方法,目的是讓MyFirstSe
16、rvlet能夠回應POST請求。 為了從客戶端送出POST請求,必須另外撰寫一個SendPostRequest.html檔案。,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.4: Servlet 的生命週期(life cycle),Servlet生命週期的三個階段: 載入Servlet,並予以實體化 回應客戶端的請求 卸載Servlet的服務 javax.servlet.Servlet介面定義下面三個方法: init() service() destroy(),SCWCD 認證專家應考指南(2/e) 學貫行銷,2.4: Servlet生命週期方法,SCWCD 認證專家應考指南(2/e)
17、 學貫行銷,2.4.4: Servlet生命週期之實例探討,ConnectDatabase這個Servlet將透過JDBC驅動程式建立Oracle9i資料庫連線,包含下列工作: 設定Oracle9i資料庫所在位置、TCP/IP連接埠, 以及Oracle SID 載入Oracle9i資料庫的JDBC驅動程式 利用scott使用者(密碼為tiger)建立資料庫連線,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.4.4: 初始化資料庫連線,public void init() throws ServletException String driver_type = oracle.jdbc.d
18、river.OracleDriver; String url = jdbc:oracle:thin:localhost:1521:ora9201; String username = scott; String passwd = tiger; / 載入 JDBC 驅動程式,並建立資料庫連線 try Class.forName(driver_type); conn = DriverManager.getConnection(url, username, passwd); DatabaseMetaData md = conn.getMetaData(); targetDB = md.getData
19、baseProductName(); catch (Exception e) ,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.4.4: 覆寫 doGet() 方法,public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(text/html); PrintWriter out = response.getWriter(); /* 產生HTTP請求之回應訊息, 例如:顯示目的
20、資料庫名稱,或是回傳某表格的查詢結果 */ out.close(); ,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.4.4: 卸載 Servlet 服務,public void destroy() try conn.close(); catch(SQLException e) ,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.4.4: ConnectDatabase.java,1.package scwcd.ch02; 2. 3.import javax.servlet.*; 4.import javax.servlet.http.*; 5.import java.io.*;
21、6.import java.util.*; 7.import java.sql.*; 8. 9.public class ConnectDatabase extends HttpServlet 10. Connection conn = null; 11. String targetDB; 12. int cannotConnect = 0; 13. 14. public void init() throws ServletException 15. String driver_type = oracle.jdbc.driver.OracleDriver;,SCWCD 認證專家應考指南(2/e
22、) 學貫行銷,2.4.4: ConnectDatabase.java,16. String url = jdbc:oracle:thin:localhost:1521:ora9201; 17. String username = scott; 18. String passwd = tiger; 19. 20. try 21. Class.forName(driver_type); 22. conn = DriverManager.getConnection(url, username, passwd); 23. DatabaseMetaData md = conn.getMetaData()
23、; 24. targetDB = md.getDatabaseProductName(); 25. 26. catch (ClassNotFoundException e) 27. cannotConnect = 1; 28. 29. catch (SQLException e) 30. cannotConnect = 2;,SCWCD 認證專家應考指南(2/e) 學貫行銷,2.4.4: ConnectDatabase.java,31. 32. 33. 34. public void doGet(HttpServletRequest request, 35. HttpServletResponse response
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆使用管理制度2
- 学校卫生综合监督规范考核试题及答案
- 四川省资阳市2026年中考英语二模试题附答案
- 2025年临床执业医师《基础医学》试卷
- 药品信息化追溯试题及答案
- 医疗服务价格三基三严考试题库及答案
- 石油化工安全试题及答案
- 医疗器械经营企业验收人员岗前培训试题及答案
- 182公司例会部门会议模板
- 筹建处主任安全责任制培训
- 新能源汽车故障诊断与排除全套教学课件
- 企业利润分配年度方案及执行细则
- 高空坠落安全事故培训课件
- 广州建筑工程安全培训课件
- 2025至2030中国肥料原料行业发展研究与产业战略规划分析评估报告
- 汽车吊安全培训教育课件
- 2025年国有企业总经理竞聘面试题及参考答案指南
- 招标投标实施条例课件
- 新课标文科全科-2026高考大纲TXT便利版
- 风电场规划设计与施工
- 2025年税务局上海面试题及答案
评论
0/150
提交评论