基于MVC的Java-Web项目实战完整版课件全书电子教案教材课件(完整)_第1页
基于MVC的Java-Web项目实战完整版课件全书电子教案教材课件(完整)_第2页
基于MVC的Java-Web项目实战完整版课件全书电子教案教材课件(完整)_第3页
基于MVC的Java-Web项目实战完整版课件全书电子教案教材课件(完整)_第4页
基于MVC的Java-Web项目实战完整版课件全书电子教案教材课件(完整)_第5页
已阅读5页,还剩128页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 一 章在线图书购物需求分析1目标了解如何进行需求分析了解如何进行详细设计2概述本课程通过一个完整的项目:在线图书购物(BookShop) 来讲解MVC中各方面的知识BookShop实现了网络购物的基本功能,包括用户注册、登陆、浏览商品、购物以及查看订单等在第一章中,我们主要学习对项目进行需求分析以及数据库的建模3系统需求软件开发第一步:明确系统需求系统要实现什么功能具体的要求是什么 BookShop实现购物网站的基本功能,包括:登录和注册浏览商品查询购物车和结账 4系统需求登录和注册已注册用户才可以在网站购物注册时系统会对注册信息进行验证,以确保注册信息正确性 购物结账时用户需要登录信息

2、登录时验证用户名密码5系统需求商品浏览根据图书ID显示商品列表浏览时允许将商品放入购物车6系统需求结账用户可以查看购物车中的商品用户可以修改购物车中商品的数量用户可以删除购物车中的商品用户选择结账生成订单7系统需求用例图8系统功能描述用户注册用户通过注册得到网络商店帐号 9系统功能描述用户注册时序图注册成功进入主页(并自动以新账号登录)注册失败返回注册页面10系统功能描述用户登录在首页,用户点击登录连接进行登录 11系统功能描述用户登录时序图登录成功,返回到系统的首页登录失败,转入到重新登录页面 12系统功能描述浏览商品在首页显示图书信息13系统功能描述 购物在浏览商品时选择加入购物车进行购物

3、在购物车中可修改商品的数量,删除商品 14系统设计 系统架构设计系统遵循多层次的架构设计每个层所负责的功能也是不相同的从上到下分别是视图层、控制层、模型层、数据访问层、数据库层15系统设计业务实体设计设计域模型,创建域模型实体对象设计关系数据模型根据关系数据库创建对象16系统设计业务实体设计在图书商店中有以下的业务实体:用户(UserInfo)图书商品(Book)订单(Order)订单项(Item)17系统设计业务实体关系图18总结软件开发的第一步就是明确系统需求多层次的架构设计一般从上到下分别是视图层、控制层、模型层、数据访问层、数据库层 19第 二 章MVC简介20课程目标掌握MVC架构的

4、概念掌握MVC架构中Model的实现掌握MVC架构中View的实现掌握MVC架构中Control的实现21本章简介MVC的基本概念MVC在Web开发中的应用通过示例来了解MVC的执行过程22MVC介绍OOD的特点将程序分解成根据具体的对象而设计的一系列元素允许开发者控制开发中复杂性的增加定义严格的出口语义(明确接口,隐藏细节)适当使用对象之间的关系(继承、包容、使用和协调)23MVC介绍可视化接口(用户界面)在OOD方面的不足 设计中将面向操作的界面布局同面向对象的设计混合在一起,导致对象大量耦合不同的用户有不同的接口,导致大量类的扩展可视化接口的改变会增加应用开发的复杂性 24MVC介绍MV

5、C弥补了可视化接口/OOD的不足MVC 三层架构 模型(Model)视图(View)控制(Control)MVC通过创建三个层将面向对象的设计与可视化接口分开25MVC介绍模型(Model)包含完成任务所需的所有的行为和数据一般由许多类组成26MVC介绍视图(View)一个视图就是一个程序的可视化元素视图显示从模型中提供的数据 27MVC介绍控制器(Controller)控制器将模型映射到视图中控制器接收用户输入,创建或修改适当的模型对象,并将模型对象传送到视图每个视图有一个控制器控制器在需要时还负责创建其它的视图和控制器28MVC介绍MVC模型关系图29MVC介绍使用MVC的优点允许开发者将

6、一个好的面向对象的设计与用户接口隔离开来允许在同样的模型中容易地使用多个接口允许在实现阶段对接口作大的修改而不需要对相应的模型进行修改30MVC在 Web系统中的应用Web开发模式一(Model 1)使用一系列的JSP页面来实现应用的业务逻辑,同时还要向用户显示界面 31MVC在 Web系统中的应用Model 1的缺点代码重复难以维护可扩展性差测试困难32MVC在 Web系统中的应用Web开发模式二(Model 2)以MVC架构为基础,使用Servlet和JSP的体系结构用Servlet作为控制器,接收用户请求,影响模型中的修改,并向用户提供视图 33MVC在 Web系统中的应用 Model

7、2执行流程 34MVC在 Web系统中的应用 Model 2 View层代表系统的显示,完全存在于Web层由JSP,数据对象和Custom Tag组成在项目设计时,可以先设计出所有可能出现的View可以使用模板方法设计View层35MVC在 Web系统中的应用Model 2 Model层代表了商业规则和商业数据,存在于业务逻辑层和Web层。系统有些数据需要存储于数据库中,也有一些不需要记录在数据库里可以把存取数据库的对象模式化为DAO对象。DAO中可以封装与具体数据库的交互细节36MVC在 Web系统中的应用 Model 2 Controller层Controller对象协调Model与Vie

8、w一般通过Servlet,来接收用户请求,它可以决定下一个View Controller另一个重要的功能是同步View和Model的数据37MVC示例以BookShop系统中,管理员查看用户信息这个功能为例在BookShop数据库中有一个存贮客户信息的表USERINFO 在一个页面中只有一个超链接,当用户点击“显示客户列表”超链接时,应用程序就把所有的USERINFO显示出来 38MVC示例时序图 39MVC示例S运行结果40总结MVC架构把系统分为3个模块:模型(Model)、视图(View)和控制器(Controller)模型(Model)对象代表了商业规则和商业数据界面(View)代表系

9、统的显示Controller对象协调Model与View,把用户请求翻译成系统识别的事件41第 三 章JavaBean42目标了解JavaBean在MVC模式中的作用掌握JavaBean编写规范掌握DAO的概念43概述本章主要讲解MVC架构中,Model层的实现技术Model层一般使用JavaBean来实现数据访问模式: DAO模式44JavaBean介绍JavaBean是一种可重复使用的软件组件,是一种用Java语言编写的特殊结构的类JavaBean可分为两种:有用户界面(UI)的JavaBean没有用户界面的JavaBean ,主要负责处理事务(如数据运算、操作数据库)45JavaBean

10、介绍JavaBean的编写要遵循Sun的JavaBean编写规范标准的JavaBean有以下几个特征 是一个公共的(public)类必须有一个默认构造函数(无参构造函数)可以有多个属性,但是这些属性要通过getXXX ()和 setXXX()方法设置和获取属性可以有多个可供调用的方法46JavaBean介绍JavaBean的属性属性可以设置为读写、只读或只写属性的读写性可以通过JavaBean实现类中的两个方法来实现47/读属性public String getUsername()/写属性public void setUsername(String username)JavaBean介绍例:U

11、serinfo类是一个简单的JavaBean,它只包含了属性 48通常把包含数据属性的JavaBean称为数据BeanJavaBean介绍可读写属性 49package com.xt.beans;import java.util.*;public class UserInfo implements java.io.Serializable / filedprivate String username;public String getUsername() return username;public void setUsername(String username) this. usernam

12、e = username;JavaBean介绍只读属性 50public class Userinfo implements java.io.Serializable private String name; /数据字段public String getName() return ;JavaBean介绍只写属性 51public class Userinfo implements java.io.Serializable private String name; /数据字段public void setName(String name) = name;需要注意:boolean类型属性是通过ge

13、t/set来设置的 JavaBean介绍JavaBean方法是指类中的公有方法对数据的操作进行有效的封装使我们能够更加容易的操作数据52DAO模式DAO:Data Access Object 数据访问接口DAO主要进行数据库操作,夹在业务逻辑与数据库资源中间 53DAO模式例:创建一个ShopDB的类,来实现与数据库的基本交互 54public class ShopDB private String dbURL = jdbc:mysql:/localhost:3306/shoponline; private String dbUser = root; private String dbPass

14、word = root; private Connection conn = null; private Statement stmt = null; private PreparedStatement pstmt = null; private ResultSet rs = null;如果数据库迁移只需修改ShopDB类就可以了DAO模式在UserinfoManager类中使用ShopDB55public class UserinfoManager public static Userinfo getUserinfo(String userid) Userinfo userinfo = nu

15、ll;String sql = select * from Userinfo where userid = ?; ShopDB db = new ShopDB(); Connection conn = db.getConnection(); PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, userid); ResultSet rs = pstmt.executeQuery();DAO模式有了ShopDB类和UserinfoManager类以及Userinfo类以后,我们只需要调用UserinfoM

16、anager类的方法就可以来得到想得到的数据,而不用考虑其具体是如何实现的56总结JavaBean可分为两种:一种是有用户界面的JavaBean。还有一种就是没有用户界面,主要负责处理事务的JavaBean一个标准的JavaBean有以下几个特征:JavaBean是一个公共的类、JavaBean必须有一个默认构造函数、JavaBean可以有多个属性,但是这些属性要通过getXXX()和setXXX()方法来访问、JavaBean可以有多个可供调用的方法JavaBean的属性可以设置为 读写、只读或只写DAO是Data Access Object数据访问接口,是与数据库打交道。在业务逻辑与数据库

17、资源中间57第四章Servlet目标掌握Servlet的概念掌握Servlet在MVC中的作用掌握Servlet的doPost方法和doGet方法概述在使用MVC架构的Web应用中,控制器Controller一般使用Servlet来实现本章将介绍Servlet的概念,生命周期,以及如何编写Servlet程序Servlet介绍Java Servlet是与平台无关的服务器端组件,它运行在Servlet容器中Servlet容器负责Servlet和客户的通信以及调用Servlet的方法Servlet和客户的通信采用“请求/响应”模式 Servlet介绍每一个JSP页面就是一个ServletJSP在执行

18、时,Web服务器先要把JSP页面翻译成Java源代码,而这个源代码就是一个ServletServlet可以完成JSP的所有功能 Servlet介绍Servlet在MVC中的工作方式接收客户的请求根据请求调用JavaBean进理将处理结果进行存储将控制转到JSP页面,让JSP客户显示处理结果Servlet介绍要实现Servlet程序,需要创建一个Servlet类,该类必须继承javax.servlet.http.HttpServlet以“显示客户列表”为例,处理客户请求的Servlet如下:Servlet中的几个常见方法init()方法 :Servlet初始化destroy()方法:Servle

19、t销毁时调用doGet()方法 :处理Get请求doPost()方法 :处理Post请求doGet()方法和doPost()方法中的参数HttpServletRequest对象包含请求信息HttpServletResponse对象包含响应信息Servlet介绍Servlet介绍public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException String action = request.getParameter(action); /

20、获取请求参数 String jspPage = ./admin/userinfo.jsp; if (action = null) | (action.length() 1) action = default; if (default.equals(action) jspPage = ./admin/userinfo.jsp ; else if (displaylist.equals(action) List userinfos = UserinfoManager.getUserinfos(); /调用JavaBean的方法 request.setAttribute(userinfos, use

21、rinfos); /在request范围存储数据 jspPage = ./admin/userinfoDisplayList.jsp; RequestDispatcher rd = this.getServletContext().getRequestDispatcher(jspPage); /指定转发路径 rd.forward(request, response); /转发请求Servlet分析在Servlet规范中,所有的Servlet必须实现java.servlet.Servlet接口java.servlet.Servlet接口方法:方法描述init初始化ServletdestroySe

22、rvlet结束时调用getServletInfo得到有关Servlet的信息getServletConfig得到与Servlet实例相关联的javax.servlet.ServletConfig对象service容器调用这个方法向Servlet传递一个请求来进行处理。Servlet必须处理这个请求,并提供响应抽象类GenericServlet实现了Servlet接口在GenericServlet中service()方法被定义成抽象方法抽象类HttpServlet扩展了GenericServlet,覆盖了 Servlet方法 Servlet分析Servlet接口到用户Servlet的关系图 Se

23、rvlet分析作为HttpServlet的子类,用户类可以根据需要覆盖一些方法方法描述doGet处理HTTP Get请求 doPost处理HTTP Post请求doPut处理HTTP Put请求(很少使用)doDelete处理HTTP Delete请求(很少使用)init和javax.servlet.Servlet接口init一致destroy和javax.servlet.Servlet接口destroy一致getServletInfo和javax.servlet.Servlet接口getServletInfo一致Servlet分析Servlet生命周期3个阶段:初始化阶段、响应客户请求阶段和

24、终止阶段 Servlet生命周期web.xml文件的内容由J2EE规 范描述。每个Web应用都需要 有这个文件Servlet在web.xml中的配置 Servlet在Web.Xml中的描述Servlet在Web.Xml中的描述Servlet声明 shoponline userinfoAction shoponline userinfoAction UserinfoAction com.wish.shopOnline.servlets.UserinfoAction Servlet在Web.Xml中的描述Servlet映射 UserinfoAction /servlet/UserinfoActio

25、n对UserinfoAction的URL请求示例: 显示客户列表ServletRequest和ServletResponse当容器接收到请求后,会调用HttpServlet的service()方法service方法根据请求方式的不同调用doGet()或doPost()方法doGet()和doPost()方法有两个参数:HttpServletRequest和HttpServletResponse分别继承自ServletRequest和ServletResponseServletRequest和ServletResponseServletRequest接口中封装了客户请求信息客户请求方式请求参数名

26、/值对客户端正在使用的协议发出客户请求的远程主机信息 ServletRequest和ServletResponseServletRequest接口提供的部分方法 方法描述getParameter 根据给定的参数名返回参数值getAttribute根据参数给定的属性名返回属性值setAttribute在ServletRequest中设置属性(包括属性名和属性值)getInputStream返回客户请求数据的输入流(二进制流)getContentType返回客户请求数据MIME类型getRemoteAddr返回远程客户主机的IP地址getRemoteHost返回远程客户主机名getRemotePo

27、rt返回远程客户主机的端口ServletRequest和ServletResponseServletResponse接口为Servlet提供了返回响应结果的方法 方法描述getOutputStream返回可以向客户端发送二进制数据的ServletOutpuStream对象getWriter返回可以向客户端发送字符数据的PrintWriter对象setContentType设置响应数据的MIME类型getContentType返回响应数据的MIME类型setCharacterEncoding设置响应数据的字符编码getCharacterEncoding返回响应数据的字符编码ServletRequ

28、est和ServletResponse例如在UserinfoAction中,需要从客户请求中获取请求参数,使用方法如下:String action = request.getParameter(action);Java Servlet是与平台无关的服务器端组件,它运行在Servlet容器中Servlet在MVC中的作用是接收客户的请求,根据请求调用JavaBean处理请求,然后把处理结果转发给JSP页面作为Servlet类必须实现java.servlet.Servlet接口doGet()方法:处理通过HTTP GET动作发送数据的请求doPost()方法:处理通过HTTP POST动作发送数据

29、的请求Servlet的生命周期可以分为3个阶段:初始化阶段、响应客户请求阶段和终止阶段web.xml文件主要用途就是向容器描述如何部署这个Web应用程序ServletRequest接口中封装了客户请求信息ServletResponse接口为Servlet提供了返回响应结果的方法总结第 五 章JSP中使用JavaBean目标了解如何使用JSP显示数据掌握JSP标签访问JavaBean掌握request、page、session和application范围概述当Servlet处理完请求,就需要将处理结果返回给用户。在MVC模式中使用JSP来实现View的功能本章重点是如何在JSP中呈现结果,包括在

30、不同的作用域访问JavaBean访问JavaBean在UserinfoAction中把客户信息的集合存储在request中,代码如下:. . .List userinfos = UserinfoManager.getUserinfos(); request.setAttribute(userinfos, userinfos);jspPage = ./admin/userinfoDisplayList.jsp; RequestDispatcher rd = this.getServletContext().getRequestDispatcher(jspPage);rd.forward(requ

31、est, response); 访问JavaBeanuserinfoDisplayList.jsp中读取request中存储的客户信息集合,并在页面循环显示 JSP标签访问JavaBeanJSP中使用大量Java代码和HTML标签混合在一起,使程序难以阅读可以使用特定的JSP标签访问JavaBean,以减少JSP网页中的程序代码 JSP标签访问JavaBean使用标签 JSP标签访问JavaBean可以通过JSP标签来访问JavaBean属性 将JavaBean的属性输出到网页给JavaBean的属性赋值作用域J2EE环境支持一种通用的域(scope)机制,允许应用的不同部分可以交互数据 J2

32、EE提供了四个独立的域:应用域(ServletContext)会话域(HttpSession)请求域(ServletRequest)页面域(PageContext)JavaBean的范围在标签中,scope属性决定了JavaBean对象存在的范围scope的可选值包括page (当前页面内有效,默认值)request (当前请求内有效)session (用户会话期内有效)application (应用程序运行期内有效)JavaBean在request范围内要在JSP中把JavaBean的值显示出来,当显示好以后,该JavaBean的内容我们就不需要了,此时我们可以把该JavaBean存放在re

33、quest范围 UserinfoAction中的代码request.setAttribute(userinfos, userinfos);RequestDispatcher rd = request.getRequestDispatcher(./admin/userinfoDisplayList.jsp);rd.forward(request, response);JavaBean在request范围内在userinfoDisplayList.jsp中读取JavaBean问题:这里使用了RequestDispatcher对象的forward()方法进行请求转发。如果使用response的red

34、irect()方法,结果会怎样?JavaBean在page范围内这种情况下,客户每次请求访问JSP页面时,都会创建一个JavaBean对象JavaBean的有效范围是当前JSP页JavaBean在两种情况下都会结束生命期当前JSP页通过标记将请求转发到另一个文件 当前JSP页执行完毕并向客户端发回响应 JavaBean在session范围内JavaBean对象被创建后,可以保存于Session的生命周期内,同一个Session中的JSP文件共享这个JavaBean对象可以把购物车和用户信息放入Session范围内, 即在用户整个购物过程中保存这些信息JavaBean在session范围内ses

35、sion中保存的信息JavaBeans在session范围内例:用户登录后将用户信息存储在Session范围内。在每个页面的顶部(header.jsp)去读取Session中的用户信息并显示已登录用户的显示结果J2EE提供了四个独立的域:应用域、会话域、请求域、页面域在标签中scope属性决定了JavaBean对象存在的范围,其值为 page、request、session和application。默认属性值为pageHttpServletRequest.getSession()方法可以返回一个与请求相关的当前HttpSession对象总结第 六 章EL表达式和JSTL了解JSTL的作用理解J

36、STL的核心标签库掌握和标签目标概述通过JSP提供的标准动作来访问JavaBean对象可以减少在JSP页面中的Java代码,但仍有许多Java代码使用JSTL(JSP Standard Tag Library)可以使页面更加清晰在userinfoDisplayList.jsp中使用JSTL标记使用JSTL JSP标记库是可以在JSP页面中使用的定制动作(标记)的集合基本标准动作和隐式对象都有一个弱点:缺乏编程能力,JSP标记库增加这些能力 基于标记库广泛的可用性,而且由于标记库得到了标准化,所以有可能创建不带任何脚本元素的JSP页面使用JSTLJSTL可以用于处理编程领域中的以下问题:设置和删

37、除作用域变量、显示表达式和值、以及捕获异常条件流程控制 循环,对集合中或计算循环中的元素进行迭代处理处理URL以及通过URL加载资源 格式化数字和日期 访问关系数据库字符串处理(一组EL可访问函数) JSP标准标记库JSP标准标记库JSTL前缀URI范例核心标签库c.jsp/jstl/coreI18N格式标签库fmt.jsp/jstl/xmlSQL标签库sql.jsp/jstl/sqlXML标签库xml.jsp/jstl/fmt函数标签库fn.jsp/jstl/functions使用这些标签能够代替原来的一些功能 等价于 表达式操作 用于显示数据的内容 属性有:value,default, e

38、scapeXml示例表达式操作 用于将变量储存至JSP范围中或是JavaBean的属性中 属性有:var, value, scope, target, property表达式操作表达式操作 用于移除变量属性:var, scope示例表达式操作用来处理产生错误的异常状况,并且将错误信息储存起来示例 /可能发生错误的部分流程控制 流程控制 类似一般程序中用的if 属性:test, var, scope 流程控制、 用于进行多重处理 Ms. Mr. 迭代操作将集合中的成员循序浏览一遍属性:var,items,begin,end,step,varStatus示例 迭代操作 用于浏览字符串中所有成员,其

39、成员是由定义符号(delimiters)分隔的属性比多一个:delims示例 URL操作 可以把其他静态或动态文件包含至本身JSP网页 属性:url,context,var,scope,charEncoding示例URL操作URL操作将客户端的请求从一个JSP网页重定向到其他文件 属性:url, context示例:URL操作 用来产生一个URL地址,或者把该URL保存在一个变量中属性:url, context, var, scope示例 IMG name=img_cart src= 购物车总结JSTL可以:设置和删除作用域变量、显示表达式和值、以及捕获异常;条件流程控制 ;循环迭代处理;处理

40、URL以及通过URL加载资源表达式操作标签:、和流程控制标签:、和迭代操作标签:和URL操作标签:、和连接池与Servlet过滤器第 七 章了解连接池的概念掌握连接池的实现掌握Servlet过滤器目标概述数据库连接池用于解决高负载数据库访问造成的性能问题,提高数据库的使用效率本章将讲解连接池的基本思想,以及如何在Tomcat下使用数据库连接池。另外将介绍Servlet过滤器的使用。连接池简介基于Web程序的,传统的数据库连接在主程序(如Servlet、Beans)中建立数据库连接 进行SQL操作,取出数据断开数据库连接连接池简介连接池基本原理预先建立一些连接对象放置于内存。当程序需要建立数据库连接时,只须从内存中取一个来用,用完后只需放回内存即可连接的建立、断开都有连接池自身来管理。可以设置连接池中的连接数、每个连接的最大使用次数等参数数据源简介JDBC中提供了javax.sql.DataSource接口,负责建立与数据库的连接 DataSource对象可以由Web服务器提供,前提是需要在服务器配置DataSource(包括连接池)使用JNDI来获得DataSource对象的引用。 javax.naming包中提供了Context接口用于查找JNDI命名对象配置数据源界面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论