Download presentation
Presentation is loading. Please wait.
Published bySuryadi Hermawan Modified 6年之前
1
软件设计模式与体系结构课程设计 周 宇 College of Information Science and Technology
周 宇 College of Information Science and Technology Nanjing University of Aeronautics and Astronautics
2
软件设计模式与体系结构课程设计 内容要求:理解框架的概念,理解配置在企业级开发中的重 要性,了解Spring框架的基本结构,特点,并以
Spring框架为基础,构件一个简单的web应用系统, 包含基本的用户管理,界面展示功能,体现MVC 架构,领会多种设计模式的复合使用,重点是观 察者模式在MVC中的使用。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍 格式要求:文档+源代码,文档需要包含如下基本元素: spring框架架构,mvc的特点,以及一个简单的 实例应用开发介绍,结合该实例谈谈你对mvc及 其相关设计模式使用的认识。
3
软件设计模式与体系结构课程设计 所需技术:Java (servlet/jsp),web程序设计
所需工具:jdk, spring framework, tomcat, eclipse,mysql 提交形式:设计报告(电子文档+纸质文档) 提交日期: 之前(第14周之前) 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
4
软件设计模式与体系结构课程设计 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象模块及模块实例间交互的方法;或者可以认为,框架是可被应用开发者定制的应用骨架。 可以说,一个框架是一个可复用的设计模块,它规定了应用的体系结构,阐明了整个设计、协作模块之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为模块复用提供了上下文(Context)关系。因此模块库的大规模重用也需要框架。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
5
软件设计模式与体系结构课程设计 编程有一个准则Don't Repeat Yourself(不要重复你的代码)。如果有一些代码出现重复,我们就应该把这些代码提取出来封装成一个方法。随着时间的积累有了一批方法,我们把它整合成工具类。工具类如果形成规模,可以把工具类整合成类库。就像我们不仅不要自己重复造项目中已有的轮子,也不要造别人已经造好的轮子。我们只需要直接使用已有的轮子就行。 框架也是一样,框架,是为了我们不必总是写相同的代码,并且可以让我们专注于业务逻辑实现的一个工具。框架会把我们程序设计中不变的部分抽取出来,让我们专注于与业务有关的代码。
6
之后使用jsp+javabean+servlet 开发 jsp中的数据,通过request----
软件设计模式与体系结构课程设计 以Java 做一个简单的例子。 如:最原始的方法:request >servlet------>servlet 自己通过 request.getparxxxx("参数名") 解析 >再封装到javabean 代码重复比较大。 之后使用jsp+javabean+servlet 开发 jsp中的数据,通过request---- >filter(自己解析了 封装成对象)----->servlet。 如果用springmvc ,则只需要 jsp 通过form 表单提交,直接映射到 controller 方法中的参数 (一句话就是省代码)
7
软件设计模式与体系结构课程设计 框架和类库的区别
框架和类库的主要区别是一是控制反转(Inversion of Control),一般程序的运作是由程序员全盘掌握的。程序资源的初始化、销毁、定位查找,执行逻辑都是我们写代码实现的。这些顺着程序主入口开始查找都可以找得到。但是应用框架后的控制权已经交给了框架。比如配置框架参数时已经控制权移交给框架的控制器。 二是框架会告诉你还缺什么,你只需要把这些代码写完,程序就可以正常运行了。类库实现的代码你无需再写,但是类库没告诉你,程序员需要写哪些代码,需要程序员自己心理有数。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
8
软件设计模式与体系结构课程设计 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式 Model(模型)表示应用程序核心 View(视图)显示数据 Controller(控制器)处理输入 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
9
软件设计模式与体系结构课程设计 MVC的好处是什么
除了将视图从业务逻辑中分离开外,MVC的分离也降低了大型应用设计的难度。代码也更具结构性,因此也更容易维护,测试和重用。这种模式会帮助我们清晰的区分程序各部分的职责,便于程序维护,代码重用以及测试。MVC框架给我们提供了一个基本的MVC骨架,以及许多有用的功能,提高了我们的效率,让开发过程更加轻松。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
10
软件设计模式与体系结构课程设计 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
11
软件设计模式与体系结构课程设计 组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: 1、核心容器:核心容器提供 Spring 框架的基本功能(Spring Core)。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC,Inversion of Control) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 2、Spring Context:Spring Context通过配置文件的方式,向 Spring框架提供上下文信息。Spring Context包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
12
软件设计模式与体系结构课程设计 3、Spring AOP(Aspect Oriented Programming):通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持AOP。通过使用 Spring AOP,不用依赖 EJB (Enterprise JavaBean)组件,就可以将声明性事务管理集成到应用程序中。 4、Spring DAO(Data Access Object):JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
13
软件设计模式与体系结构课程设计 5、Spring ORM(Object Relational Mapping):对那些更喜欢使用对象/关系映射工具而不是直接使用JDBC的人,Spring提供了ORM模块。Spring并不试图实现它自己的ORM解决方案。Spring的事务管理支持这些ORM框架中的每一个,也包括JDBC。 6、Spring Web 模块:Web上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用的上下文。另外,这个模块还提供了一些面向服务支持。例如:实现文件上传的multipart请求,它也提供了Spring和其它Web框架的集成,比如WebWork。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
14
软件设计模式与体系结构课程设计 7、Spring MVC 框架:Spring为构建Web应用提供了一个功能全面的MVC框架。虽然Spring可以很容易地与其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC对控制逻辑和业务对象提供了完全的分离。 它也允许你声明性地将请求参数绑定到你的业务对象中,此外,Spring的MVC框架还可以利用Spring的任何其它服务,例如国际化信息与验证。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
15
软件设计模式与体系结构课程设计 Tomcat9.0安装与配置 1.下载
官网: 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
16
软件设计模式与体系结构课程设计 2、根据自己电脑的位数,有选择的进行下载,下载后解压到相应磁盘中 创建信息系,最早系主任
中国的C J, Date 3 王老师介绍 4 数据库所介绍
17
软件设计模式与体系结构课程设计 2.配置环境变量
右键此电脑->属性->高级系统设置->高级->环境变量中,新建环境变量,变量名(CATALINA_HOME) 变量值:(D:\apache-tomcat-9.0.4)解压路径名 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
18
软件设计模式与体系结构课程设计 3、启动Tomcat: 进入Tomcat下的bin目录,双击startup.bat 创建信息系,最早系主任
中国的C J, Date 3 王老师介绍 4 数据库所介绍
19
软件设计模式与体系结构课程设计 4、上图界面代表启动成功,成功后不要关闭,否则就关掉了Tomcat。 测试Tomcat是否启动成功:
在地址栏输入 若出现下图界面,则启动成功 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
20
软件设计模式与体系结构课程设计 Maven安装与配置 一、需要准备的东西 1. JDK 2. Eclipse 3. Maven程序包
创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
21
软件设计模式与体系结构课程设计 Maven安装与配置 二、下载与安装
1. 前往 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
22
软件设计模式与体系结构课程设计 2. 将文件解压到D:\apache-maven-3.5.3目录下: 创建信息系,最早系主任
中国的C J, Date 3 王老师介绍 4 数据库所介绍
23
软件设计模式与体系结构课程设计 3. 在此电脑->属性->高级系统设置->高级->环境变量中,新建环境变量MAVEN_HOME,赋值D:\apache-maven-3.5.3 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
24
软件设计模式与体系结构课程设计 4. 编辑环境变量Path,追加%MAVEN_HOME%\bin\; 创建信息系,最早系主任
中国的C J, Date 3 王老师介绍 4 数据库所介绍
25
软件设计模式与体系结构课程设计 5. 至此,maven已经完成了安装,我们可以通过DOS命令检查一下我们是否安装成功,输入mvn-v出现如下显示: 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
26
软件设计模式与体系结构课程设计 三、配置Maven本地仓库
1. 在D:\apache-maven-3.5.3\maven-repository目录下新建maven-repository文件夹,该目录用作maven的本地库。 2. 打开D:\apache-maven-3.5.3\confsettings.xml文件,查找下面这行代码: 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
27
软件设计模式与体系结构课程设计 localRepository节点默认是被注释掉的,需要把它移到注释之外,然后将localRepository节点的值改为我们在3.1中创建的目录D:\Program Files\Apache\maven-repository。 3. localRepository节点用于配置本地仓库,本地仓库其实起到了一个缓存的作用,它的默认地址是 C:\Users\用户名.m2。 当我们从maven中获取jar包的时候,maven首先会在本地仓库中查找,如果本地仓库有则返回;如果没有则从远程仓库中获取包,并在本地库中保存。 此外,我们在maven项目中运行mvn install,项目将会自动打包并安装到本地仓库中。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
28
软件设计模式与体系结构课程设计 4. 运行一下DOS命令 :mvn help:system
如果前面的配置成功,那么D:\apache-maven-3.5.3\maven-repository会出现一些文件。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
29
软件设计模式与体系结构课程设计 四、配置Eclipse的Maven环境
1. Eclipse Oxygen,打开Window->Preferences->Maven->Installations,右侧点击Add。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
30
软件设计模式与体系结构课程设计 2. 设置maven的安装目录,然后Finish 创建信息系,最早系主任 中国的C J, Date
3 王老师介绍 4 数据库所介绍
31
软件设计模式与体系结构课程设计 3. 选中刚刚添加的maven,并Apply。 创建信息系,最早系主任 中国的C J, Date
3 王老师介绍 4 数据库所介绍
32
软件设计模式与体系结构课程设计 4. 打开Window->Preferences->Maven->User Settings,配置如下并Apply: 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
33
软件设计模式与体系结构课程设计 五、创建一个maven项目
1、打开file->new ->project,找到maven,新建一个Maven Project 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
34
软件设计模式与体系结构课程设计 2、在New Maven Project向导中,选择Create a simple project并指定项目保存的目录,然后单击Next。如下图所示 - 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
35
软件设计模式与体系结构课程设计 3、在下一个向导中,添加项目信息,如下所示,然后单击Finish。 创建信息系,最早系主任
中国的C J, Date 3 王老师介绍 4 数据库所介绍
36
软件设计模式与体系结构课程设计 那么,maven中的groupId和artifactId到底指的是什么?
groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。 groupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。 比如我创建一个项目,我一般会将groupId设置为cn.Fan,cn表示域为中国,Fan是我个人姓名缩写,artifactId设置为webProject,表示你这个项目的名称是testProj,依照这个设置,你的包结构最好是cn.XX.webProject打头的,如果有个StudentDao,它的全路径就是cn.Fan.webProject.dao.StudentDao 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
37
软件设计模式与体系结构课程设计 4、这样,一个简单的maven项目就已经构建好了 创建信息系,最早系主任 中国的C J, Date
3 王老师介绍 4 数据库所介绍
38
软件设计模式与体系结构课程设计 4、打开pom.xml文件并在其中添加servlet依赖项和Tomcat maven插件,如下代码所示,pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <failOnMissingWebXml>false</failOnMissingWebXml> </properties> <dependencies> <!-- Servlet API --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> </dependencies> 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
39
软件设计模式与体系结构课程设计 在更改pom.xml文件之后,更新maven web项目。
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <path>/</path> </configuration> </plugin> 在更改pom.xml文件之后,更新maven web项目。 要更新web maven项目,请右键单击项目名称(如:webproject)-> Maven -> Update Project... 来更新项目。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
40
软件设计模式与体系结构课程设计 5、查看maven web项目结构,如下图所示,可以看到,多了几个文件夹 创建信息系,最早系主任
中国的C J, Date 3 王老师介绍 4 数据库所介绍
41
软件设计模式与体系结构课程设计 6、现在,创建一个包:com.test.servlet,并在此包下创建一个HelloWorldServlet类,并在其中写入以下代码。 public class HelloWorldServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/plain"); resp.getWriter().write("Hello World! Maven Web Project Example."); } 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
42
软件设计模式与体系结构课程设计 7、右键-run->Maven build,并输入tomcat:run运行嵌入式tomcat服务器
创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
43
软件设计模式与体系结构课程设计 8、现在运行配置启动tomcat服务器。 控制台输出如下图所示 创建信息系,最早系主任
中国的C J, Date 3 王老师介绍 4 数据库所介绍
44
软件设计模式与体系结构课程设计 9、打开浏览器并在地址栏中输入URL: ,得到以下结果: 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
45
软件设计模式与体系结构课程设计 六、一个SpringMVC + Spring + MyBatis的简单实例
首先我们打IDE,还是用的是eclipse,创建一个maven的动态web项目,建立好相应的目录结构 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
46
软件设计模式与体系结构课程设计 文件名 作用 src 根目录,下面有main和test,maven项目标准格式。 main
主要目录,可以放java代码和一些资源文件。 java 存放我们的java代码,这个文件夹要使用Build Path -> Use as Source Folder,这样看包结构会方便很多,新建的包就相当于在这里新建文件夹。 resources 存放资源文件,譬如各种的spring,mybatis,log配置文件。 mapper 存放dao中每个方法对应的sql,在这里配置,无需写daoImpl。 spring 这里当然是存放spring相关的配置文件,有dao service web三层。 webapp 用来存放我们前端的静态资源,如jsp js css WEB-INF 很重要的一个目录,外部浏览器无法访问,只有羡慕内部才能访问,可以把jsp放在这里,另外就是web.xml了 test 这里是测试分支。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
47
软件设计模式与体系结构课程设计 再先新建好几个必要的包, 下面为大家讲解一下每个包的作用, 包名 名称 作用 dao 数据访问层(接口)
与数据打交道,可以是数据库操作,也可以是文件读写操作,。为什么没有daoImpl,因为我们用的是mybatis,所以可以直接在配置文件中实现接口的每个方法。 entity 实体类 一般与数据库的表相对应,封装dao层取出来的数据成为一个对象,一般只在dao层与service层之间传输。 dto 数据传输层 用于service层与web层之间传输 service 业务逻辑(接口) 写我们的业务逻辑,也有人叫bll。 serviceImpl 业务逻辑(实现) 实现我们业务接口,一般事务控制是写在这里 web 控制器 springmvc就是在这里发挥作用的,一般人叫做controller控制器 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
48
软件设计模式与体系结构课程设计 还有最后一步基础工作,导入我们相应的jar包,我使用的是maven来管理我们的jar,所以只需要在pom.xml中加入相应的依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <!-- 1.日志 --> <!-- 实现slf4j接口并整合 --> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.1</version> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> <scope>runtime</scope> </dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version> </version> 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
49
软件设计模式与体系结构课程设计 下面开始进行编码:
第一步:先在spring文件夹里新建spring-dao.xml文件,因为spring的配置比较多,我们这里分三层,分别是dao service web。 读入数据库连接相关参数(可选) 配置数据连接池 配置连接属性,可以不读配置项文件直接在这里写死 配置SqlSessionFactory对象 扫描dao层接口,动态实现dao接口,也就是说不需要daoImpl,sql和参数都写在xml文件上 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
50
软件设计模式与体系结构课程设计 根据我们分层,最后一共使用了7个配置文件,最终的配置文件结构图
同学们可以根据自己的架构,创建相应的配置文件,这里就不做详细说明。 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
51
软件设计模式与体系结构课程设计 谢谢聆听! 创建信息系,最早系主任 中国的C J, Date 3 王老师介绍 4 数据库所介绍
Similar presentations