




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章MVC主讲人:2025/2/61本章课程目标知识目标掌握MVC基本工作原理与开发过程;理解JSP、JavaBean、Servlet在MVC模式中的角色和工作;能力要求:能根据需求编写JSP+JavaBean+Servlet的模块MVC实现能根据需要设计MVC各个模块间恰当的数据传递方式2025/2/6《Web程序设计》2主要内容2025/2/6《Web程序设计》31JSP开发模式2MVC模式3JSP+JavaBean+Servlet实现MVC4综合实例JSP作为一种动态网页编程技术,既可以有效地融合HTML、CSS等前端编程技术,还可以通过嵌入Java代码实现所需的业务逻辑。因此,就JSP本身而言,可以独立完整地实现任何实际业务模块。然而,在进行实际业务系统模块开发时,JSP本身的缺点也是显而易见的。2025/2/6《Web程序设计》4JSP缺点可读性差既包含HTML、CSS、Javascript前端技术代码,也包含了Java代码、JSP标签等服务器端代码,容易造成页面上代码冗长,代码可读性差。可维护性差由于各种代码混杂在一起,各种前后端语言的注释方式不一致,造成后期维护时,代码不易理解,代码之间的关联性大,页面上前后代码间的耦合不易察觉,容易造成维护时带来很多新BUG,降低系统可用性和用户体验。可重用性差特别是JSP中的Java代码与JSP标签库,在业务逻辑近似或相同的情况下,代码重用只能通过复制粘贴等简单方式,在维护时极为不便。可扩展性差JSP页面的功能具体由Java、HTML、JSP标签等元素共同完成,因此,在系统扩展功能时,需要先找到相应位置,可能会有多个,再分别插入扩展功能的代码,不仅容易造成遗漏,还可能带来潜在的BUG。2025/2/6《Web程序设计》5较为典型的是JSP开发模式有两种,一是Model1模式,使用JSP+JavaBean技术;另一种是Model2模式,也即MVC模式,使用Jsp+JavaBean+Servlet技术。Model1模式,使用JSP与JavaBean技术,将页面显示和业务逻辑处理分开,用JSP实现页面显示,JavaBean对象用来保存数据和实现业务逻辑,在JSP中使用JavaBean来实现相应业务逻辑。2025/2/6《Web程序设计》6Model12025/2/6《Web程序设计》7Model1模式的特点如下:1)优点:架构较为简单,容易上手,比较适合小型项目开发。2)缺点:JSP的职责过多,承担工作复杂,不利于维护与扩展。2025/2/6《Web程序设计》8主要内容2025/2/6《Web程序设计》91JSP开发模式2MVC模式3JSP+JavaBean+Servlet实现MVC4综合实例MVC是一种经典的设计模式,把交互系统分解成模型(Model)、视图(View)、控制器(Controller)三种组件。三种组件分别完成相应的职责,通过三者之间的交互,实现业务系统。这种模式强制性地使应用程序的输入、处理和输出分开,实现了系统间组件解耦、模块代码复用、可扩展易维护等特性。2025/2/6《Web程序设计》10模型(Model)是软件所处理问题逻辑在独立于外在显示内容和形式情况下的内在抽象,封装了问题的核心数据、逻辑和功能的计算关系,它独立于具体的界面表达和I/O操作。视图(View)是表示模型数据及逻辑关系和状态的信息,以特定的形式展示给用户。它从模型获得需要显示的信息,允许多个视图存在,即对相同的信息可以有多个不同的显示形式。控制器(Controller)是用来处理用户与软件的交互操作,主要职责是控制提供模型中任何变化的传播,确保用户界面及时展示模型的结果信息;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的组件。通常一个视图对应一个控制器。2025/2/6《Web程序设计》11工作过程Controller接受用户在View上发送的请求,解析请求的路径、参数以及表达的意图,找到处理该请求的具体Controller;Controller根据请求的意图和参数,向Model层调用相关的业务逻辑模块,并将参数传递给这个模块;Model层接受Controller层的调用,以及传递的参数,访问数据库或计算数据计算,返回结果给Controller层。Controller层接收到Model层返回的相关数据结果,组装数据和表示形成View.View层根据Controller返回的数据视图,解析数据和内容,将这些结果以特定的格式展现给用户。2025/2/6《Web程序设计》12MVC模式的优点在于:Model、View、Controller每层负责各自的事情,符合单一职责原则,使得代码更加易于维护和优化。
通过Controller层,将视图和业务逻辑进行了解耦,将数据展示和数据生成放到了不同的模块中,易于维护与扩展。需要注意的,在实际工程中,如果采用MVC模式但没有统一的开发框架,可能导致项目的开发周期变长,建议采用SpringMVC、SSM或类似的典型开发框架,提高开发效率、加速项目进度。2025/2/6《Web程序设计》13主要内容2025/2/6《Web程序设计》141JSP开发模式2MVC模式3JSP+JavaBean+Servlet实现MVC4综合实例Model2在JSP开发模式中,MVC模式也称为Model2模式,主要由JSP+JavaBean+Servlet实现。Servlet主要实现了Controller的职责,负责接受用户在浏览器上的请求;JavaBean主要实现了Model的职责,根据Controller传递的参数进行数据操作,与数据库连接;JSP主要实现了View的职责,将Controller返回的数据结果,形成最终展示在浏览器上的页面。2025/2/6《Web程序设计》152025/2/6《Web程序设计》16主要内容2025/2/6《Web程序设计》171JSP开发模式2MVC模式3JSP+JavaBean+Servlet实现MVC4综合实例项目背景及需求假设MySql数据库book_db中有一个图书表(t_book),和一个图书类型表(t_book_type),主要存储网上商城中的图书基本信息,主要的字段及类型说明如下2025/2/6《Web程序设计》18业务流程2025/2/6《Web程序设计》19(1)查询展示图书(1)功能需求该模块的主要功能为根据输入的字段查询图书资料信息,将结果以表格的形式展现在页面上。查询展示数据的操作流程如下:1)点击“图书查询”页面,进入到该页面,显示所有图书列表信息;2)输入某个查询字符,如图书名称,图书编号,点击查询;3)从数据表中查询与该查询字段匹配的图书记录,显示在页面上的表格中。2025/2/6《Web程序设计》20BookVO2025/2/6《Web程序设计》21publicclassBookVO{privateintid;/*自增长ID*/privateStringbookName=null;/*图书名称*/privateStringbarCode=null;/*图书条形码*/privateStringpublish=null;/*图书出版社*/privateDatepublishDate=null;/*图书出版日期*/privatefloatprice;/*图书价格*/privateintcount;/*图书库存量*/privateStringcoverPic=null;/*图书封面*/privateintbookType;/*图书类型ID*/privateStringbookTypeName=null;/*图书类型名称*//*构造方法*/publicBookVO(){}.......BookDAO.java2025/2/6《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/2/6《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/2/6《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/2/6《Web程序设计》25BookTypeDAO.java2025/2/6《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/2/6《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/2/6《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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年营养师考试专用教材试题及答案
- 房地产营销渠道创新试题及答案
- 演出经纪人考试细节全面分析:试题及答案
- 线路工程常考题及答案
- 吉林大附中力旺实验中学2023-2024学年中考数学最后冲刺模拟试卷含解析
- 吉林市重点中学2024年中考四模数学试题含解析
- 深基坑安全专项施工方案
- 2024-2025学年河北省迁西县一中高考冲刺(3)英语试题试卷含解析
- 福建信息职业技术学院《医学机能学实验(Ⅱ)》2023-2024学年第二学期期末试卷
- 2025年绍兴市重点中学高三下学期阶段性练习物理试题含解析
- 2025年山东大众报业(集团)限公司招聘247人高频重点模拟试卷提升(共500题附带答案详解)
- 【道 法】做自信的人 课件-2024-2025学年统编版道德与法治七年级下册
- 医保电子凭证培训
- 施工现场交叉作业安全防护管理措施
- 特殊学生档案
- 2024年02月浙江2024年萧山农商银行春季校园招考笔试历年参考题库附带答案详解
- 2025年城投集团招聘笔试参考题库含答案解析
- 甘肃白银有色集团股份有限公司招聘笔试冲刺题2025
- 2024年东营市东营区人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 装配式混凝土建筑基本结构体系- 杨15课件讲解
- 直肠癌新辅助治疗
评论
0/150
提交评论