




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第7章章 MVC与与DAO模式模式陈小潘E-mail: 计算机与信息工程学院501本章要点本章要点 MVC框架模式简介 JSP中实现MVC框架模式 重定向与转发 页面间数据共享方式 具体实例:用户注册模块 DAO模式Java Web程序设计22022-3-22第第7章章MVC与与DAO模式模式7.1 MVC框架模式简介7.2 在JSP中实现MVC框架模式7.3 请求转发与重定向7.4 页面间数据的共享方式7.5 DAO模式7.6 Apache DbUtils工具类Java Web程序设计32022-3-22第第7章章MVC与与DAO模式模式7.1 MVC框架模式简介7.2 在JSP中实现MV
2、C框架模式7.3 请求转发与重定向7.4 页面间数据的共享方式7.5 DAO模式7.6 Apache DbUtils工具类Java Web程序设计42022-3-227.1 MVC框架模式框架模式7.1.1 MVC框架模式介绍7.1.2 MVC框架模式的优势Java Web程序设计52022-3-227.1.1 MVC框架模式介绍框架模式介绍 MVC即Model-View-Controller(模型-视图-控制器)是一种软件设计模式,MVC最早出现在Smalltalk语言中,后来在Java中得到广泛应用,并且被Sun公司推荐为Java EE平台的设计模式。 MVC把应用程序分成了三个核心模块,
3、即业务逻辑层、视图层和控制层。实质上,模型表示数据业务处理功能,视图表示数据显示,控制器表示流程控制。Java Web程序设计62022-3-227.1.1 MVC框架模式介绍框架模式介绍 Model模型:用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。模型有对数据直接访问的能力。 View视图:视图层能够实现数据有目的的显示。在视图中一般没有程序上的逻辑,它从模型那里获得数据并指定这些数据如何表现。当模型变化时,视图负责维持数据表现的一致性,视图同时负责将用户需求通知给控制器。 Controller控制器:控制器相当于调度者,用于控制应用程序的流程。它处理事件并做出响应。Java
4、 Web程序设计72022-3-227.1.1 MVC框架模式介绍框架模式介绍Java Web程序设计82022-3-227.1.1 MVC框架模式介绍框架模式介绍 传统JSP运行机制 在传统的Java Web应用中,JSP页面既负责数据显示,又负责业务逻辑处理和流程控制,导致程序维护困难,代码可读性差,程序和页面间高度耦合,致使程序不易于扩展。Java Web程序设计9图图1 传统传统JSP运行机制运行机制2022-3-227.1.1 MVC框架模式介绍框架模式介绍 基于MVC的JSP MODEL1与JSP MODLE 2 为了解决传统JSP遇到的这些问题,Sun公司基于MVC思想提出了两种
5、开发模式:JSP Model1和JSP Model2。图图2 JSP MODEL 1Java Web程序设计102022-3-227.1.1 MVC框架模式介绍框架模式介绍图图 JSP MODEL 2Java Web程序设计11 基于MVC的JSP Model1与JSP Model 22022-3-227.1.2 MVC框架模式的优势框架模式的优势应用程序使用MVC框架模式有以下优势:有利于代码复用。MVC框架模式的分层开发模式,有利于实现代码及组件的复用。有利于开发人员分工。在MVC框架模式中,彻底地把应用程序的界面设计与程序设计分离,有利于人员分工。有利于降低程序模块间的耦合,便于程序的维
6、护与扩展。在MVC框架模式中,三个层次之间是相互独立的,每层负责实现具体的功能,如果某层发生了改变不会影响其他两层的正常使用。Java Web程序设计122022-3-22第第7章章MVC与与DAO模式模式7.1 MVC框架模式简介7.2 在JSP中实现MVC框架模式7.3 请求转发与重定向7.4 页面间数据的共享方式7.5 DAO模式7.6 Apache DbUtils工具类Java Web程序设计132022-3-22第第7章章MVC与与DAO模式模式 程序运行界面 用户点击不同的按钮可以分别实现登录和注册的功能。2022-3-22Java Web程序设计14第第7章章MVC与与DAO模式
7、模式2022-3-22Java Web程序设计157.2 JSP中实现中实现MVC框架模式框架模式以用户注册模块来介绍在JSP中如何实现MVC模式(1)程序结构henu.bean.User:模型层,实现用户注册的业务模型及数据库操作;henu.servlet.UserServlet:控制器层的角色,用于流程控制,调度模型和选择视图展示运行结果;regist.jsp和result.jsp等页面为视图层,负责交互与结果展现。Java Web程序设计162022-3-227.2 JSP中实现中实现MVC框架模式框架模式(2)编程思想)编程思想用户通过用户通过JSP页面的表单输入注册信息,表单提交后由
8、页面的表单输入注册信息,表单提交后由Servlet获取表单中的数据并交由获取表单中的数据并交由JavaBean对象存储用对象存储用户数据,然后将户数据,然后将JavaBean对象的数据保存至数据库中,对象的数据保存至数据库中,最后再由最后再由Servlet通知相应的视图显示用户注册的结果。通知相应的视图显示用户注册的结果。 Java Web程序设计172022-3-227.2 JSP中实现中实现MVC框架模式框架模式(3)用例事件流描述)用例事件流描述用户注册:A简单描述本用例描述系统各类用户注册。B前置条件无C后置条件如果用例成功,则转到显示结果页面result.jsp,否则,提示出错信息。
9、D扩充点无E事件流当用户单击登录页面的用户注册链接时,用例启动。基流:无替代流:用户注册失败后,转入用户提示出错页面error.jsp。Java Web程序设计182022-3-227.2 JSP中实现中实现MVC框架模式框架模式(1)表示层的主要工作是实现人机交互,展现程序执行结果,在本例中注册页面regist.jsp提供一个表单负责收集用户的信息并发送请求调用控制器UserServlet;结果页面result.jsp显示注册成功的信息;而错误提示页面error.jsp显示错误信息。Java Web程序设计192022-3-227.2 JSP中实现中实现MVC框架模式框架模式(2)模型层Us
10、er.java处理业务逻辑,其功能有两个:一是对应数据表结构设计成员变量,作为视图层与数据表之间的数据中转站,存储数据;二是负责实现用户注册的业务逻辑,完成对数据库的操作。Java Web程序设计202022-3-227.2 JSP中实现中实现MVC框架模式框架模式(3)控制器层的功能有三个:一是获取请求表单中的用户信息;二是封装模型层对象user,并调用其方法regist实现用户信息的保存;三是选择相应的视图展现程序执行结果。Java Web程序设计212022-3-227.2 JSP中实现中实现MVC框架模式框架模式动手实践:设计一个Web应用程序,判断一个一元二次方程ax2+bx+c=z
11、有几个根。该程序包括两个JSP页面root.jsp和result.jsp;一个JavaBean和一个Servlet。要求使用MVC模式实现此功能,即用户通过root.jsp输入一元二次方法a,b,c和z的值;提交该页面后使用JavaBean存储这些值和结果;使用Servlet进行判断并最终将结果显示到result.jsp页面中。Java Web程序设计222022-3-22第第7章章MVC与与DAO模式模式7.1 MVC框架模式简介7.2 在JSP中实现MVC框架模式7.3 请求转发与重定向7.4 页面间数据的共享方式7.5 DAO模式Java Web程序设计232022-3-227.3 请求
12、转发与重定向请求转发与重定向Internet的一个主要特征就是通过超级链接聚合了大量的信息资源,Web应用中各个资源(包括HTML/JSP页面、Servlet对象等)也可以实现资源的相互关联与整合,在Java Web应用中可使用以下几种方式达到Web资源的关联与整合。请求转发重定向包含 Java Web程序设计242022-3-227.3 请求转发与重定向请求转发与重定向(1)请求转发/请求转发至target.jsp页面RequestDispatcher dispatcher=request.getRequestDispatcher(target.jsp);dispatcher.forward
13、(request, response);RequestDispatcher对象可以把用户对当前Web资源的请求转发给目标Web资源,如上述代码的target.jsp页面。简而言之,当前页面将和目标页面target.jsp共享一个请求对象。Java Web程序设计252022-3-227.3 请求转发与重定向请求转发与重定向注意: 请求转发方式通常用于Servlet中,请求转发方式只能把请求转发给同一个Web应用中的页面,并不能转发给其他Web应用中的资源。Java Web程序设计262022-3-227.3 请求转发与重定向请求转发与重定向(2)重定向重定向重定向是将来自客户端的请求传递给其他
14、的重定向是将来自客户端的请求传递给其他的Web资源,资源,与请求转发不同的是,目标资源可以是不在同一个与请求转发不同的是,目标资源可以是不在同一个Web应用中。在应用中。在Servlet中,使用中,使用HttpServletResponse对象的对象的sendRedirect()方法实现重定向。方法实现重定向。/从当前页面跳转至相对路径为pages/target.jsp的页面。response.sendRedirect(pages/target.jsp);Java Web程序设计272022-3-227.3 请求转发与重定向请求转发与重定向重定向与请求转发的区别:重定向可以将Web资源指向任何
15、一个URL,而不仅仅局限于同一个Web应用中。重定向是返回一个应答给客户端,然后再重新发送一个请求给目标URL,所以浏览器地址栏会更新为目标Web资源的URL;而使用RequestDispatcher对象请求转向时,浏览器地址栏不会更新,仍为原有Web资源的URL。使用重定向时,Web资源之间不会共享使用用户请求对象request,而RequestDispatcher则共享。Java Web程序设计282022-3-22第第7章章MVC与与DAO模式模式7.1 MVC框架模式简介7.2 在JSP中实现MVC框架模式7.3 请求转发与重定向7.4 页面间数据的共享方式7.5 DAO模式Java
16、Web程序设计292022-3-227.4 页面间数据共享方式页面间数据共享方式(1)重写URL重写URL是在URL的后面附加参数,和服务器的请求一起发送,这些参数称为查询字符串。查询字符串为一对“名称/值”对,URL中多个查询字符串之间使用“&”符号连接。如 ,此URL将向目标页面detail.jsp中传递两个查询字符串id和action,其值分别为10和delete。使用request内置对象的getParameter()方法获取查询字符串的对应值。String id = request.getParameter(id);String action = request.getParamet
17、er(action);Java Web程序设计302022-3-227.4 页面间数据共享方式页面间数据共享方式重写URL可以确保所有浏览器中有效,但是简单易于实现,但是重写URL也有缺点:重写URL的页面必须动态生成;用户数据暴露,易造成安全上的隐患;URL的长度有限制,如使用URL传递大量数据,会造成性能下降;必须对所有指向本Web站点的URL进行编码;访问不方便,不能预先记录访问页面的URL。 Java Web程序设计312022-3-227.4 页面间数据共享方式页面间数据共享方式(2)共享session使用重写URL共享用户数据时,一个致命的限制就是两个页面间必须通过链接关联起来。如
18、果两个页面之间不存在链接关系,将无法使用重写URL共享数据。此时可以使用共享会话的形式,即使用session内置对象共享用户数据。Java Web程序设计322022-3-227.4 页面间数据共享方式页面间数据共享方式HttpSession session = request.getSession(true);/设置会话有效期为20分钟session.setMaxInactiveInterval(1200);/向会话中添加一个属性名称为user,值为regUser的对象session.setAttribute(user, regUser);/获取属性名称为user的对象值,进行强制类型转换U
19、ser user = (User)session.getAttribute(user);/从会话中删除属性名称为user的对象session.removeAttribute(user);Java Web程序设计332022-3-227.4 页面间数据共享方式页面间数据共享方式 使用session.setMaxInactiveInterval(int interval)方法设置会话的有效期(以秒为单位),会话的有效期默认为30分钟(在web.xml文件中配置)。 web.xml配置会话期: minutes Java Web程序设计342022-3-227.4 页面间数据共享方式页面间数据共享方式
20、(3)使用CookieCookie用于存储Web服务器发送给客户端的信息(通常以文本文件形式保存在客户端)。当客户端第一次访问服务器时,服务器为用户创建一个Cookie对象,在响应客户端的同时把Cookie对象发送到客户端。当服务器端程序需要读取Cookie时,可再由request对象获取Cookie中的数据。Cookie也是以“name/value”映射的形式保存数据的,这些信息可被封装在Cookie对象中。当客户端第一次访问Web服务器时,生成一组Cookie信息并保存在客户端,可通过内置对象response的addCookie()方法实现。Java Web程序设计352022-3-22第
21、一步:通过Cookie构造方法创建Cookie对象。第二步:设置Cookie的最大保留时间。第三步:将Cookie对象添加到响应对象中。第四步:得到客户端发送过来的Cookie对象。 第五步:获取Cookie 中数据的方法。7.4 页面间数据共享方式页面间数据共享方式cookie.setMaxAge(int value);/单位为秒 response.addCookie(Cookie obj); Cookie cookies = request.getCookies();/*此方法将返回一个Cookie数组 */cookie.getName();/得到Cookie中的键名, cookie.ge
22、tValue();/得到Cookie中的值。 Cookie cookie = new Cookie(String key ,Object value); Java Web程序设计362022-3-22第第7章章MVC与与DAO模式模式7.1 MVC框架模式简介7.2 在JSP中实现MVC框架模式7.3 请求转发与重定向7.4 页面间数据的共享方式7.5 DAO模式Java Web程序设计372022-3-227.5 DAO模式模式JDBC操作数据库,通常是通过在JSP页面中写JDBC代码或者借助于JavaBean实现,这样导致JSP页面中包含大量的HTML代码和Java代码,显示和功能代码混合
23、在一起,难以维护,程序可读性也较差。DAO (Data Access Objects)设计模式是属于Java EE数据层的操作,使用DAO设计模式可以简化大量的代码编写和增加程序的可移植性。使用DAO设计模式时,JSP页面仅用来作表现层,即关注数据的显示,不需要关注数据从何处而来,如何获取这些数据。Java Web程序设计382022-3-227.5 DAO模式模式 DAO设计模式封装数据库中表的全部操作,对业务层隐藏数据访问的细节,数据层仅为业务层提供数据库操作的接口 DAO设计模式实现了业务层与数据层的分离,避免业务层和数据层的混杂,有利于项目后期的维护。 DAO的优势 数据存储逻辑的分离
24、; 数据访问底层实现的分离 数据抽象Java Web程序设计392022-3-227.5 DAO模式模式 DAO模式对象图Java Web程序设计402022-3-227.5 DAO模式模式 实现DAO的步骤在Java 应用中实现DAO模式,主要分为5个模块,具体如下。 VO类; DAO接口; DAO实现类; DAO工厂类; 数据库连接类。 Java Web程序设计412022-3-227.5 DAO模式模式(1)数据库连接类数据库连接类的主要功能是连接数据库、关闭数据库以及常见操作,如执行SQL语句等。通过使用数据库连接类,可以大大简便开发,在需要访问数据库时,只需调用该类的相关方法即可,不
25、必再进行大量地重复编码工作。Java Web程序设计422022-3-22Java Web程序设计43数据库连接类 public class DataBaseConnection private final String DBDRIVER = com.mysql.jdbc.Driver; private final String DBURL = jdbc:mysql:/localhost:3306/javaweb; private final String DBUSER = root; private final String DBPASSWORD = root; private Connec
26、tion conn = null; public DataBaseConnection() try Class.forName(DBDRIVER); conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD); catch(Exception e) System.out.println(加载数据库驱动失败!); public Connection getConnection() return conn; public void close() try conn.close(); catch(SQLException e) System
27、.out.println(数据库连接关闭失败!); 2022-3-227.5 DAO模式模式(2) VO类VO(Value Object)意为值对象,是一个属性与表中字段一一对应的类,有多少张表,就有多少个VO类。VO类包含setXxx()和getXxx()方法,用于设置与获取属性值。Java Web程序设计442022-3-227.5 DAO模式模式 VO类示例 Public classs User private int userid; private String username; private String password; public int getUserid() retu
28、rn userid; public void setUserid(int userid) return userid; public String getUsername() return username; public void setUsername(String username) return username; public String getUserpassword() return userpassword; public void setUserid(String userpassword) return userpassword; Java Web程序设计452022-3
29、-227.5 DAO模式模式 DAO接口 DAO接口定义了全部的数据库操作,即增删改查,不过都是些抽象方法,需要子类具体实现。Java Web程序设计package DB;import java.util.*;/定义数据库操作方法定义数据库操作方法public interface IUserDAO /增加操作增加操作public void insert(User user)throws Exception;/修改操作修改操作public void update(User user)throws Exception;/删除操作删除操作public void delete(int userid)t
30、hrows Exception;/按按ID查询操作查询操作public User queryById(int userid) throws Exception;/查询全部查询全部public List queryAll() throws Exception;/模糊查询模糊查询public List queryByLike(String keyword) throws Exception;462022-3-227.5 DAO模式模式(3) DAO接口public interface IUserDAO public boolean login(String username,String pass
31、word);public int save(User user);public int delete(String username);public int update(String username,User user);public List findAll();public User findByUsername(String username);Java Web程序设计472022-3-227.5 DAO模式模式(4)DAO实现类DAO实现类实现了DAO接口,并实现了DAO接口中所有抽象方法,完成数据库操作。在DAO实现类中设计SQL语句,并通过数据库连接类操作SQL语句,DAO实现
32、类往往与具体的底层数据库关系较为紧密。一个DAO实现类对应一张表。每个表都有一个DAO实现类,但是不包括数据库的打开和关闭。Java Web程序设计482022-3-227.5 DAO模式模式(4)DAO实现类package DB;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import usebean.Person;/引入引入usebean下得下得Person类类 /删除操作删除操作public class UserDA
33、OImpl implements IUserDAOpublic int delete(int userid) throws Exception int count=0;String sql=delete from user where userid=?;PreparedStatement pstmt=null;DataBaseConnection dbc=null;Java Web程序设计492022-3-227.5 DAO模式模式(4)DAO实现类/下面是针对数据库的操作下面是针对数据库的操作try/连接数据库连接数据库dbc=new DataBaseConnection();pstmt=dbc.getConnection().prepareStatement(sql);pstmt.setInt(1, userid);/进行数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物医药技术秘密保护合伙人协议
- 国际古董艺术品保险库租赁与保管服务协议
- 恋爱出轨宗教仪式处罚协议
- 生物实验动物伦理审查与定制化技术服务合同
- 游艇专用卫星导航系统租赁与全球定位及保障服务协议
- 股权解押与公司企业文化建设合作协议
- 新能源企业员工薪酬集体协商方案服务合同
- 生物医药企业数据泄露事件应急处理与责任承担协议
- 编程培训机构兼职编程讲师授课协议
- 电信网络维护与检修劳务派遣协议
- 电镀铬作业指导书
- DEFORM-3D模拟控制(五):网格重划分
- 先导化合物的优化和结构修饰药物化学专家讲座
- 并购重组试题
- 在线音乐网站设计论文
- 发动机机械-01.1cm5a4g63维修手册
- 国家开放大学《行政组织学》形考1-5标准答案
- 急性会厌炎课件
- 单发跖骨骨折临床路径及表单
- 2021年西安经开渭北城市发展集团有限公司招聘笔试试题及答案解析
- DB62∕T 3176-2019 建筑节能与结构一体化墙体保温系统应用技术规程
评论
0/150
提交评论