J2EE相关技术介绍.doc

上传人:小飞机 文档编号:2761569 上传时间:2023-02-24 格式:DOC 页数:22 大小:750KB
返回 下载 相关 举报
J2EE相关技术介绍.doc_第1页
第1页 / 共22页
J2EE相关技术介绍.doc_第2页
第2页 / 共22页
J2EE相关技术介绍.doc_第3页
第3页 / 共22页
J2EE相关技术介绍.doc_第4页
第4页 / 共22页
J2EE相关技术介绍.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《J2EE相关技术介绍.doc》由会员分享,可在线阅读,更多相关《J2EE相关技术介绍.doc(22页珍藏版)》请在三一办公上搜索。

1、精选优质文档-倾情为你奉上J2EE相关技术介绍J2EE 技术介绍J2EE 概述为了解决企业在软件开发中出现的问题,SUN 公司提出的以 Java 2 平台为核心一种框架方案 J2EE。它的出现精简了企业软件开发、部署过程,为企业建造高质量的应用系统提供了好的支撑,解决了传统两层模式(Client/Server)下客户端庞大的弊端。J2EE 平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于 Web 的多层应用系统提供了强大的支持,本质上是一个分布式的服务器应用程序设计环境。2005 年 6 月,J2EE 正式更名为 Java EE。J2EE 的四层模型J2E

2、E 采用多层的分布式模型,J2EE 应用程序既可以是三层结构,也可以是四层结构。典型的基于 B/S 的 J2EE Web 应用四层结构包括客户层、控制层、业务层和持久层,分层图如图 2.1 所示:1 客户层客户层又称为用户层。简单来理解就它主要是与客户双向互动的,既接收来客户的命令或请求又把来自系统的执行结果展示给用户。J2EE 客户端有许多,可以是基于 Web 或者不是基于 Web。通常用户层采用 Web 客户端,也就是瘦客户端,显示由 JSP 或 Servlet 产生的 Web 页面。客户层一般不实现如数据库操作(sql)、完成复杂的业务逻辑这样的功能。Web 客户端基于浏览器形式,维护、

3、使用、升级方便,不需要单独再次安装客户端。2 控制层控制层又称 Web 层。它的主要作用是接收来自客户端的请求(Request),并对客户的请求产生相应的响应(Response)。J2EE 平台中,控制层是由 Web 容器内的组件来实现,可以解决系统异构性问题,实现系统的通用性、可伸缩性、易维护性。3 业务层业务层或 EJB 层主要是满足某些领域(教育业和金融业)特定业务需要的。通常情况下,业务层提供业务服务组件供应用程序使用。业务组件通常被实现EJB(Enterprise JavaBeans)组件,并由 EJB 容器负责管理和执行。4 持久层持久层或 DAO(DataAccess Objec

4、t,数据访问对象)层,此层由许多的 DAO 组件构成。DAO 组件实现了对数据库记录的创建、查找、更新和删除(CRUD)等原子操作。持久层可以采用不同的访问技术,对应不同的访问技术,DAO 组件的实现会完全不同。通常情况下,为了设计更好的软件,保证系统具有良好的去耦,我们为每个 DAO 组件都提供接口,方便业务逻辑组件的使用。MVC 设计模式MVC 工作原理MVC 是 20 世纪 80 年代出现并使用的一种软件设计模式,即模型、视图、控制器。它将程序的输入、输出和处理环节分开,即分成相对独立而又能相互协同工作的三个部分,三个部分别担负不同的任务,有效的降低软件模块之间的耦合,提供了良好的可扩展

5、性。MVC 模式类似于设计模式中的观察者模式,它的处理过程如图 2.2 所示,它是所有面向对象的程序设计语言都应该遵守 MVC的法则。1 模型(Model)模型是应用程序的主体,表示业务逻辑或业务数据,接受来自视图的请求数据,并向视图返回最终的处理结果。与视图和控制器相比较,模型有最多的处理任务。模型与数据格式关系不大,一个模型能够为多个视图提供数据或者说多个视图能够共享一个模型。模型的出现极大的提高了应用的可重用性。业务模型的设计是 MVC 的重要问题。2 视图(View)就视图而言,它是用户能够与其交互的界面。视图向用户呈现相关数据,并能接收来自用户输入的数据,但是它并不做任何实质性的业务

6、处理。视图虽然能够向模型查询业务状态,但它自身并不能改变模型。视图能够接受模型发出的数据更新事件,并对用户界面进行同步更新。3 控制器(Controller)控制器是表现层和业务层的模式,主要完成与客户端的交互、控制并管理每个请求和处理,它的本质就是一个分发器,它仅仅把用户的请求传递给模型,告诉模型做什么,并选择符合要求的视图展现给用户,它自身并不对数据做任何处理。Struts2 框架Struts2 框架概述通常来讲,所谓的框架就是一种结构化的软件。在框架的帮助下,我们很容易将某些领域的任务和一些具体问题进行流程上的抽象,借助框架提供的平台,我们可以更快捷地创建满足自己工作需要的 Web 应用

7、程序。Struts2 是实现了MVC 模式的 Web 框架。它运行起来稳定,设计理念先进,性能优秀。Struts2 采用拦截器的机制来处理用户的请求,实现权限拦截,使得业务逻辑控制器能够与ServletAPI 完全脱离开,弥补了 Struts1 代中 JSP/Servlet 耦合非常紧密,难于测试等问题。Struts2 的工作原理Struts2 的工作原理如图 2.3 所示。它接收来自客户端的请求到作出响应主要通过以下流程来完成:1 请求 HttpServletRequest 通过客户端的浏览器发出(请求是。action 或 JSP);2 这个 HttpServletRequest 请求经过许

8、多过滤器(比如 SiteMesh);3 接着 Struts2 的核心控制器 FilterDispatcher 会被调用。调用后 Struts2 的核心控制器 FilterDispatcher 会主动询问 Struts2 的 Action映射器 ActionMapper 来决定是否针对当前的 HttpServletRequest 请求调用相应的动作 Action;4 如果 Struts2 的动作 Action 映射器 ActionMapper 决定了当前的请求需要调用某个 Action,那么 Struts2 的核心控制器 FilterDispatcher 就会把当前请求的处理权利交给动作 Act

9、ion 的代理 ActionProxy;5 Action 的代理 ActionProxy 会通过 Struts2 的配置管理器(Configuration Manager)查找struts。xml ,找寻当前请求要求使用的 Action 类;6 接着,Action 的代理 ActionProxy会构建一个 Action 的调用者 ActionInvocation 的实例;7 ActionInvocation 对象通过“名字”来调用 Action。在调用 Action 的过程中有要关联相关拦截器(Intercepter)的调用;8 当 Action 执行完了后,Action 的调用者 Actio

10、nInvocation 会根据 Struts2 的struts。xml 文件配置信息找到对应的返回结果。Struts2 实现 MVC 的原理Struts2 是 MVC 设计模式的具体的实现,我们很容易根据自己需要快速搭建Struts2 的开发环境。在 Struts2 中,动作(action)、结果(result)、过滤分配器(FilterDispatcher)是对 MVC 模式的具体实现,如图 2.4 所示:1 控制器(FilterDispatcher)在 Struts2 中,控制器是由 FilterDispatcher 来实现的。控制器 FilterDispatcher位于 MVC 的最前端

11、,它是在客户请求过程中第一个被调用的组件。控制器的工作原理是将客户的请求映射到具体的动作,并决定由哪个动作(Action)来完成客户的请求。2 模型(动作)模型由 Struts2 的动作组件来实现。Struts2 的动作组件有两个作用:一是一个动作将业务逻辑调用封装到一个单独的工作单元中,二是动作是一个传输数据的场所。控制器在收到请求之后,必须通过映射来决定哪个动作处理这个请求,一旦找到了适当的动作,控制器会调用这个动作并将控制权交给它,完成工作后,就向提交请求的用户返回视图。3 视图(结果)视图是 MVC 呈现给用户的组件,它的主要作用是将 WEB 应用程序的状态转变为一种可视化的表示,这种

12、表示使得用户能与它充分交互。动作会具体负责选择哪个结果来呈现响应,它可以从任意数量的结果中选择。Spring 框架Spring 框架概述Spring 框架由 Rod Johnson 开发,是分层的 Java SE/EE 应用一站式的轻量级开源框架。它以 IoC(Inverse of Control:反转控制)和 AOP(Aspect OrientedProgramming:面向切面编程)为内核,提供了展现层 Spring MVC 和 持久层Spring JdbcTemplate、ORM 模块以及业务层 SpringBean 管理、事务管理等众多的企业级技术。Spring 出现就是为了解决 Ja

13、vaEE 程序开发人员在实际开发中遇到的问题。与 EJB 繁重、复杂的解决方案相比较,它属于轻量级的解决方案。Spring 框架结构Spring3 框架由 20 多个模块组成,这些模块为企业的开发提供了 “一站式”选择,如图 2.5 所示:1 核心容器(Core Container):是整个 Spring3 框架主要部分,完成了整个结构的最基本的功能。核心容器通过配置文件的方式描述类和类之间的依赖关系。BeanFactory(Bean 工厂)是 Core Container 的主要部件组件。IoC 容器负责依赖类之间的建立,连接、获取、管理等工作。SpringContext 是一个配置文件,它

14、不但提供了对国际化、生命周期事件和验证的支持还提供了如 Email、JNDI 访问、EJB 集成、国际化校验等。Expression Language 完成了操作和查询对象图的功能。2 AOP 模块:Spring 的 AOP 模块提供了满足 AOP Alliance 规范的实现,确保它与其它 AOP 框架的互通,同时它还整合了 AspectJ 框架。3 数据访问和集成:Spring 对中间层数据的访问提供了强大的支持,使用它可以极大简化程序的数据访问。它主要包括 JDBC 模块、ORM 模块、OXM 模块、Transaction 模块等。(1)JDBC 模块主要提供了对 JDBC 的抽象。(2

15、)ORM(Object/Relation Mapping)提供了常用的“O/R”映射 APIs 的集成。(3)OXM(O/X Mapper)模块完成 POJO 和 XML 之间的变换。(4)Transaction 模块能够给 Spring 管理的对象提供良好的事务管理。4 Web 及远程操作:包括 Web 模块、Web-Struts 模块、Web-Portlet 等模块。(1)Web 模块:该模块提供了基于 Web 的功能和工具。它提供了如模板引擎、文件上传、远程过程访问等功能。(2)Web-Servlet 模块:该模块提供了企业应用的 MVC 实现。(3)Web-Struts 模块:该模块为

16、 Struts 和 Spring 的整合提供了较好的支持。(4)Web-Portlet 模块:该模块为 MVC 在 Portlet 环境下提供了支持。5 测试部分(Test):可以用回归测试框架 JUnit 对 Spring 组件进行测试。AOP面向切面编程 AOP 是对 OOP 思想的延伸,它采用横向抽取机制取代了传统纵向继承体系。主要是将日志记录、性能统计、安全控制、事务处理、异常处理等代码从业务逻辑代码中划分出来,使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性。IoC控制反转(IoC)又称依赖注入(Depedency Injection,DI)指程序运行过程中,如果需要另一个对象

17、协作时,无需在代码中创建被调用者而是依赖于外部容器的注入。IoC 是一种设计模式,程序设计人员利用 IoC 的思想可以解决组件之间相互依赖关系并对组件进行配置。Spring中BeanFactory就是典型的IoC容器,Spring IoC 容器注入依赖资源主要有设值注入和构造注入两种方式。Hibernate 框架ORM对象关系映射(Object Relational Mapping,简称 ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的矛盾出现的技术,通过这种技术,我们可用面向对象的方式操纵持久化对象 (Persistence Object )从而访问关系型数据库。Hibernate

18、 是目前比较流行的开源 ORM 框架,主要通过映射类(*。java)、映射文件(*。hbm。xml)以及数据库配置文件(hibernate。properties 或 hibernate。cfg。xml)完成ORM 功能。通过 O/R 映射,可以将一个二维的数据表(table)和实体的 Bean 进行关联。基本的映射方式如表 2.1 所示:Hibernate 的框架结构Hibernate 对 JDBC 的类库进行了的封装,适合数据量较小的情况。Hibernate的框架结构可以用图 2.6 所示:1 SessionFactory: SessionFactory 是 Hibernate 的关键对象,

19、它保存了数据库对应的映射关系并负责建造 Session 对象。2 Session:Session 是 Hibernate 进行持久化的基础对象,提供了增加、删除、修改、查找(CRUD)等方法,一个 Session 可包含多个事务对象。3 持久化对象(Persistant Object):持久化对象 PO 是与 Hibernate Session 关联的 JavaBeans/POJO。持久化对象可认为是数据库中的表映射的 JAVA 对象,在程序中对持久化对象 PO 进行的相关操作将自动转换为对持久层的修改。4 瞬态对象(Transient object: TO):指没有与 Session 关联的

20、对象。它不会被持久化,也不会赋予持久化标志。5 事务:事务代表一次原子操作,是 Hibernate 持久层访问的重要方面。Hibernate 事务是对底层具体的 JDBC、JTA 的抽象。所有的持久化操作都应该在事务管理下进行。6 连接提供者:连接提供者通常由 DataSource 充当,用于生成 JDBC 连接。7 事务工厂:事务工厂主要是对底层的事务进行封装并进行抽象。Hibernate 核心 APIHibernate 提供了大量的接口供开发者进行数据库访问、相关配置、进行映射。图 2.7 显示了 Hibernate 核心 API 的内部关系。Hibernate 的运行过程如下:1.Hib

21、ernate 的 Configuration 类主要职责是管理 Hibernate 的配置信息。这新信息包括数据库 URL、用户名、密码、JDBC 驱动和方言。2.应用程序先调用 Configuration 类,该类读取 hibernate。cfg。xml 或 hibernate。properties 的信息;3.调用 Configuration 对象的方法生成一个 SessionFactory对象;4.然后从 SessionFactory对象的 openSession()方法生成一个 Session 对象;5.可通过 Session 对象的方法对 PO 进行操作;6.可通过 Session

22、对象的 createQuery 方法生成一个 Query 对象,然后利用Query对象执行 HQL(Hibernate Query Language)检索;7.在查询的情况下,可通过 Session 对象生成一个 Criteria 对象,然后利用Criteria 对象执行 QBC(Query By Criteria)检索;8.可用 Session 对象 beginTransaction()方法生成 Transaction 对象开始一个新的事务。若无异常,Transaction 对象将调用 commit()方法向底层数据库提交事务。Java虚拟机体系结构简介Java包括四个相互关联的技术:Jav

23、a语言、JavaAPI、class文件和Java虚拟机,其中Java技术的核心是Java虚拟机,所有的Java程序都在其上运行。Java虚拟机是一个想象中的机器,在实际的计算机上可以用不同的方式(软件或硬件)加以实现),Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机有自己想象中的硬件,如处理器、堆栈、PC寄存器等,还具有相应的指令系统。Sun公司定义了Java虚拟机规范,只要根据Java虚拟机规格描述,将解释器移植到特定的计算机上,就能保证经过编译后的Java代码能够

24、在该系统上运行。图1.1是Java虚拟机的体系结构图。类装载器子系统负责把Class文件载入Java虚拟机,它是运行Java程序的第一道流程;运行时数据区是Java程序运行的场所;执行引擎是Java虚拟机的核心,它执行Java虚拟机的指令,完成对Java程序的执行;本地方法接口是实现Java方法与宿主机本地方法互相调用的连接点,通过本地方法接口可以实现对宿主机本地方法的调用,加强了Java程序的平台无关性。Java虚拟机的每个实例都有一个它自己的方法区和一个堆,运行于Java虚拟机内的所有的线程都共享这些区域。当虚拟机装载类文件的时候,它解析其中的二进制数据所包含的类信息,并把它们放到方法区中

25、。当程序运行的时候,Java虚拟机把程序初始化的所有对象置于堆上,而每个线程创建的时候,都会拥有自己的程序计数器PC和Java栈,其中程序计数器中的值指向下一条即将被执行的指令,线程的Java栈则存储为该线程调用Java方法的状态;本地方法调用的状态被存储在本地方法栈,该方法栈依赖于具体的实现。类装载器、运行时数据区、执行引擎、本地方法接口等模块一起组成了虚拟机的内部体系结构,这些定义严格地规定了虚拟机所要实现的外部特征以及模块之间的交互,对于运行时的具体细节,大多由实现的设计者来决定。类装载器Java虚拟机的类装载就是指将包含在类文件中的字节码载入Java虚拟机中,并使其成为Java虚拟机的

26、一部分。类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载!连接和初始化,其中链接又可以分成校验!准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:装载查找和导入类或接口的二进制数据;连接执行校验!准备和解析步骤。其中校验指检查导入类或接口的二进制数据的正确性;准备阶段负责给类的静态变量分配并初始化存储空间;解析的作用是将符号引用转成直接引用。初始化初始化类的静态变量和静态Java代码块。Java虚拟机中类的装载是由ClassLoade:和它的子类来实现的,Java ClassLoader这个类负责在运行时查找和载入类文件。运行时数据区当Java虚

27、拟机运行一个程序时,它需要内存来存储各类信息,例如字节码!从己装载的class文件中得到的信息、程序创建的对象、传递给方法的参数、返回值、局部变量、以及运算的中间结果等。Java虚拟机把这些数据都组织到运行时数据区中,以便于管理。运行时数据区包括方法区、堆、Java栈、PC寄存器和本地方法栈。Java虚拟机的每个实例都有一个它自己的方法区和堆,运行于Java虚拟机内的所有的线程都共享这些区域。当虚拟机装载类文件的时候,它解析类文件的二进制数据包含的信息,并把它们放到方法区中。当程序运行的时候,Java虚拟机把程序初始化的所有对象置于堆上。一个Java虚拟机中只存在一个堆空间,故所有线程共享这个

28、堆。在Java虚拟机的堆里存放着正在运行的Java程序所创建的所有对象(类实例或者数组)。堆空间的回收由垃圾收集器完成,Java虚拟机规范并没有指定垃圾收集应该采取什么技术,甚至没有强制规定垃圾收集器,这些都由虚拟机的设计者根据需要自行决定。当启动一个新线程的时候,Java虚拟机会为它分配一个Java栈,Java以栈帧为单位保存线程的运行状态。帧数据区主要用来保存关于支持常量池解析、正常方法返回以及异常派发等机制所需要的信息。当线程创建的时候,都会拥有自己的程序计数器PC和Java栈,其中程序计数器中的值指向下一条即将被执行的指令,线程的Java栈则存储为该线程调用Java方法的状态。本地方法

29、调用的状态被存储在本地方法栈,该方法栈依赖于具体的实现。PC寄存器和Java栈域是私有的,任何线程都不能访问另一个线程的PC寄存器和Java栈。执行引擎执行引擎是Java虚拟机实现的核心,Java虚拟机中的执行引擎就好比中央处理器,使得Java虚拟机重复不断地读取字节码并执行,直到虚拟机进程退出。Java虚拟机规范中规定:执行引擎的行为由指令集来规定。对于每条指令,规范都详细规定了执行该指令时应该“做什么”,但是没有说明”如何做“,因此Java虚拟机的实现者可以采取解释执行技术即时编译(JusthiTime,JIT)技术或者直接在专用芯片上执行指令的技术,甚至可以是它们的混合技术。由于指令系统

30、的简单性,使得虚拟机执行指令的过程十分简单,从而有利于提高指令的执行效率。本地方法接口本地方法是把Java程序与非Java语言程序和平台相关功能结合的有效方式,在考虑较少安全性和可移植性的情况下,Java本地方法对于大量已有非Java软件的利用,以及直接操纵硬件的程序将发挥很好的作用。本地方法接口(JavaNativeInierface,JNI)是用于实现与本地方法交互的机制,它可以使得开发者在一特定的主机平台上,把与JNI兼容的本地方法以二进制形式连接到任何支持JNI的虚拟机实现上。JNI最重要的好处是它没有对底层Java虚拟机的实现施加任何限制。因此,Java虚拟机厂商可以在不影响虚拟机其

31、它部分的情况下添加对JNI的支持。程序员只需编写一种版本的本地应用程序或库,就能够与所有支持JNI的Java虚拟机协同工作。然而,对于本地方法接口,实现Java虚拟机并不要求一定要有它的支持,甚至可以完全没有,Sun公司实现JNI是出于可移植性的考虑,当然也可以设计出其它的本地接口来代替Sun公司的JNI。在Web开发方面Java跟PHP八大对比一、 语言比较PHP是解释执行的服务器脚本语言,首先php有简单容易上手的特点。语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发。而java需要先学好java的语法和熟悉一些核心的类库,懂得面向对象的程序设计方法。所以java不如p

32、hp好学。Java首先要编译成字节码.class文件,然后在java虚拟机上解释执行。Java的Web开发首先最容易想到的就是JSP(现在已经到JSP2.0),原来的java的Web开发都是用servlet来实现的,用servlet来开发需要程序员在java的源文件中嵌入大量的html代码。所以后来就出现了JSP,JSP可以方便的嵌入到html文件当中,其实jsp文件在服务器上执行的时候首先会被应用服务器转换成servlet,然后再编译执行。Jsp可以通过servlet和JavaBean的支持产生强大的功能。JavaBean 是一种可复用的、跨平台的软件组件。使用javabean可以方便的实现

33、java代码和html的分离,能够增强系统的功能和软件的复用性。Java的Web开发属于SUN公司定义的J2EE其中的规范。而且在J2EE中包括了java的Web开发的所有方面,如:JSP、Servlet、JDBC、JNDI、JAVABEAN、EJB等等。J2EE就特别适合于做大型的企业级的应用。二、 数据库访问比较Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库。访问数据库的接口比较统一。PHP对于不同的数据库采用不同的数据库访问接口,所以数据库访问代码的通用性不强。例如:用Java开发的Web应用从MySQL数据库转到Oracle数据库只需要做很少的修

34、改。而PHP则需要做大量的修改工作。三、 系统设计架构比较采用Java的Web开发技术,需要使用的是面向对象的系统设计方法,而PHP还是采用面向过程的开发方法。所以用Java进行开发前期需要做大量的系统分析和设计的工作。四、 跨平台性Java和PHP都有很好的跨平台的特性。几乎都可以在不作任何修改的情况下运行在Linux或者Windows等不同的操作系统上。五、 开发成本比较PHP最经典的组合就是:PHP + MySQL + Apache。非常适合开发中小型的Web应用,开发的速度比较快。而且所有的软件都是开源免费的,可以减少投入。Java的Web应用服务器有免费Tomcat、JBoss等,如

35、果需要更好的商业化的服务有:Web Sphere和 Web logic。六、 分布式多层架构比较PHP只能实现简单的分布式两层或三层的架构,而JAVA在这方面就比较强大,可以实现多层的网络架构。数据库层(持久化层)、应用(业务)逻辑层、表示逻辑层彼此分开,而且现在不同的层都已经有一些成熟的开发框架的支持。例如Struts就是利用java的Web开发技术实现了MVC的设计模式,而在业务逻辑层也有Spring框架,数据库持久化层有Hibernate等框架。这些框架可以方便开发者高效、合理、科学得架构多层的商业应用。下面简要的说一下Struts,它实质上是在JSP Model2的基础上实现的一个MV

36、C(Model、View、Controler)框架。JSP Model2体系结构是一种联合使用JSP 与Servlet 来提供动态内容的方法。在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由Servlet实现的,视图由一组JSP文件组成。采用Struts可以明确角色的定义和开发者与网页设计者的分工。而且项目越复杂,其优势越明显。七、 源代码安全PHP开发的程序的源代码都是公开的,他人拿到php开发的程序后都可以进行修改。Java开发的程序,最后用户拿到的是只是一些编译好的class类,无法看到完整的源代码,安全性高。八、性能比较有人做过试验,对这两种种语言分

37、别做回圈性能测试及存取Oracle数据库测试。在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的回圈。而PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒。数据库测试中,二者分别对 Oracle 8 进行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒。所述,我个人认为,PHP适合于快速开发,中小型应用系统,开发成本低,能够对变动的需求作出快速的反应。而Java适合于开发大型的应用系统,应用的前景比较广阔,系统易维护、可复用性较好。还有,同样功能的系统用Java开发的系统要比

38、PHP开发的系统的价格要高。SSH框架的优点1) Struts:首先struts是开源的,使开发者可以更深了解他的原理和内部实现机制,可扩展性采用MVC模式分离业务逻辑层、显示层、模型层。低耦合,结构清晰,使开发者专注于业务逻辑,还有丰富的标签库供使用,支持国际化,还有很高的重用性。2)Hibernate是连接的中间件,而且对程序的依赖性很小,透明性。使用了的反射机制轻量级,对jdbc进行了轻量级的封装,而且可以在程序中取代EJB的cmp,完成持久化性能很好,而且还是轻量级、很灵活,它支持多种数据库的一对多的复杂关系,可以完全使用面向对象的思想去编程,使用了JTA、JDBC和JNDI技术。3)

39、Spring 是基于ioc(控制反转)和aop(面向切面编程)的框架而且封装了所有的事务,不需要程序员自己去提交事务,一切都由web容器去控制,省去了很多代码。Spring采用了单态和工厂模式,采用mvc模式下的java程序 ,尽管已经把层与层之间的关系耦合度降低,但还是有联系,这时候使用Spring 把所有bean都交由web容器去控制、创建和销毁,这样才真正的降低了耦合度,而且bean的创建的生命周期都在web容器里控制,而且它从工厂里实例的bean都是单态的,当然可以加一个属性让它不是单态。面向接口编程,只需要知道要实现的接口就可以,不需要知道他的具体实现而且使用spring框架有利于单

40、元测试。女人,应该活出自己的自信和精彩,不能把赖以生存的东西寄托在他人身上,不管他多么爱你,终有一天会厌倦你的依赖和无所事事。越有能力的女人,越自信;越有能力的女人,越可爱;越有能力的女人,越值得拥有和疼惜。爱情,充满了热烈和激情,在热情恋爱中的男女,都会忽略掉对方的缺点,看到的都是优点,甚至失去理智和冷静。倘若恋爱时候,太过于理智和冷静,可能就不叫爱情。再热烈的爱,都有冷却的时候,冷却后的我们,始终是要考虑现实生活里的柴米油盐酱醋茶的。最好的爱情,是能够经历时间的考验,在激情过后,依然愿意陪你在俗世烟火里,看细水长流。都说陪伴是最长情的爱,但是最好的陪伴,就是简单的柴米油盐。人生充满世味,需

41、要醉人的浪漫,更离不开俗世烟火,然而不是每一个人都会因为爱情,而走进一生无悔的圆满婚姻里。再浪漫的婚姻,都离不开柴米油盐酱醋茶的瓢碗碰撞。好的爱情和婚姻,是两个人同视着一个方向,携手并进。在婚姻里,女人的独立并不是为了证明什么?而是让自己活的更精彩,让生活更幸福。优秀的女人,也会让你更具有魅力。真正爱你的人,不光让你有丰衣足食的生活,更会让你越来越优秀。一个聪明的女人,她不会因为安逸的生活去爱上一个男人,她会因为这个男人的优秀而义无反顾的爱上他。一般来说,男人和女人,是一样的,都希望另一半是可以在生活里独立行走的人,是可以给自己成长和进步的人,能够让自己有安全感,绝不是在患得患失里生活。真正爱

42、你的人,没有配不配,也许对方不是最好条件的一个,但一定是那个可以让你进步,也最让你悸动心灵的人。没有谁愿意看到自己的另一半,每一天都在浑浑噩噩不思进取的活着。爱你的人,相处中会让你越活越漂亮,越活越精彩。在爱情的路上,两个真心相爱的人,会彼此相互成长,相互快乐的进步。你也许不优秀,但是因为爱,优秀可以影响你,这就叫,近朱者赤。若真心爱对方,不妨彼此一起努力,彼此鼓励,彼此进步,让距离不再越来越远。距离近了,心才能更好的靠近。真爱对方,有时候也会相互改变。能够为了你改变自己,让自己变得更优秀的人,才是最爱你的人。第一名:天蝎座天蝎男必定是隐私保护的最好的男人咯!就连天蝎男的很多想法都不是那么容易

43、就被理解的呢!天蝎座的男人大脑很复杂,总部是那么容易就被人了解的,即便你们已经认识了很长时间,或许你都不是那么容易就了解天蝎男的心里在想什么呢!不过天蝎座的男人在爱情上说专情真的是温柔极致,可是另一方面在暧昧这方面,天蝎男也的确不是一个省油的灯呢!天蝎座的男人总是惹的身边女人都对自己有些小情愫哦!第二名:巨蟹座巨蟹男对家庭是很偏爱的,但有时候作为中央空调的他会跟身边的很多女人暧昧,当控制不住自己感情的时候,巨蟹男也会做出一些出格的事情,不过这个时候的巨蟹男会尽可能的隐藏自己的感情,不管有多喜欢情人,或者是有多少小秘密,巨蟹男都当作是没有发生过一样的捍卫自己的家庭,的确像巨蟹男这样负责任的男人很

44、少见,可是巨蟹男也是有些小秘密的哦!只不过巨蟹座的男人想法比较谨慎和细致,哪怕是敏感的女人,也不是那么容易就能够发现的呢!第三名:双子座双子男生活中是一个比较多变的人,不是那么容易就被人发现双子男的小秘密呢!双子座的男人并不用那个刻意的隐藏自己,双子男说的话你就分不出究竟是真是假,这大概就是双子男善变的性格吧!即便是你抓到了什么蛛丝马迹,双子男也会很有办法来磨平的,再加上双子座的男人身边的朋友很多,这些狐朋狗友当中帮双子男说话的人也不在少数呢!所以呀!双子座的男人的确是把自己的隐私保护的很好呢!劝你还是拉拢一下双子男的朋友了解他不愿被你知道的事情吧!第一名:天蝎座天蝎男必定是隐私保护的最好的男

45、人咯!就连天蝎男的很多想法都不是那么容易就被理解的呢!天蝎座的男人大脑很复杂,总部是那么容易就被人了解的,即便你们已经认识了很长时间,或许你都不是那么容易就了解天蝎男的心里在想什么呢!不过天蝎座的男人在爱情上说专情真的是温柔极致,可是另一方面在暧昧这方面,天蝎男也的确不是一个省油的灯呢!天蝎座的男人总是惹的身边女人都对自己有些小情愫哦!第二名:巨蟹座巨蟹男对家庭是很偏爱的,但有时候作为中央空调的他会跟身边的很多女人暧昧,当控制不住自己感情的时候,巨蟹男也会做出一些出格的事情,不过这个时候的巨蟹男会尽可能的隐藏自己的感情,不管有多喜欢情人,或者是有多少小秘密,巨蟹男都当作是没有发生过一样的捍卫自

46、己的家庭,的确像巨蟹男这样负责任的男人很少见,可是巨蟹男也是有些小秘密的哦!只不过巨蟹座的男人想法比较谨慎和细致,哪怕是敏感的女人,也不是那么容易就能够发现的呢!第三名:双子座双子男生活中是一个比较多变的人,不是那么容易就被人发现双子男的小秘密呢!双子座的男人并不用那个刻意的隐藏自己,双子男说的话你就分不出究竟是真是假,这大概就是双子男善变的性格吧!即便是你抓到了什么蛛丝马迹,双子男也会很有办法来磨平的,再加上双子座的男人身边的朋友很多,这些狐朋狗友当中帮双子男说话的人也不在少数呢!所以呀!双子座的男人的确是把自己的隐私保护的很好呢!劝你还是拉拢一下双子男的朋友了解他不愿被你知道的事情吧!专心-专注-专业

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号