中南大学软件学院架构超强复习大全.doc_第1页
中南大学软件学院架构超强复习大全.doc_第2页
中南大学软件学院架构超强复习大全.doc_第3页
中南大学软件学院架构超强复习大全.doc_第4页
中南大学软件学院架构超强复习大全.doc_第5页
全文预览已结束

下载本文档

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

文档简介

l JDBC是用来执行SQL的Java API,开发人员可以使用这些标准API来迎接和操作数据库,实现数据库应用程序的开发。JDBC是Java的规范,考虑到规范的适应性,JDBC只提供了最直接的数据库操作规范,在Java.sql包中。2种主要的JDBC连接方式:ODBC桥驱动技术和JDBC纯驱动模式。ODBC驱动程序是由微软设计和开发的一种通用的标准的操作数据库的API,也可以认为是一种数据库系统应用程序的接口规范。纯驱动技术是一种由各个数据库厂商提供的驱动程序,其通过协议的方式,将应用程序的SQL语句直接发送到数据库的DBMS执行,并返回结果。JDBC 可做三件事:与数据库建立连接执行SQL 语句、处理结果。使用JDBC直连DB的缺点:1.在某一时刻连接必须服务于一个用户,以免造成事务冲突。2.创建连接需要耗费时间。3.保持连接打开状态的代价很大。使用数据库连接池的优点:1. 资源重用 2 更快的系统响应速度 3 统一的连接管理,避免数据库连接泄漏 l Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。Servlet能干什么:1.根椐请求创建并响应整个 HTML Web 页面,根据客户请求的性质而具有动态内容。2.创建 HTML Web 页面的动态部分,并嵌入到现有静态 HTML 页面中。3.使用服务器上的其他资源,如数据库、其他Java程序。4.处理与多个 Web 客户端的连接,接收来自多个 Web 客户端的输入信息。生命周期包括加载、实例化、处理客户端请求和移除,该生命周期由javax.servlet.Sercvet接口的init、setvlet、destroy方法实现。该生命周期由部署Servlet的容器来控制。l JSP是Servlet来编写服务端代码过于繁琐和复杂,所以将响应页面的动态部分和静态部分分开。JSP与Servlet的关系:1 JSP是一种建立在Servlet规范提供的功能之上的动态网页技术 2. JSP文件在用户第一次请求时,会被编译成Servlet,然后由这个Servlet处理用户的请求 3.JSP可以看成是运行时的Servlet。JSP执行过程:1.客户端发出请求(Request)2. JSP 容器将JSP转译成Servlet的源代码 3.编译Servlet,并加载到内存执行 4.将结果响应(Response)至客户端 。JSP语法提供3种脚本元素:1. 声明(Declarations)声明变量或方法 2.Scriptlets编写有效的Java程序片段 3.表达式(Expressions)合法的Java表达式。servlet 对象包括:page和config。JSP中会话跟踪的方法:1.隐藏域 2.URL传值 3.session 4.cookie l JavaBean往往封装了程序的页面逻辑,它是可重用的组件。通过使用JavaBean,可以减少在JSP中脚本代码的使用,这样使得JSP易于维护。JavaBean 的优点:变更方便、可重用组件、可在多个应用程序中使用 、可以跨平台 l 页面关联:Web应用程序最突出的优点是其能够聚合大量的信息资源。单个Web组件所提供的信息和功能是有限的,因此需要通过Web组件间的关联来实现信息资源和功能的聚合。Web组件之间共有三种关联关系:请求转发、请求重定向、包含。Web作用数据域:页面范围、请求范围、会话范围、应用范围l MVC模式(三层架构模式)(Model-View-Controller)是软件工程中的一种软件架构模式,组织代码用一种业务逻辑和数据显示分离的方法。把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。控制器负责转发请求,对请求进行处理。视图实现数据的显示。模型封装与应用程序的业务逻辑相关的数据以及对数据的处理方法l Model1和model2的区别 Model1模式的实现比较简单,适用于快速开发小规模项目。但从工程化的角度看,它的局限性非常明显:JSP页面身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用的扩展性和维护的难度。Model2已经是基于MVC架构的设计模式。在model2架构中,servlet作为前端控制器,负责接受客户端发送的请求,在servlet中只包含控制逻辑和简单的前端处理;然后,调用后端的JavaBean来完成实际的逻辑处理;最后,转发到相应的JSP页面处理显示逻辑。区别:本质区别在于处理批量请求的位置不同。说明Strusts2是如何实现MOdel2的?在struts2中,Model对应业务逻辑组件,它通常用于实现业务逻辑方法以及以及与底层数据库的交互等;View对应视图组件,通常是指JSP页面,但也适用于其他视图显示技术,如Velocity或者Excel文档;Control对应系统核心控制器和业务逻辑控制器,系统核心控制器为Struts2框架提供的FilterDispatcher,它根据请求自动调用相应的Action。而业务逻辑控制器是指开发人员自行定义的一系列Action,在Action中负责调用相应的业务逻辑组件来完成处理。l JSTL(JSP Standard Tag Library) 是基于SUN公司所定义规范,由许多公司共同开发完善的开放源代码的jsp标签库,为实现Web应用程序中常用功能提供了一个单一的标准解决方案,是由apache维护的。l Servlet过滤器是Web中的一个小型组件,它能拦截来自客户端的请求和响应信息,进行查看提取或者对客户端和服务器之间交换的数据信息进行一些特定的操作。Servlet过滤器常用的应用场景:1、对用户请求进行统一认证 2、用户的访问进行记录和审核 3、对用户发送的数据进行过滤或替换 4、转换图像格式 5、对响应内容进行压缩,减少传输量 6、对请求和响应进行加解密处理l 什么是Ajax?AJAX是一种异步交互技术,是JavaScript、CSS、DOM、XmlHttpRequest四种技术的集合体,主要应用于异步获取后台数据和局部刷新。异步交互方式:异步发送请求,消除了传统的“发送请求等待发送请求等待” ,极大的提高用户体验。异步:发送请求后不等返回结果,由回调函数处理结果。JavaScript:向服务器发起请求,获得返回结果,更新页面。XML:封装数据。Ajax应用的处理流程1、一个客户端事件触发一个Ajax事件;2、创建XMLHttpRequest对象的一个实例;3、向服务器做出请求;4、服务器完成业务逻辑;5、请求返回到浏览器;6、处理响应数据。Ajax框架:浏览器端1.Dojo 2.Google AJAXSLT 3.jQuery 服务器端1.JSON/JSON-RPC 2.Rails 3.DWRl XMLHttpRequest是ajax的核心机制,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户,达到无刷新的效果。XMLHttpRequest对象的常用方法:1.Open(”method”,”url”):建立对服务器的调用。Method参数可以是POST,GET或PUT。url路径可以使绝对路径也可以是相对路径。另外这个方法还有三个可选的参数。2.Send(content):向服务器发送请求。l AJAX优点:1、最大的一点是页面无刷新,在页面内与服务器通信,给用户的体验非常好。2、使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。AJAX缺点:1缺少一个没有标准之争、没有back和history的浏览器2对搜索引擎的支持不好3安全问题4语言问题l 同步通信和异步通信 同步通信方式-请求响应模型,在传统的web应用模型下,大部分的用户操作都会发送一个http请求给服务器,然后服务器开始处理(接收数据,执行业务逻辑,访问数据库),最后向浏览器返回html页面。异步通信方式-XMLHttpRequest对象,异步发送请求,消除了传统的“发送请求-等待-发送请求-等待”的特性,极大的提高了用户体验。l JavaScript是一种广泛用于客户端的脚本语言,一种动态、弱类型、基于原型的语言,内置支持类l XML(可拓展标记语言)是SMGL的子集,其目标是允许普通的SGML在Web上以目前HTML的方式被服务、接受和处理,被设计成易于实现,且可在SGML和HTML之间互相操作。商业优势:信息共享、单一应用使用、内容交付。技术优势:数据重用、数据和表示分离、可拓展性、语义信息、容易理解、易于编程l 由于软件已经实现了基本的MVC架构,开发者可以基于这个软件,添加自己特定的业务逻辑,这样的软件就可以被称为Web框架。通过Web框架:规范软件的架构、减轻开发的难度、提高效率、降低维护成本。l Struts1的缺陷:Formbean与ActionServlet有关、控制器无法脱web、不能做单元测试l Struts2的大致工作流程可描述为: 浏览器发送请求。 Control中的核心控制器FilterDispatcher根据请求调用相应的业务逻辑控制器(Action)。WebWork的拦截器链自动对请求应用通用功能,如数据校验和文件上传等功能。回调Action中的execute()方法,并在方法体内调用业务逻辑组件来处理请求(Model)。execute()方法将调用业务逻辑组件(Model)得到的数据返还并更新视图层(View)。l Struts2应用的开发步骤:第一步:在web.xml文件中定义核心Filter来拦截用户请求;第二步:如果需要以POST方式提交请求,则定义包含表单数据的JSP页面。如果仅仅是以GET方式发送请求,则无须经过这一步;第三步:定义处理用户请求的Action类;第四步:在Struts.xml中配置action;第五步:在Struts.xml中配置处理结果和物理视图资源之间的对应关系;第六步:编写资源视图. Struts 2的配置文件: web.xml:Web部署描述符,包括所有必需的框架组件。Struts.xml:主要的配置文件,包含result映射、action映射、拦截器配置等。perties:Struts 2的属性配置。struts-default.xml:Struts 2的默认配置文件。struts-plugin.xml:Struts 2框架的插件所用的配置文件。Action映射:将一个请求URI映射到一个action类。name action的名字,用于匹配请求URI。Class Action实现类的完整类名。method 执行Acition时调用的方法。Converther 应用于action的类型转换器的完整类名。Result映射 daspatcher 转发。Redirect 重定向到另外的URL。redirectAction 重定向到另外的Action。chain 用于Action的链式处理。plainText 用于显示某些特定页面的原始内容。Xslt 用于显示XML的内容。l 输入校验:输入校验的内容一般包括验证输入数据的有效性和验证失败后向用户提供错误信息两部分。输入验证的方式可分为客户端验证和服务器端验证。手动验证:1.在Action的方法中编写验证代码。2.在validateXxx方法中编写验证代码。validateXxx即可由框架在业务代码执行前自动被调用。如果多个方法调用同一段验证代码,则可以将验证代码编写在名为validate的方法中即可。内置验证框架:通过在外部配置文件中定义验证规则的方式来简化对输入数据的验证,验证框架通过validator拦截器来调用,通过读取验证文件中的验证规则对输入数据进行验证,验证文件的命名为ClassName-alias-validation.xml。ClassName表示实际的Action类名,alias表示在struts.xml中配置的Action的名字。其中,验证器还分为普通验证器和字段验证器。自定义验证器(以实现验证码功能为例):1.编写ValidationCodeAction,用于产生验证码图像。2.编写自定义的结果类型,用于输出验证码。3.在struts.xml中配置自定义结果类型和ValidationCodeAction。4.修改UserAction,添加验证码属性。5.修改login.jsp,添加验证码输入框。6.编写字段验证器类ValidationCodeValidator 7.注册验证器类ValidationCodeValidator 8.为验证码编写验证规则。l 类型转换:在Http协议中,浏览器(客户端)和服务器端的传输都是字符串形式的数据,但在服务端的java程序中数据是有各种类型的,所以类型转换是不可避免的。(1)使用合法的OGNL表达式命名表单元素时,Struts2就会自动的进行类型转换。(2)Struts2提供基本的类型转换功能。Stringint,long,double,boolean,char,date,array,collection(3)Struts2对集合类型的转换提供了很好的支持。(4)当Struts2提供的内置类型转换器不能满足应用需求时,还可以编写自己的类型转换器。l 什么是AOP?面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。为什么需要AOP?AOP可以说是OOP的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。然而OOP在某些场合无能为力,比如当需要分散的、不具有继承层次的对象引入公共行为的时候,OOP则无法避免代码的重复。抽象的说,OOP允许定义从上倒下的关系,但并不适合定义从左到右的关系。具体而言,比如安全验证和记录日志功能,这类代码往往平均的分散在所有对象层次中,而与它所散步到的对象的核心功能毫无关系。Spring AOP采用纯java实现,无须特别编译。不仅提供AOP基础框架,还提供很多现成的切面实现。Spring AOP和Spring IoC容器无缝的集成,AOP组件享受Spring提供的一切优势,比如可将拦截器、切入点都当做Spring Bean来管理。l AOP的一些概念:关注点:一个关注点可以是一个特定的问题、概念、或是应用程序一个关注点可以被识别为核心关注点或横切关注点。 核心关注点:完成核心业务逻辑的关注点。横切关注点:在AOP中,将那些具有公共逻辑、与其他模块的核心逻辑纠缠在一起的行为称为“横切关注点”,它不是给定编程模型的核心职责。比如:身份验证、日志记录。 切面(Aspect):一个切面是对一个横切关注点的模块化,它将那些散落在各处的、实现关注点的代码归整在一起,其实就是共有功能的实现。如日志切面、权限切面、事务切面等。在实际应用中通常是一个存放共有功能实现的普通Java类。 连接点(join point):它是指应用中执行的某个点,即程序执行流程中的某个点。可能是方法调用、字段访问、异常抛出。建议或通知(Advice):是切面的具体实现。以目标方法为参照点,根据放置的地方不同,可分为前置通知(Before)、后置通知(AfterReturning)与环绕通知(Around)。 切入点(Pointcut):一组join point的总称,用于定义通知应该切入到哪些连接点上。不同的通知通常需要切入到不同的连接点上。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不会影响业务逻辑代码。AOP的实现技术:JavaSE动态代理、动态字节码生成、Java代码生成、语言扩展。建议(advice)是point cut的执行代码,是“切面”执行的具体逻辑。前置建议(before advice)在连接点调用之前,先调用advice。后置建议(after advice)在连接点调用之后,再调用advice成功执行后(after returning advice)抛出异常后(after throwing advice)不管是否异常后(after advice)环绕建议(around advice)完全控制所有连接点引介(introduction)为一个现有的Java类或接口添加方法或字段。混入继承(mixin inheritance)一个混入类封装了一组功能,这组功能可能被“混入”到现有的类中,并且无需求助于传统的继承手段。在AOP里,mixin通过introduction来实现。织入(weaving)将切面整合到完整的执行流程或完成的类。动态横切:通过切入点和连接点在一个切面中创建行为的过程。动态横切通常用于帮助向对象层次中的各种方法添加安全验证或日志记录。在很多应用场景中,动态横切基本代表了AOP。动态横切的核心技术包括连接点、切入点、建议、切面。静态横切:静态横切和动态横切的区别在于,静态横切不修改一个给定对象的执行行为。相反,它可以把扩展和实现附加到对象的基本结构中。此外,它通过引入附加的方法字段和属性来修改对象的结构。在AOP的实现中,通常静态横切也就是引入或混入。l 什么是IOC?控制反转,强制将组件的创建和使用分离,通过反射机制,动态的创建组件已达到解耦目的。IOC最大的好处是什么?因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是实现于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拨(有点象USB接口和SCSI硬盘了)IOC最大的缺点是什么?(1)生成一个对象的步骤变复杂了(事实上操作上还是挺简单的),对于不习惯这种方式的人,会觉得有些别扭和不直观。(2)对象生成因为是使用反射编程,在效率上有些损耗。但相对于IoC提高的维护性和灵活性来说,这点损耗是微不足道的,除非某对象的生成对效率要求特别高。(3)缺少IDE重构操作的支持,如果在Eclipse要对类改名,那么你还需要去XML文件里手工去改了,这似乎是所有XML方式的缺憾所在。l MyBatis实现步骤:1、编写Configuration.xml文件2、获取SqlSessionFactory 3、编写映射器UserMapper.xml;4、编写UserDao的实现。l 使用Hibernate的步骤(三个准备,七个步骤)三个准备:1、导入Hibernate库(jar包);2、添加Hibernate配置文件3、添加对应表的实体类和映射文件。七个步骤:1、configuration 2、创建SessionFactory3、打开Session4、开始一个事务5、持久化操作6、提交事务7、关闭Session、l 使用HQL步骤1、得到session2、编写HQL语句3、创建Query对象l 持久化对象的状态:1.持久化对象的临时状态 (不在Session的缓存中,不与任何的Session实例相关联。在数据库中没有与之相对应的记录 )2.持久化对象的持久化状态 (存在Session的缓存中。 持久化对象映射了数据库中的相关记录。Session在清理缓存时,会同步更新数据库。Session的load()或get()方法返回的对象总是处于持久化状态)3.持久化对象的游离状态(脱离Session缓存。游离对象在数据库中可能存在与之对应的纪录,但游离对象与数据库记录失去了映射关系 )l Hibernate-全自动化ORM框架 Hibernate是一个轻量级、功能强大的ORM框架;提供了完全透明的持久化机制,客户代码可通过一种完全面向对象的方式来处理持久化,而无需和SQL打交道;Hibernate管理Java类到数据库的映射(包括Java数据类型到SQL数据类型的映射)、提供数据的CRUD操作;Hibernate内置一种称为HQL的语言,和SQL的语法接近,但不与特定的数据库表或字段发生直接关联,却又提供了SQL的大部分功能,并且支持类似连接、统计函数、批量数据等关系型概念。使用Hibernate框架进行ORM,可大幅度减少开发时手工使用SQL和JDBC的出错。优点:简单。缺点:多了查询,慢(但实际对于一个JAVA EE应用而言,hibernate通常的处理流程是:从数据看里加载记录-将信息发送到表现层供用户修改或删除-将所做修改重新保存到数据库。在这种处理流程下,应用本身就需要两条SQL语句)。l iBats-半自动化ORM框架 提供了基于JDBC之上的一层简单抽象,是一种基于SQL语句映射的低级别ORM方案,使用原生态SQL作为查询语言。l OGNL是Object Graph Navigation Language,对象图导航语言。ONGL是一种强大的表达式语言,它通过简单一致的表达式语法来读取和设置Java对象的属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能。WEB容器是指一种安装在服务端计算机中的特定软件。此类软件遵循HTTP协议,主要功能是负责侦听指定端口,接收客户端的请求并解析,然后将指定的响应页面发送到客户端。EL表达式EL是一种简单而强大的语言,提供了在JSP脚本元素范围外使用运行时表达式的功能。Web Services应用程序组件,使用开放协议进行通信,独立的并可自我描述,可通过使用UDDI来发现,可以被其他应用程序使用,XML是其基础。l Mybatis一个持久数据映射框架,提供了基于JDBC之上的一层简单抽象,是一种基于SQL语句映射的低级别ORM方案,使用原生态S

温馨提示

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

评论

0/150

提交评论