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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

響應(yīng)Servlet運(yùn)行于服務(wù)器端6/43什么是Servlet2-2Servlet可以動(dòng)態(tài)生成HTML內(nèi)容對(duì)客戶(hù)端進(jìn)行響應(yīng)請(qǐng)求響應(yīng)Java代碼HTML代碼生成運(yùn)行Servlet程序7/43Servlet與JSP的關(guān)系客戶(hù)端應(yīng)用服務(wù)器2編譯JSP.class3執(zhí)行請(qǐng)求響應(yīng)1翻譯.java演示:Servlet與JSP的關(guān)系問(wèn)題Servlet與JSP都可以動(dòng)態(tài)生成HTML內(nèi)容,二者之間是否存在什么聯(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("你好,歡迎來(lái)到Servlet世界"); out.println("</body>"); out.println("</html>"); out.close();}}初識(shí)Servlet繼承javax.servlet.http.HttpServlet類(lèi)Servlet輸出HTML標(biāo)簽和內(nèi)容9/43Servlet體系結(jié)構(gòu)接口HttpServletGenericServlet1抽象類(lèi)2ServletConfigServlet10/43Servlet接口定義了所有Servlet需要實(shí)現(xiàn)的方法方法名稱(chēng)功能描述voidinit(ServletConfigconfig)由Servlet容器調(diào)用,用于完成Servlet對(duì)象在處理客戶(hù)請(qǐng)求前的初始化工作voidservice(ServletRequest

req,

ServletResponse

res)由

Servlet容器調(diào)用,用來(lái)處理客戶(hù)端的請(qǐng)求voiddestroy()由

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

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

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

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

String

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

name,Object

object)在請(qǐng)求中保存名稱(chēng)為name的屬性voidremoveAttribute(String

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

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

(ServletConfig)方法服務(wù)如果請(qǐng)求Servlet,則容器調(diào)用service()方法銷(xiāo)毀實(shí)例之前調(diào)用destroy()方法銷(xiāo)毀29/43Servlet的生命周期2-2Servlet的生命周期HTTP請(qǐng)求容器12解析請(qǐng)求345響應(yīng)6創(chuàng)建Servlet實(shí)例調(diào)用init()方法Servlet調(diào)用service()方法調(diào)用destroy()方法輸出響應(yīng)信息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("處理請(qǐng)求時(shí),doGet()方法被調(diào)用。");StringinitParam=getInitParameter("initParam");System.out.println(initParam);}根據(jù)參數(shù)名稱(chēng)進(jìn)行讀取

演示示例4:獲取Servlet初始化參數(shù)32/43學(xué)員操作—獲取初始化參數(shù)需求說(shuō)明編寫(xiě)Servlet,并設(shè)置Servlet初始化參數(shù),然后調(diào)用Servlet,在控制臺(tái)輸出顯示“歡迎XXX”修改web.xml配置初始化參數(shù),添加<init-param>元素并設(shè)定參數(shù)名稱(chēng)及參數(shù)值編寫(xiě)Servlet,在doGet()方法中獲取初始化參數(shù),輸出到控制臺(tái)顯示練習(xí)提示完成時(shí)間:20分鐘33/43共性問(wèn)題集中講解常見(jiàn)問(wèn)題及解決辦法代碼規(guī)范問(wèn)題調(diào)試技巧共性問(wèn)題集中講解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("處理請(qǐng)求時(shí),doGet()方法被調(diào)用。"); StringinitParam=getInitParameter("initParam");

StringcontextParam=

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論