Web程序設計課件:MVC_第1頁
Web程序設計課件:MVC_第2頁
Web程序設計課件:MVC_第3頁
Web程序設計課件:MVC_第4頁
Web程序設計課件:MVC_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

MVC2025/5/211本章課程目標知識目標掌握MVC基本工作原理與開發過程;理解JSP、JavaBean、Servlet在MVC模式中的角色和工作;能力要求:能根據需求編寫JSP+JavaBean+Servlet的模塊MVC實現能根據需要設計MVC各個模塊間恰當的數據傳遞方式2025/5/21《Web程序設計》2主要內容2025/5/21《Web程序設計》31JSP開發模式2MVC模式3JSP+JavaBean+Servlet實現MVC4綜合實例JSP作為一種動態網頁編程技術,既可以有效地融合HTML、CSS等前端編程技術,還可以通過嵌入Java代碼實現所需的業務邏輯。因此,就JSP本身而言,可以獨立完整地實現任何實際業務模塊。然而,在進行實際業務系統模塊開發時,JSP本身的缺點也是顯而易見的。2025/5/21《Web程序設計》4JSP缺點可讀性差既包含HTML、CSS、Javascript前端技術代碼,也包含了Java代碼、JSP標簽等服務器端代碼,容易造成頁面上代碼冗長,代碼可讀性差。可維護性差由于各種代碼混雜在一起,各種前后端語言的注釋方式不一致,造成后期維護時,代碼不易理解,代碼之間的關聯性大,頁面上前后代碼間的耦合不易察覺,容易造成維護時帶來很多新BUG,降低系統可用性和用戶體驗。可重用性差特別是JSP中的Java代碼與JSP標簽庫,在業務邏輯近似或相同的情況下,代碼重用只能通過復制粘貼等簡單方式,在維護時極為不便。可擴展性差JSP頁面的功能具體由Java、HTML、JSP標簽等元素共同完成,因此,在系統擴展功能時,需要先找到相應位置,可能會有多個,再分別插入擴展功能的代碼,不僅容易造成遺漏,還可能帶來潛在的BUG。2025/5/21《Web程序設計》5較為典型的是JSP開發模式有兩種,一是Model1模式,使用JSP+JavaBean技術;另一種是Model2模式,也即MVC模式,使用Jsp+JavaBean+Servlet技術。Model1模式,使用JSP與JavaBean技術,將頁面顯示和業務邏輯處理分開,用JSP實現頁面顯示,JavaBean對象用來保存數據和實現業務邏輯,在JSP中使用JavaBean來實現相應業務邏輯。2025/5/21《Web程序設計》6Model12025/5/21《Web程序設計》7Model1模式的特點如下:1)優點:架構較為簡單,容易上手,比較適合小型項目開發。2)缺點:JSP的職責過多,承擔工作復雜,不利于維護與擴展。2025/5/21《Web程序設計》8主要內容2025/5/21《Web程序設計》91JSP開發模式2MVC模式3JSP+JavaBean+Servlet實現MVC4綜合實例MVC是一種經典的設計模式,把交互系統分解成模型(Model)、視圖(View)、控制器(Controller)三種組件。三種組件分別完成相應的職責,通過三者之間的交互,實現業務系統。這種模式強制性地使應用程序的輸入、處理和輸出分開,實現了系統間組件解耦、模塊代碼復用、可擴展易維護等特性。2025/5/21《Web程序設計》10模型(Model)是軟件所處理問題邏輯在獨立于外在顯示內容和形式情況下的內在抽象,封裝了問題的核心數據、邏輯和功能的計算關系,它獨立于具體的界面表達和I/O操作。視圖(View)是表示模型數據及邏輯關系和狀態的信息,以特定的形式展示給用戶。它從模型獲得需要顯示的信息,允許多個視圖存在,即對相同的信息可以有多個不同的顯示形式。控制器(Controller)是用來處理用戶與軟件的交互操作,主要職責是控制提供模型中任何變化的傳播,確保用戶界面及時展示模型的結果信息;它接受用戶的輸入,將輸入反饋給模型,進而實現對模型的計算控制,是使模型和視圖協調工作的組件。通常一個視圖對應一個控制器。2025/5/21《Web程序設計》11工作過程Controller接受用戶在View上發送的請求,解析請求的路徑、參數以及表達的意圖,找到處理該請求的具體Controller;Controller根據請求的意圖和參數,向Model層調用相關的業務邏輯模塊,并將參數傳遞給這個模塊;Model層接受Controller層的調用,以及傳遞的參數,訪問數據庫或計算數據計算,返回結果給Controller層。Controller層接收到Model層返回的相關數據結果,組裝數據和表示形成View.View層根據Controller返回的數據視圖,解析數據和內容,將這些結果以特定的格式展現給用戶。2025/5/21《Web程序設計》12MVC模式的優點在于:Model、View、Controller每層負責各自的事情,符合單一職責原則,使得代碼更加易于維護和優化。

通過Controller層,將視圖和業務邏輯進行了解耦,將數據展示和數據生成放到了不同的模塊中,易于維護與擴展。需要注意的,在實際工程中,如果采用MVC模式但沒有統一的開發框架,可能導致項目的開發周期變長,建議采用SpringMVC、SSM或類似的典型開發框架,提高開發效率、加速項目進度。2025/5/21《Web程序設計》13主要內容2025/5/21《Web程序設計》141JSP開發模式2MVC模式3JSP+JavaBean+Servlet實現MVC4綜合實例Model2在JSP開發模式中,MVC模式也稱為Model2模式,主要由JSP+JavaBean+Servlet實現。Servlet主要實現了Controller的職責,負責接受用戶在瀏覽器上的請求;JavaBean主要實現了Model的職責,根據Controller傳遞的參數進行數據操作,與數據庫連接;JSP主要實現了View的職責,將Controller返回的數據結果,形成最終展示在瀏覽器上的頁面。2025/5/21《Web程序設計》152025/5/21《Web程序設計》16主要內容2025/5/21《Web程序設計》171JSP開發模式2MVC模式3JSP+JavaBean+Servlet實現MVC4綜合實例項目背景及需求假設MySql數據庫book_db中有一個圖書表(t_book),和一個圖書類型表(t_book_type),主要存儲網上商城中的圖書基本信息,主要的字段及類型說明如下2025/5/21《Web程序設計》18業務流程2025/5/21《Web程序設計》19(1)查詢展示圖書(1)功能需求該模塊的主要功能為根據輸入的字段查詢圖書資料信息,將結果以表格的形式展現在頁面上。查詢展示數據的操作流程如下:1)點擊“圖書查詢”頁面,進入到該頁面,顯示所有圖書列表信息;2)輸入某個查詢字符,如圖書名稱,圖書編號,點擊查詢;3)從數據表中查詢與該查詢字段匹配的圖書記錄,顯示在頁面上的表格中。2025/5/21《Web程序設計》20BookVO2025/5/21《Web程序設計》21publicclassBookVO{privateintid;/*自增長ID*/privateStringbookName=null;/*圖書名稱*/privateStringbarCode=null;/*圖書條形碼*/privateStringpublish=null;/*圖書出版社*/privateDatepublishDate=null;/*圖書出版日期*/privatefloatprice;/*圖書價格*/privateintcount;/*圖書庫存量*/privateStringcoverPic=null;/*圖書封面*/privateintbookType;/*圖書類型ID*/privateStringbookTypeName=null;/*圖書類型名稱*//*構造方法*/publicBookVO(){}.......BookDAO.java2025/5/21《Web程序設計》22publicclassBookDAO{/***根據條件查詢圖書信息*@paramparams參數列表,Map的key為參數名稱(pName|pBarCode|pPublish)*,value為參數的值*@return返回符合條件的圖書信息列表*/publicList<BookVO>listBook(Map<String,String>params){Connectionconn=DbUtil.getConnection();Stringsql="select*fromt_bookbleftjoint_book_typetonb.bookType=t.typeIdwhere1=1";PreparedStatementpstmt=null;ResultSetrs=null;List<BookVO>list=newVector<BookVO>();......book_list.jsp2025/5/21《Web程序設計》23<%StringpCode=(String)request.getAttribute("pBarCode");StringpName=(String)request.getAttribute("pName");StringpPublish=(String)request.getAttribute("pPublish");%><divid="container"><divid="location">當前位置:圖書模塊》查詢圖書信息</div><divid="buttons"><inputtype="button"value="新增圖書"onclick="location.href='/book/edit?optype=add'"></div><divid="queryArea"><formname="frmMain"action="/book/list"method="post"><span>圖書名稱:<inputtype="text"name="pName"value="<%=pName%>"></span><span>圖書編號:<inputtype="text"name="pCode"value="<%=pCode%>"></span><span>出版社:<inputtype="text"name="pPublish"value="<%=pPublish%>"></span><span><inputtype="submit"value="查詢"><inputtype="reset"value="清空"></span></form></div>BookListServlet.java2025/5/21《Web程序設計》24@WebServlet("/book/list")publicclassBookListServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doPost(request,response);}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//獲取查詢參數StringbookName=StringUtil.ToCN(request.getParameter("pName"));StringbarCode=StringUtil.ToCN(request.getParameter("pBarCode"));Stringpublish=StringUtil.ToCN(request.getParameter("pPublish"));......(2)編輯圖書編輯圖書主要分為:添加圖書,修改圖書,刪除圖書。其功能主要是提供一個共用的圖書信息編輯頁面(book_edit.jsp),該頁上以表單和字段的形式提供用戶編輯,填寫完成后,將此操作提交到BookEditServlet.java,由該控制器向數據庫提交這些圖書信息。主要功能需求為:點擊添加圖書按鈕,將用戶輸入的圖書信息提交至數據庫t_book表中。點擊修改按鈕,將用戶修改的圖書信息提交至數據庫t_book表中。點擊刪除按鈕,將數據庫t_book表中的圖書信息刪除。2025/5/21《Web程序設計》25BookTypeDAO.java2025/5/21《Web程序設計》26Stringsql="select*fromt_book_typewhere1=1";PreparedStatementpstmt=null;ResultSetrs=null;List<BookTypeVO>list=newVector<BookTypeVO>();try{//如果parentId為空,則表示查詢一級分類,否則查詢二級分類if(StringUtil.isNullOrEmpty(parentId))parentId="0";sql+="andparentId=?";pstmt=conn.prepareStatement(sql);pstmt.setString(1,parentId);rs=pstmt.executeQuery();while(rs.next()){BookTypeVOobj=newBookTypeVO();obj.setTypeId(rs.getInt("typeId"));obj.setTypeName(rs.getString("typeName"));obj.setParentId(rs.getInt("parentId"));list.add(obj);}}BookTypeListServlet.java2025/5/21《Web程序設計》27@WebServlet("/booktype/listtype")publicclassBookTypeListServletextendsHttpServlet{protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringpid=request.getParameter("pid");BookTypeDAOdao=newBookTypeDAO();List<BookTypeVO>typeList=dao.listBookType(pid);StringBuilderstr=newStringBuilder("[");for(BookTypeVOt:typeList){if(str.length()>1)str.append(",");str.append("{\"id\":\"").append(t.getTypeId()).append("\",");str.append("\"name\":\"").append(t.getTypeName()).append("\"}");}str.append("]");response.setContentType("text/html;charset=utf-8");PrintWriterout=response.getWriter();out.println(str.toString());......Book_edit.jsp2025/5/21《Web程序設計》28<formname="frmMain"action="/book/save"method="post"><tablewidth="600"border="0"><caption><h2>填寫圖書信息</h2></caption><tr><td>圖書名稱:</td><td><inputtype="text"name="book_name“value="<%=book.getBookName()==null?"":book.getBookName()%>"></td></tr><tr><td>圖書條形碼:</td><td><inputtype="text"name="bar_code“value=“<%=book.g

溫馨提示

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

評論

0/150

提交評論