使用jspservlet技術開發(fā)新聞發(fā)布系統(tǒng)_第1頁
使用jspservlet技術開發(fā)新聞發(fā)布系統(tǒng)_第2頁
使用jspservlet技術開發(fā)新聞發(fā)布系統(tǒng)_第3頁
使用jspservlet技術開發(fā)新聞發(fā)布系統(tǒng)_第4頁
使用jspservlet技術開發(fā)新聞發(fā)布系統(tǒng)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第七章Servlet基礎預習檢查簡述Servlet與JSP的關系簡述Servlet的主要方法及其作用Servlet的生命周期包括哪幾個環(huán)節(jié)?寫出在web.xml中配置Servlet的主要元素集中測試2/43回顧與作業(yè)點評分頁功能實現(xiàn)的基本流程是什么?文件上傳的表單應如何設置?簡述使用Commons-Fileupload處理文件上傳的流程點評作業(yè)的提交情況和共性問題回顧作業(yè)點評3/43本章任務使用Servlet實現(xiàn)用戶登錄在Servlet中獲取初始化參數(shù)在Servlet中獲取系統(tǒng)上下文參數(shù)使用Servlet修改新聞主題操作4/43本章目標了解ServletAPI的常用接口和類掌握Servlet的部署和配置會使用Servlet處理用戶請求掌握Servlet的生命周期5/43什么是Servlet2-1Servlet是在服務器端運行的Java程序,可以接收客戶端請求并做出響應請求

響應Servlet運行于服務器端6/43什么是Servlet2-2Servlet可以動態(tài)生成HTML內容對客戶端進行響應請求響應Java代碼HTML代碼生成運行Servlet程序7/43Servlet與JSP的關系客戶端應用服務器2編譯JSP.class3執(zhí)行請求響應1翻譯.java演示:Servlet與JSP的關系問題Servlet與JSP都可以動態(tài)生成HTML內容,二者之間是否存在什么聯(lián)系?8/43importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassHelloServletTestextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{ response.setContentType("text/html;charset=UTF-8"); PrintWriterout=response.getWriter(); out.println("<html>"); out.println("<head><title>Servlet</title></head>"); out.println("<body>"); out.println("你好,歡迎來到Servlet世界"); out.println("</body>"); out.println("</html>"); out.close();}}初識Servlet繼承javax.servlet.http.HttpServlet類Servlet輸出HTML標簽和內容9/43Servlet體系結構接口HttpServletGenericServlet1抽象類2ServletConfigServlet10/43Servlet接口定義了所有Servlet需要實現(xiàn)的方法方法名稱功能描述voidinit(ServletConfigconfig)由Servlet容器調用,用于完成Servlet對象在處理客戶請求前的初始化工作voidservice(ServletRequest

req,

ServletResponse

res)由

Servlet容器調用,用來處理客戶端的請求voiddestroy()由

Servlet容器調用,釋放Servlet對象所使用的資源ServletConfiggetServletConfig()返回ServletConfig對象,該對象包含此Servlet的初始化和啟動參數(shù)。返回的ServletConfig對象是傳遞給init()方法的對象StringgetServletInfo()返回有關

Servlet的信息,比如作者、版本和版權。返回的字符串是純文本,而不是任何種類的標記(如HTML、XML等)11/43GenericServlet抽象類提供了Servlet與ServletConfig接口方法的默認實現(xiàn)(service()方法除外)方法名稱功能描述publicvoidinit(ServletConfigconfig)對Servlet接口中init()方法的實現(xiàn),對ServletConfig實例進行了保存。此方法還有一個無參的重載方法,可用于子類中重寫publicStringgetInitParameter(Stringname)返回web.xml中名稱為name的初始化參數(shù)的值publicServletContextgetServletContext()返回ServletContext對象的引用12/43HttpServlet抽象類繼承自GenericServlet處理HTTP協(xié)議的請求和響應方法名稱功能描述publicvoidservice(ServletRequestreq,ServletResponseres)對GenericServlet類中service()方法的實現(xiàn),將請求分發(fā)給protectedvoidservice(HttpServletRequestreq,HttpServletResponseres)protected

voidservice(HttpServletRequestreq,HttpServletResponseres)接收HTTP請求,并將它們分發(fā)給此類中定義的doXXX()方法protectedvoiddoXXX(HttpServletRequestreq,HttpServletResponseres)根據(jù)請求方式的不同分別調用的相應處理方法,如doGet()、doPost()等13/43ServletConfig接口在Servlet初始化過程中獲取配置信息一個Servlet只有一個ServletConfig對象方法名稱功能描述StringgetInitParameter(Stringname)獲取web.xml中設置的以name命名的初始化參數(shù)值ServletContextgetServletContext(

)返回Servlet的上下文對象引用14/43ServletContext接口獲取Web應用上下文,與Servlet容器進行通信方法名稱功能描述StringgetInitParameter(Stringname)獲取名為name的系統(tǒng)范圍的初始化參數(shù)值,系統(tǒng)范圍的初始化參數(shù)可在部署描述符中使用<context-param>元素定義voidsetAttribute(Stringname,Objectobject)設置名稱為name的屬性ObjectgetAttribute(Stringname)獲取名稱為name的屬性StringgetRealPath(

String

path)返回參數(shù)所代表目錄的真實路徑voidlog(Stringmessage)記錄一般日志信息15/43請求、響應相關接口ServletRequestHttpServletRequestServletResponseHttpServletResponse請求響應16/43ServletRequest接口獲取客戶端請求的數(shù)據(jù)方法名稱功能描述ObjectgetAttribute(Stringname)獲取名稱為name的屬性值voidsetAttribute(String

name,Object

object)在請求中保存名稱為name的屬性voidremoveAttribute(String

name)清除請求中名字為name的屬性StringgetCharacterEncoding()返回請求體所使用的字符編碼voidsetCharacterEncoding(Stringcharset)設置請求體的字符編碼StringgetParameter(Stringname)返回指定請求參數(shù)的值String[]getParameterValues(Stringname)返回指定請求參數(shù)的全部值RequestDispatchergetRequestDispatcher(Stringpath)返回指向指定路徑的請求分發(fā)對象17/43HttpServletRequest接口除了繼承ServletRequest接口中的方法,還增加了一些用于讀取HTTP請求信息的方法方法名稱功能描述StringgetContextPath()返回請求URI中表示請求上下文的路徑,上下文路徑是請求URI的開始部分Cookie[]getCookies()返回客戶端在此次請求中發(fā)送的所有cookie對象HttpSession

getSession()返回和此次請求相關聯(lián)的session,如果沒有給客戶端分配session,則創(chuàng)建一個新的sessionStringgetMethod()返回此次請求所使用的HTTP方法的名字,如GET、POSTStringgetHeader(Stringname)返回指定的請求頭信息18/43ServletResponse接口設置響應參數(shù)和向客戶端發(fā)送響應數(shù)據(jù)方法名稱功能描述PrintWritergetWriter()返回PrintWriter對象,用于向客戶端發(fā)送文本StringgetCharacterEncoding()返回在響應中發(fā)送的正文所使用的字符編碼voidsetCharacterEncoding(Stringcharset)設置響應的字符編碼voidsetContentType(Stringtype)設置發(fā)送到客戶端的響應的內容類型,此時響應的狀態(tài)屬于尚未提交19/43HttpServletResponse接口除了繼承ServletResponse接口中的方法,還增加了適用于HTTP響應的新方法方法名稱功能描述voidaddCookie(Cookiecookie)增加一個cookie到響應中,這個方法可多次調用,設置多個cookievoidaddHeader(Stringname,Stringvalue)將一個名稱為name,值為value的響應報頭添加到響應中voidsendRedirect(Stringlocation)發(fā)送一個臨時的重定向響應到客戶端,以便客戶端訪問新的URLvoidencodeURL(Stringurl)使用sessionID對用于重定向的URL進行編碼20/43Servlet的應用創(chuàng)建Servlet繼承HttpServlet重寫doPost()或doGet()方法部署Servlet編譯Servlet到/WEB-INF/classes目錄編輯部署描述文件web.xml<servlet><servlet-mapping><url-pattern>啟動Tomcat,訪問Servlet演示示例1:HelloServlet21/43學員操作—實現(xiàn)用戶登錄2-1訓練要點編寫Servlet配置Servlet,實現(xiàn)Servlet的編譯和部署需求說明編寫Servlet,驗證用戶登錄如果用戶名與密碼都為“admin”則驗證通過,跳轉歡迎頁面否則彈出提示信息“用戶名或密碼錯誤,請重新輸入!”,點擊“確定”后跳轉至登錄頁面指導講解需求說明22/43學員操作—實現(xiàn)用戶登錄2-2實現(xiàn)思路繼承HttpServlet編寫Servlet配置web.xml啟動Tomcat,訪問Servlet指導完成時間:20分鐘23/43共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調試技巧共性問題集中講解24/43使用Servlet實現(xiàn)控制器2-1修改控制器主題控制頁顯示主題更新主題添加主題JSPServlet25/43使用Servlet實現(xiàn)控制器2-2publicclassTopicServletextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponse response)throwsServletException,IOException{ ......

Stringopr=request.getParameter("opr"); TopicsServicetopicsService=newTopicsServiceImpl();

StringcontextPath=request.getContextPath(); if(opr.equals("list")){//查找所有主題

List<Topic>list=topicsService.getAllTopics(); request.setAttribute("list",list);

request.getRequestDispatcher(contextPath+"/newspages/topic_list.jsp")

.forward(request,response); }

……

}}<divid="opt_list"><ul><li><ahref="../util/news_control.jsp?opr=findTopics">添加新聞</a></li><li><ahref="../util/news_control.jsp?opr=list">編輯新聞</a></li><li><ahref="../newspages/topic_add.jsp">添加主題</a></li>

<li><ahref="../util/topics?opr=list">編輯主題</a></li></ul></div>演示示例2:使用Servlet實現(xiàn)控制器26/43學員操作—修改新聞主題操作需求說明創(chuàng)建一個Servlet作為控制器,修改新聞主題操作練習完成時間:20分鐘27/43共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調試技巧共性問題集中講解28/43Servlet的生命周期2-1生命周期的各個階段實例化Servlet容器創(chuàng)建Servlet的實例初始化該容器調用init

(ServletConfig)方法服務如果請求Servlet,則容器調用service()方法銷毀實例之前調用destroy()方法銷毀29/43Servlet的生命周期2-2Servlet的生命周期HTTP請求容器12解析請求345響應6創(chuàng)建Servlet實例調用init()方法Servlet調用service()方法調用destroy()方法輸出響應信息78演示示例3:Servlet的生命周期30/43獲取Servlet初始化參數(shù)2-1Servlet初始化參數(shù)配置<web-app><servlet><servlet-name>HelloServlet</servlet-name><servlet-class>demo.servlet.HelloServlet</servlet-class><init-param><param-name>initParam</param-name><param-value>HelloServlet</param-value></init-param></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/HelloServlet</url-pattern></servlet-mapping></web-app>31/43獲取Servlet初始化參數(shù)2-2獲取初始化參數(shù)publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{System.out.println("處理請求時,doGet()方法被調用。");StringinitParam=getInitParameter("initParam");System.out.println(initParam);}根據(jù)參數(shù)名稱進行讀取

演示示例4:獲取Servlet初始化參數(shù)32/43學員操作—獲取初始化參數(shù)需求說明編寫Servlet,并設置Servlet初始化參數(shù),然后調用Servlet,在控制臺輸出顯示“歡迎XXX”修改web.xml配置初始化參數(shù),添加<init-param>元素并設定參數(shù)名稱及參數(shù)值編寫Servlet,在doGet()方法中獲取初始化參數(shù),輸出到控制臺顯示練習提示完成時間:20分鐘33/43共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調試技巧共性問題集中講解34/43獲取Servlet上下文參數(shù)2-1配置Servlet上下文<web-app>

<context-param><param-name>contextParam</param-name><param-value>HelloServlet</param-value></context-param><!--省略其他配置--></web-app>初始化參數(shù)的名字初始化參數(shù)的值35/43獲取Servlet上下文參數(shù)2-2讀取Servlet上下文publicclassHelloServletextendsHttpServlet{ //…省略其他代碼

publicvoiddoGet(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException,IOException{ System.out.println("處理請求時,doGet()方法被調用。"); StringinitParam=getInitParameter("initParam");

StringcontextParam=

this.getServletContext().getInitParameter("contextParam"); System.out.println("Servlet初始化參數(shù)"+initParam); System.out.println("系統(tǒng)初始化參數(shù)"+contextParam); }}根據(jù)參數(shù)名稱進行讀取

演示示例5:獲取Servlet上下文參數(shù)36/43學員操作—獲取系統(tǒng)上下文參數(shù)需求說明編寫Servlet,并設置系統(tǒng)初始化參數(shù),部署運行輸出顯示“系統(tǒng)的初始化參數(shù)是:ThisisSystem’sparameter”練習完成時間:20分鐘37/43共性問題集中講解常見問題及解決辦法代碼規(guī)范問題調試技巧共性問題集中講解38/43總結2-1運行在Servlet容器中的Java類,可以接受請求并產生響應ServletAPI開發(fā)Servlet部署和訪問JSP本質上是一個Servlet,JS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論