Java Web應(yīng)用開發(fā)項目教程 課件 第六章 基于MVC模式的訂單模塊_第1頁
Java Web應(yīng)用開發(fā)項目教程 課件 第六章 基于MVC模式的訂單模塊_第2頁
Java Web應(yīng)用開發(fā)項目教程 課件 第六章 基于MVC模式的訂單模塊_第3頁
Java Web應(yīng)用開發(fā)項目教程 課件 第六章 基于MVC模式的訂單模塊_第4頁
Java Web應(yīng)用開發(fā)項目教程 課件 第六章 基于MVC模式的訂單模塊_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

JavaWeb應(yīng)用開發(fā)計算機(jī)與軟件學(xué)院第6章基于MVC模式的訂單模塊■本章要點(diǎn):

前臺訂單操作功能設(shè)計與實現(xiàn)后臺訂單操作功能設(shè)計與實現(xiàn)Servlet控制器設(shè)計與實現(xiàn)模型JavaBean業(yè)務(wù)操作設(shè)計與實現(xiàn)MVC開發(fā)模式JSP與Servlet關(guān)系6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■功能分析與設(shè)計前臺:會員查看自己所有的訂單在前臺JSP頁面(cartSelect.jsp)可以提交四種請求:

1.查看自己的所有訂單

2.在自己所有的訂單中查看已經(jīng)出貨的訂單

3.在自己所有的訂單中查看尚未出貨的訂單

4.查看自己某一訂單的詳細(xì)信息6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■功能分析與設(shè)計功能圖6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■功能分析與設(shè)計操作流程6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■功能分析與設(shè)計

后臺管理員:后臺JSP頁面,可以提交六種請求:

1.查看商城所有的訂單

2.查看所有已經(jīng)出貨的訂單

3.查看所有尚未出貨的訂單

4.查看某一訂單的詳細(xì)信息

5.對某一訂單進(jìn)行出貨操作

6.刪除某一訂單6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■功能分析與設(shè)計功能圖6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■功能分析與設(shè)計

●MVC開發(fā)模式

通常這種分層方式被稱為MVC(ModelViewController)三層結(jié)構(gòu)。請求由Controller(控制器)開始,分發(fā)給對應(yīng)業(yè)務(wù)操作,Model(模型)代表的數(shù)據(jù)模型承擔(dān)業(yè)務(wù)操作,最后將得到的結(jié)果送到View(視圖)層顯示。6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■訂單顯示開發(fā)流程(orderList.jsp)

登錄會員點(diǎn)擊“查看訂單”菜單,向Servlet容器發(fā)送請求,Servlet容器接收客戶請求,查詢會員所有訂單信息,最后將響應(yīng)結(jié)果轉(zhuǎn)發(fā)到訂單顯示頁面。訂單顯示頁面如下:6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■Servlet容器根據(jù)orderAction區(qū)分客戶請求主要涉及:查當(dāng)前用戶訂單:orderAction="orderAbstract"))返回:list=order.selectOrderByName(curUserName)orderAction.equals("orderDelivered")返回:list=order.selectOrderByNameAndDeliverySign(用戶,出貨標(biāo)志);某個訂單詳細(xì)信息:orderAction="orderDetail"))返回:list=orderDetail.selectOrderDetailByNumber(orderId);6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■開發(fā)流程1.添加“查詢訂單”入口,發(fā)起的http請求。2.在類OrderDao.java中,定義查詢會員訂單的方法。3.創(chuàng)建Servlet控制器類OrderServlet.java,重寫doPost()方法,在方法中完成業(yè)務(wù)邏輯:(1)獲取會員請求類別信息,存到orderAction中;(2)響應(yīng)http查詢訂單請求,執(zhí)行相應(yīng)的業(yè)務(wù)邏輯;(3)調(diào)用方法,從后臺取得會員所有訂單資料;(4)轉(zhuǎn)發(fā)頁面至orderList.jsp頁面,顯示訂單信息。4.修改配置文件web.xml。5.創(chuàng)建訂單顯示頁面orderList.jsp頁面,從request中取得訂單信息并顯示。6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■顯示訂單詳細(xì)開發(fā)流程概述(orderItemList.jsp

控制器orderAction和orderId的值,確定需執(zhí)行的操作;其中第一個參數(shù)確定是顯示詳細(xì)訂單信息,第二個參數(shù)是訂單編號;形如,http://localhost:8080/estore/OrderServlet?orderAction=orderDetail&orderId=2014100711402202921386.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■編程詳解orderItemList.jsp1.添加查詢?nèi)肟?,傳遞訂單號orderId,發(fā)起http請求。2.添加方法OrderDetailDao.selectOrderDetailByNumber(StringorderId)。3.在doPost()中響應(yīng)http“訂單詳細(xì)信息”請求,并完成業(yè)務(wù)處理。4.新建orderItemList.jsp頁面,從request中取得訂單詳細(xì)集合,遍歷集合,顯示訂單信息。6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■Servlet控制器OrderServlet.java的實現(xiàn)Servlet與JspJSP是一種特殊的Servlet,所有的JSP頁面最終都會被服務(wù)器轉(zhuǎn)換成Servlet來執(zhí)行。JSP頁面被請求時,服務(wù)器會先根據(jù)JSP頁面生成Java文件,然后使用jdk的編譯器將此文件編譯,得到的class文件處理用戶的請求并返回響應(yīng)。再次請求JSP頁面,服務(wù)器先檢查JSP文件是否被修改過修改:重新生成Java,重新編譯沒有修改:直接運(yùn)行上次的class文件

6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■Servlet控制器OrderServlet.java的實現(xiàn)●JSP文件運(yùn)行過程圖6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作示例第一步:編寫HelloServlet.java類,編譯成class放在WEB-INF/classes下。packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassHelloServletextends

HttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter();out.println("hello");}}HelloServlet在doGet()方法中獲取response(響應(yīng)),寫入“hello”。6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作示例第二步:修改WEB-INF目錄下的web.xml,添加HelloServlet的配置信息。<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"version="2.4"><servlet><servlet-name>HlloeServlet</servlet-name><servlet-class>servlet.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/HelloServlet</url-pattern></servlet-mapping></web-app>6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作示例運(yùn)行結(jié)果如下:6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作示例編寫一個效果與HelloServlet完全一樣的hello.jsp放在WEB-INF目錄下運(yùn)行結(jié)果6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作示例Hello.jsp文件編譯后所在文件目錄圖

在Catalina/localhost/org/apache/jsp目錄下,可以看到兩個文件,分別是hello_jsp.class和hello_jsp.java。6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■創(chuàng)建Servlet類OrderServlet.java(第一步)6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■創(chuàng)建Servlet類OrderServlet.java(第二步)6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■創(chuàng)建Servlet類OrderServlet.java(第三步)6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■創(chuàng)建Servlet類OrderServlet.java(第四步)

1)為OrderServlet添加方法和完善doPost()方法和doget()方法

2)OrderServlet控制器根據(jù)操作元素orderAction的值確定執(zhí)行相應(yīng)原動作:前臺已經(jīng)響應(yīng)了orderList和orderDetails,和按出貨狀態(tài)查詢的請求代碼,后臺主要涉及到下列標(biāo)識orderDelivered,deliverySign是訂單發(fā)貨標(biāo)志selectAllOrder是查詢所有用戶訂單Despatch是根據(jù)獲取的orderId設(shè)置出貨狀態(tài)deleteOrder是根據(jù)獲取的orderId刪除指定訂單等實現(xiàn)了管理員對訂單的增刪改查要求。6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■創(chuàng)建Servlet類OrderServlet.java(第四步)為OrderServlet添加方法和完善doPost()方法和doget()方法

if(orderAction.equals("despatch")){//根據(jù)獲取的orderId出貨Listlist=newArrayList();Stringi=request.getParameter("i");if(i!=null)request.setAttribute("i",i);order.updateSignOrder(request.getParameter("orderId").toString());//更改出貨狀態(tài)list=order.selectAllOrder();//刷新訂單顯示request.setAttribute("AllOrder",list);request.getRequestDispatcher("pages/admin/order/orderSelect.jsp").forward(request,response);}6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■創(chuàng)建Servlet類OrderServlet.java(第四步)為OrderServlet添加方法和完善doPost()方法和doget()方法

//后臺所有客戶訂單顯示if(orderAction.equals("selectAllOrder")){//查詢所有訂單Listlist=newArrayList();Stringi=request.getParameter("i");if(i!=null)request.setAttribute("i",i);list=order.selectAllOrder();request.setAttribute("AllOrder",list);request.getRequestDispatcher("pages/admin/order/orderList.jsp").forward(request,response);}6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■創(chuàng)建Servlet類OrderServlet.java(第四步)為OrderServlet添加方法和完善doPost()方法和doget()方法if(orderAction.equals("deleteOrder")){//根據(jù)獲取的orderId刪除指定訂單Listlist=newArrayList();Stringi=request.getParameter("i");if(i!=null)request.setAttribute("i",i);order.deleteOrder(request.getParameter("orderId").toString());//刪除指定orderId訂單list=order.selectAllOrder();//所有訂單重新讀取繼續(xù)顯示request.setAttribute("AllOrder",list);request.getRequestDispatcher("pages/admin/order/orderList.jsp").forward(request,response);}6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■創(chuàng)建Servlet類OrderServlet.java(第四步)為OrderServlet添加方法和完善doPost()方法和doget()方法其它增刪改查的功能均與上述例子類似//若上述標(biāo)志均不滿足,則顯示主頁面else{//沒有對應(yīng)的action,顯示主頁面out.println("<script>parent.location.href='/estore/pages/product/main.jsp';</script>");}out.flush();out.close();…6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■模型和JavaBean

根據(jù)OrderServet方法調(diào)用請求,在OrderDao.java中添加相應(yīng)的方法:6.1使用JSP+Servlet+JavaBean

實現(xiàn)訂單操作■Servlet技術(shù)特性分析

Servlet可完成如下功能:

(1)創(chuàng)建動態(tài)完整的HTML頁面(2)創(chuàng)建可嵌入的HTML片段(3)與其它服務(wù)器資源(包括數(shù)據(jù)庫和基于Java的應(yīng)用程序)進(jìn)行通信(4)實時處理多個客戶的請求(5)對特殊的處理采用MIME類型過濾數(shù)據(jù),如圖像轉(zhuǎn)換(6)將定制的處理提供給所有服務(wù)器的標(biāo)準(zhǔn)例行程序。例如,Servlet可以修改如何認(rèn)證用戶6.2Servlet知識總結(jié)■Servlet的生命周期初始化 服務(wù)器創(chuàng)建一個Servlet實例并且調(diào)用Servlet的init()方法初始化Servlet裝入:如果已配置自動裝入選項,則在服務(wù)器啟動時自動裝入客戶機(jī)首次向Servlet發(fā)出請求重新裝入Servlet請求處理 服務(wù)器調(diào)用Servlet的service()方法,service()方法從“請求”對象獲得請求信息、處理該請求并用“響應(yīng)”對象的方法以將響應(yīng)傳回客戶機(jī)。service()方法可以調(diào)用其它方法來處理請求,例如doGet()、doPost()或其它的方法。終止 當(dāng)服務(wù)器不再需要Servlet,或重新裝入Servlet的新實例時,服務(wù)器會調(diào)用Servlet的destroy()方法。6.2Servlet知識總結(jié)■JavaServletAPIinit()方法

在Servlet的生命期中,僅執(zhí)行一次init()方法。在服務(wù)器裝入Servlet時執(zhí)行的??梢赃M(jìn)行配置,在啟動服務(wù)器或客戶機(jī)首次訪問Servlet時裝入Servlet。無論有多少客戶機(jī)訪問Servlet,都不會重復(fù)執(zhí)行init()service()方法

service()方法是Servlet的核心。每當(dāng)一個客戶請求一個HttpServlet對象,該對象的service()方法就要被調(diào)用,而且傳遞給這個方法一個“請求”(ServletRequest)對象和一個“響應(yīng)”(ServletResponse)對象作為參數(shù)。 在HttpServlet中已存在service()方法。缺省的服務(wù)功能是調(diào)用與HTTP請求的方法相應(yīng)的do功能。Servlet編程:覆蓋doXxx()方法,GET:doGet()6.2Servlet知識總結(jié)■

JavaServletAPI

destroy()方法

destroy()方法僅執(zhí)行一次,即在服務(wù)器停止且卸載Servlet時執(zhí)行該方法。

GetServletConfig()方法

GetServletConfig()方法返回一個ServletConfig對象,該對象用來返回初始化參數(shù)和ServletContext。ServletContext接口提供有關(guān)servlet的環(huán)境信息。

GetServletInfo()方法

GetServletInfo()方法是一個可選的方法,它提供有關(guān)servlet的信息,如作者、版本、版權(quán)。6.2Servlet知識總結(jié)■創(chuàng)建HTTPServlet類

四個步驟:

1)擴(kuò)展HttpServlet抽象類

2)重載適當(dāng)?shù)姆椒?。如覆蓋(或稱為重寫)doGet()或doPost()方法

3)用HttpServletRequest對象獲取請求信息,常用方法:

getParameterNames()getParameter()getParameterValues()4)生成HTTP響應(yīng)。使用HttpServletResponse對象生成響應(yīng),“響應(yīng)”對象含有g(shù)etWriter()方法以返回一個PrintWriter對象。使用PrintWriter的print()和println()方法以編寫Servlet響應(yīng)來返回給客戶機(jī)。或者,直接使用out對象輸出有關(guān)H

溫馨提示

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

評論

0/150

提交評論