资源描述
单击此处编辑母版标题样式,第4章Java Web应用开发及开发平台,第,4,章,Java Web,应用开发及开发平台,4.1 Java EE简介,4.2 MVC模式概述,4.3 轻量级Java EE框架应用相关技术,4.4 建立开发平台,第 4 章Java Web应用开发及开发平台4.1,4.1 Java EE简介,4.1.1 Java EE及其模型,Sun公司所提出的经典Java EE应用规范,往往以EJB(企业级Java Bean)为核心,以应用服务器为运行环境,所以通常开发、运行成本较高。,4.1 Java EE简介4.1.1,轻量级容器提供了一种管理、定位业务对象的办法,用不着JNDI寻址、定制服务器之类的额外辅助。轻量级容器为应用对象提供注册服务,其较之EJB容器而言,不仅功能强大,而且避免了容器强制业务对象采用特定的接口,最大程度地降低了侵入性,实现了效果极佳的架构重用。,轻量级容器提供了一种管理、定位业务对象的办法,用不着JN,1. Java EE的概念Java EE是我们所熟知的Java 2三大平台之一J2EE(Java 2 Platform Enterprise Edition)的新名称,是Sun公司定义的一个开发分布式企业级应用的规范。J2EE技术的基础就是核心Java平台或Java 2平台的标准版。J2EE不仅巩固了标准版中的许多优点,同时还提供了对EJB(Enterprise Java Beans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。,1. Java EE的概念Java EE是我们所,J2EE体系结构能够提供中间层集成框架来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成的强有力支持,完全支持Enterprise Java Beans,有良好的向导支持打包和部署应用,添加目录支持,既增强了安全机制,又提高了性能。,J2EE体系结构能够提供中间层集成框架来满足无需太多费用,2. Java EE模型和组件Java EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据它们所在的层分布在不同的机器上。Java EE的出现是为了解决两层模式(Client/Server,C/S)的弊端。在传统C/S模式中,虽然部署比较容易,但是客户端担当了过多的角色而显得臃肿,难于升级或改进,重用业务逻辑和界面逻辑非常困难,可伸展性也不理想。,2. Java EE模型和组件Java EE使用,下面是Java EE典型的四层结构和图示(见图4-1): 运行在客户端机器上的客户层组件; 运行在J2EE服务器上的Web层组件; 运行在J2EE服务器上的业务逻辑层组件; 运行在EIS服务器上的企业信息系统(Enterprise Information System,EIS)层软件。,下面是Java EE典型的四层结构和图示(见图4-1):,图4-1 Java EE四层结构,图4-1 Java EE四层结构,4.1.2 Java EE组件和结构,1. Java EE组件Java EE说明书中定义了以下四个组件: 应用客户端程序和Applets是客户层组件; Java Servlet和JSP是Web层组件; EJB是业务层组件; 企业信息系统层组件。,4.1.2 Java EE组件和结构1. Jav,1) 客户层组件 Java EE应用程序可以是基于Web方式的,如静态HTML、脚本语言或各种标签等;也可以是基于传统客户机方式的,如专用的客户端程序或软件。2) Web层组件 Java EE的Web层组件可以是JSP页面或Servlets。如图4-2所示,Web层使用JavaBean实体来处理用户输入,并把输入发送给运行在业务层上的EJB来进行处理。,1) 客户层组件 Java EE应用程序可以是基于,图4-2 Web层组件,图4-2 Web层组件,3) 业务层组件业务层代码的逻辑用来满足银行、零售和金融等特殊商务领域的需要,由运行在业务层上的EJB进行处理。图4-3表明了一个EJB是如何从客户端程序接收数据,进行处理,并发送到EIS(企业信息系统)层储存的。这个过程也可以逆向进行。,3) 业务层组件业务层代码的逻辑用来满足银行、零售,图4-3 业务层组件,图4-3 业务层组件, 会话Bean(Session Beans):会话Bean表示与客户端程序的临时交互。 实体Bean(Entity Beans):实体Bean表示数据库表中一行永久的记录。当客户端程序中止或服务器关闭时,就会有潜在的服务保证实体Bean的数据得以保存。 消息驱动Bean(Message-Driven Beans):消息驱动Bean结合了会话Bean和JMS消息监听器的特性,允许一个业务层组件异步接收JMS 消息。, 会话Bean(Session Beans):会话Be,4) 企业信息系统层组件企业信息系统层组件包括企业基础建设系统(ERP、CRM、SCM等)、大型机事务处理、数据库系统和其它的遗留信息系统等。,4) 企业信息系统层组件企业信息系统层组件包括企业,2. Java EE的结构1) 容器和服务 Java EE安全(Security)模型:通过让开发者配置Web组件或EJB,使得只有被授权的用户才能访问系统资源。不同客户分别属于不同的角色,而每个角色只允许访问特定的方法。开发者只要在EJB的布置描述中声明角色和可被访问的方法,而不必编写加强安全性的规则。,2. Java EE的结构1) 容器和服务, Java EE事务管理(Transaction Management)模型:让开发者指定组成一个事务中所有方法间的关系,并将这些方法当成一个单一的单元。当在客户端激活一个EJB中的方法时,容器介入管理事务,这使得开发者只需在布置描述文件中声明EJB的事务属性,而不用编写并调试复杂的代码。要求控制分布式事务的代码会非常复杂,容器将读取此文件并处理此EJB的事务。, Java EE事务管理(Transaction M, JNDI寻址(JNDI Lookup)服务:为企业内的多重名字和目录服务提供了一个统一的接口,这样应用程序组件可以更方便地访问名字和目录服务。 Java EE远程连接(Remote Client Connectivity)模型:管理客户端和EJB间的底层交互。当一个EJB被创建后,客户端可以像调用本地客户机的方法一样调用EJB。, JNDI寻址(JNDI Lookup)服务:为企业, 生存周期管理(Life Cycle Management)模型:管理EJB的创建和移除,容器创建EJB,并在可用实例池与活动状态中移动它,而最终将其从容器中移除,这就是EJB的生存周期。 数据库连接池(Database Connection Pooling)模型:这是一个有价值的资源。容器通过管理连接池来缓和数据库连接时服务器的效率。, 生存周期管理(Life Cycle Manageme,2) 容器类型 如图4-4所示,Java EE应用组件可以安装部署到以下几种容器中去。 EJB容器:EJB和它们的容器运行在Java EE服务器上,管理所有Java EE应用程序中EJB的执行。 Web容器:Web组件和它们的容器运行在Java EE服务器上,管理所有Java EE应用程序中JSP页面和Servlet组件的执行。,2) 容器类型 如图4-4所示,Java EE应用, 应用程序客户端容器:应用程序客户端和它们的容器运行在客户端机器上,管理所有Java EE应用程序中应用程序客户端组件的执行。 Applet容器:运行在客户端机器上,通常是Web浏览器和Java插件的结合。, 应用程序客户端容器:应用程序客户端和它们的容器运行在,图4-4 Java EE结构,图4-4 Java EE结构,3. Java EE的优势要回答这些问题,我们不能仅考虑系统开发过程,还需要考虑系统后期的维护、扩展;我们不能仅考虑那些小型系统,还要考虑大型系统的协同开发。对于学习、娱乐性的个人站点,的确没有必要使用复杂的Java EE应用架构,采用纯粹的JSP就可以实现整个系统。但是对于大型的信息化系统而言,采用Java EE应用架构则有很大的优势。,3. Java EE的优势要回答这些问题,我们不,1) 保留现存的IT资产Java EE拥有广泛的业界支持和一些重要的“企业计算”领域供应商的参与,每一个供应商都为现有的客户提供了不用废弃已有投资而进入可移植的Java EE领域的升级途径;再加上基于Java EE平台的产品几乎能够在任何操作系统和硬件配置上运行,现有的操作系统和硬件也能被保留使用。,1) 保留现存的IT资产Java EE拥有广泛的业,2) 高效的开发Java EE允许公司把一些通用的、很繁琐的服务端任务交给中间件供应商去完成。高级中间件供应商能够提供以下复杂的中间件服务: 状态管理服务:开发人员不用关心如何管理状态,从而可以编写更少的代码,更快地完成程序开发。,2) 高效的开发Java EE允许公司把一些通用的, 持续性服务:开发人员在编写应用程序时,不用对数据访问逻辑进行编码,即可生成更轻巧、与数据库无关的应用程序,而且这种应用程序更易于开发与维护。 CACHE服务:开发人员能编制高性能的系统,极大地提高整体部署的伸缩性。, 持续性服务:开发人员在编写应用程序时,不用对数据访问,3) 支持异构环境基于Java EE的应用程序不依赖任何特定的操作系统、中间件和硬件,因此只需开发一次就可部署到各种平台,这在典型的异构企业计算环境中是十分关键的。Java EE标准也允许把Java EE兼容的第三方现成组件部署到异构环境中,这样可以节省企业信息化方案所需的费用。,3) 支持异构环境基于Java EE的应用程序不依,4) 可伸缩性基于Java EE平台的应用程序可被部署到各种操作系统上,例如高端UNIX与大型机系统,这种系统单机可支持64至256个处理器(这是NT服务器所望尘莫及的)。Java EE领域的供应商还提供了更为广泛的负载平衡策略,能消除系统中的瓶颈,允许多台服务器集成部署。,4) 可伸缩性基于Java EE平台的应用程序可被,5) 稳定的可用性一些Java EE可部署在Windows、Sun Solaris和IBM OS/390等可靠的环境中,支持长期的可用性。Internet是全球化的、无处不在的,一个服务器端平台必须能全天候运转以满足公司客户、合作伙伴的需要,因此可靠的部署至关重要。,5) 稳定的可用性一些Java EE可部署在Win,4.1.3 Java EE常用服务器,在开源Java应用服务器领域,JBoss、Tomcat及Apache的Geronimo不仅是商业领域的领跑者,同时是技术领域的先行者。Geronimo是对Java EE5标准100%的实现,正在快速发展中。表4-1就JBoss 4.2、Geronimo 2及Tomcat 6的特性进行了全面的比较。,4.1.3 Java EE常用服务器在开源Java,第4章JavaWeb应用开发及开发平台课件,1) TomcatTomcat是一个免费的开源Web服务器,它实现了完整的Servlet规范,可作为Servlet和JSP技术的参考实现。Tomcat作为开放源代码的Web服务器,已经得到了广泛的应用,是Web应用程序很好的开发和运行平台,并且支持服务器集群。,1) TomcatTomcat是一个免费的开源W,Tomcat 6本身就是一种轻量级的解决方案,所以它并不包括Java EE 5的所有特性,或是在JBoss及Geronimo中所提供的特性,但正是由于它的轻量级,才使它对内存的占有量比较少,并且比其它两种服务器运行起来更快。Tomcat是目前开发小型Java Web应用的最佳选择。,Tomcat 6本身就是一种轻量级的解决方案,所以它并不,2) JBossJBoss是由开源社区开发,遵循商业友好的LGPL授权分发的全功能的J2EE应用服务器。JBoss应用服务器通过了Sun公司的J2EE认证,还可以和Tomcat或Jetty集成使用。3) Resin Resin是目前速度最快的Web服务器,它提供了极快的Servlet容器,能够完整地支持Java Web应用程序。此外,Resin还提供了一个快速的XSLT引擎以转换XML文档。,2) JBossJBoss是由开源社区开发,遵循,4) Jetty Jetty是一个开放源代码的Web服务器,它提供了完整的Servlet和JSP技术的支持。Jetty既可以作为独立的Web服务器来运行Java Web应用程序,也可以非常容易地嵌入到Java应用程序或其它J2EE应用服务器(如JBoss)中。,4) Jetty Jetty是一个开放源代码的W,4.2 MVC模式概述,4.2.1 MVC的结构及优势,MVC是Model-View-Controller的简称,即模型视图控制器。MVC是一种设计模式,它把应用程序分成三个核心模块:模型、视图和控制器,它们各自处理自己的任务。其结构如图4-5所示。,4.2 MVC模式概述4.2.1,图4-5 MVC结构,图4-5 MVC结构,在该结构中,视图是用户看到并与之交互的界面;模型是应用程序的主体部分,它表示业务数据和业务逻辑,一个模型能为多个视图提供数据;控制器接受用户请求并决定调用哪个模型组件去处理请求,然后决定调用哪个视图来显示模型处理返回的数据。,在该结构中,视图是用户看到并与之交互的界面;模型是应用程,MVC模式的适用范围很广,这归功于MVC的如下优点: 多个视图能共享一个模型,即同一个模型可以被不同的视图重用,大大提高了代码的可重用性。 由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,因此依据这种设计思想能构造良好的松耦合构件。,MVC模式的适用范围很广,这归功于MVC的如下优点:, 控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户需求,这样控制器可以为构造应用程序提供强有力的手段。 MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。, 控制器提高了应用程序的灵活性和可配置性。控制器可以用,4.2.2 MVC在JSP Model 2中的实现,Java Web编程技术经历了所谓的Model 1和Model 2两个时代,而在Model 2中引入了MVC模式,使得它更适用于大规模应用的开发。所谓Model 1模式就是整个Web应用几乎全部由JSP页面组成,用少量的JavaBean来处理与数据库相关的操作,如数据库连接、数据库CRUD等操作。,4.2.2 MVC在JSP Model 2中的实现,JSP代码既可以用来接收处理客户端请求,又可以直接对请求处理并做出响应,同时实现了视图和控制逻辑的功能。因此Model 1模式的实现比较简单,适用于快速开发小规模项目,特别是初学者理解起来很容易。但从工程化的角度看,它的局限性非常明显,JSP页面中夹杂着HTML,不仅使代码看起来混乱,也导致代码的重用性非常低,不利于在工程化思想中实现代码的可扩展性和可维护性,同时还不利于编程者的分工合作。,JSP代码既可以用来接收处理客户端请求,又可以直接对请求,在Model 2架构中,前端控制器由Servlet实现,并且Servlet只包含控制逻辑和简单的前端处理,负责接收客户端发送的请求;然后,调用后端JavaBean来完成实际的逻辑处理;最后,转发到相应的JSP页面来处理显示逻辑。其具体的实现方式如图4-6所示。,在Model 2架构中,前端控制器由Servlet实现,,图4-6 Model 2的程序流程,图4-6 Model 2的程序流程,Model 2已经是基于MVC架构的设计模式。正如在图4-6中看到的,Model 2仅仅用于将结果呈现给用户,不再承担控制器的责任。JSP页面的请求与Servlet(控制器)交互,而Servlet负责与后台的JavaBean通信。在Model 2模式下,模型(Model)由JavaBean充当,视图(View)由JSP页面充当,而控制器(Controller)则由Servlet充当。,Model 2已经是基于MVC架构的设计模式。正如在图4,由于引入了MVC模式,因而使Model 2具有了组件化的特点,易于项目开发人员分工合作,但也增加了应用开发的复杂程度。原本需要一个简单的JSP页面就能实现的应用,在Model 2中被分解成多个协同工作的部分,需花更多时间才能真正掌握其设计和实现过程。因此,对于小型的Web应用,如果后期的更新、维护工作不是特别大,则可以使用Model 1模式来开发。,由于引入了MVC模式,因而使Model 2具有了组件化的,4.3 轻量级Java EE框架应用相关技术,4.3.1 Struts框架简介,1. Struts1框架Struts1是世界上第一个发布的MVC框架。对于Struts1框架而言,因为它与JSP/Servlet耦合非常紧密,因而导致了许多不可避免的缺陷,随着Web应用的逐渐扩大,这些缺陷逐渐变成制约Struts1发展的重要因素。,4.3 轻量级Java EE框架应用相关技术4.3,列举Struts1中存在的种种缺陷: 支持的表现层技术单一,仅支持JSP作为表现层技术。 与Servlet API严重耦合,难于测试。 代码严重依赖于Struts1 API,属于侵入式设计,导致了较低的代码复用。,列举Struts1中存在的种种缺陷: 支持的表现,2. WebWork框架WebWork虽然没有Struts1那样赫赫有名,但也是出身名门,它来自另外一个优秀的开源组织opensymphony。WebWork采用了一种松耦合的设计,让系统的Action不再与Servlet API耦合,使单元测试更加方便,这对于Struts1存在的那些先天性不足而言,显得更加优秀。,2. WebWork框架WebWork虽然没有S, 用于处理或代理请求的分发器(Dispatcher); 支持多种视图技术(JSP、Velocity、JasperReports、XML、FreeMaker)的结果类型; 一个小而强大的JSP标签库和Velocity宏定义; 分发器调用XWork活动来访问和操作模型(Model),并为视图显示模型数据提供方便的途径。, 用于处理或代理请求的分发器(Dispatcher);,3. Struts2框架面对大量新的框架蓬勃兴起,Struts1也开始了血液的更新。目前,Struts已经分化成两个框架:第一个框架就是传统Struts1和WebWork结合后的Struts2框架;另外一个框架是Shale,这个框架远远超出了Struts1原有的设计思想,与原有的Struts1的关联很少,使用了全新的设计思想。,3. Struts2框架面对大量新的框架蓬勃兴起,Struts2以WebWork优秀的设计思想为核心,吸收了Struts1的部分优点,建立了一个兼容WebWork和Struts1的框架。Struts2的目标是希望可以让原来使用Struts1、WebWork的开发人员,都可以平稳过渡到使用Struts2框架。,Struts2以WebWork优秀的设计思想为核心,吸收,Struts2的优点概括如下: 简化设计,类与类之间是松散的耦合;取消了ActionForm类,Action可以直接获得用户参数。 使用OGNL进行参数传递,大大简化了开发人员在获取各种作用域中数据时的代码量。 强大的拦截器功能,并且拦截器是可配置与重用的,可以将一些通用的功能如登录验证、权限验证等置于拦截器中以简化编码。,Struts2的优点概括如下: 简化设计,类与类, 易于扩展的插件机制。在Struts2中添加扩展时只需将所需的Jar包放到WEB-INF/lib文件夹中,在struts.xml中做一些简单的设置就可以实现扩展。 易于测试。Struts2的Action都是简单的POJO,这样可以方便的对Struts2的Action编写测试用例,大大方便了Java Web项目的测试。, 易于扩展的插件机制。在Struts2中添加扩展时只需,4.3.2 JSF框架简介,准确地说,JSF是一个标准,而不是一个产品。JSF的行为方法在POJO中实现,JSF的Managed Bean无需继承任何特别的类。因此,无需在表单和模型对象之间实现多余的控制器层。JSF中没有控制器对象,控制器行为通过模型对象实现。,4.3.2 JSF框架简介准确地说,JSF是一个,JSF的事件框架可以细化到表单中的每个字段。JSF依然是基于JSP/Servlet的,仍然是JSP/Servlet架构,因而学习起来相对简单。在实际使用过程中,JSF也存在一些不足: 作为新兴的MVC框架,用户相对较少,相关资源也不是非常丰富。 JSF并不是一个完全组件化的框架,它依然是基于JSP/Servlet架构的。 JSF的成熟度还有待进一步提高。,JSF的事件框架可以细化到表单中的每个字段。JSF依然是,4.3.3 Spring框架简介,Spring提供了一个细致完整的MVC框架。该框架为模型、视图、控制器之间提供了一个非常清晰的划分,各部分耦合极低。Spring框架以DispatchServlet为核心控制器,该控制器负责拦截用户的所有请求,并将请求分发到对应的业务控制器。,4.3.3 Spring框架简介Spring提供,Spring还包括处理器映射、视图解析、信息国际化、主题解析、文件上传等功能。所有控制器都必须实现Controller接口,该接口仅定义ModelAndView handleRequest(request,response)方法。通过实现该接口来实现用户的业务逻辑控制器。,Spring还包括处理器映射、视图解析、信息国际化、主题,Spring框架有一个极好的优势,就是它的视图解析策略:它的控制器返回一个ModelAndView对象,该对象包含视图名字和Model,Model提供了Bean的名字及其对象的对应关系。视图名解析的配置非常灵活,抽象的Model完全独立于表现层技术,不会与任何表现层耦合,而且JSP、Velocity或者其他表现层技术都可以和Spring整合。,Spring框架有一个极好的优势,就是它的视图解析策略:, Spring的MVC与Servlet API耦合,难以脱离Servlet容器而独立运行,降低了Spring MVC框架的可扩展性。 太过细化的角色划分显得太过繁琐,降低了应用的开发效率。 过分追求架构的完美,有过度设计的危险。, Spring的MVC与Servlet API耦合,,4.3.4 ORM框架简介,1. ORM技术对象关系映射ORM(Object Relational Mapping)是对象持久化的核心,它随着面向对象的软件开发方法的发展而产生,能够解决面向对象与关系数据库存在的互不匹配的现象。,4.3.4 ORM框架简介1. ORM技术,一般的ORM包括以下四部分: 一个对持久化对象进行CRUD操作的API; 一个语言或API用来规定与类和类属性相关的查询; 一个规定mapping metadata的工具; 一种可以让ORM的实现同事务对象一起进行dirty checking、lazy association fetching以及其他的优化操作的技术。,一般的ORM包括以下四部分: 一个对持久化对象,1) 繁琐的代码问题用JDBC的API编程访问数据库时,代码量较大,特别是访问字段较多的表的时候,代码显得尤其繁琐,容易出错。一般情况下,程序员需要耗费大量的时间和精力去编写具体的数据库访问SQL语句,还要十分小心其中大量重复的源代码是否有疏漏,而不能集中精力于业务逻辑的开发。,1) 繁琐的代码问题用JDBC的API编程访问数据,2) 数据库对象连接问题关系数据对象之间存在各种关系,包括1对1、1对多、多对1、多对多、级联等。在数据库对象更新的时候,如果采用JDBC编程,程序员必须十分小心地处理这些关系,以保证维持这些关系不会出现错误,而这是一个很痛苦的过程。ORM建立Java对象与数据库对象关系映射的同时,也自动根据数据库对象之间的关系创建Java对象的关系,并且提供了维持这些关系的完整、有效的机制。,2) 数据库对象连接问题关系数据对象之间存在各种关,3) 系统架构问题JDBC属于数据访问层,但是使用JDBC编程时,程序员必须知道后台使用了什么数据库、有哪些表、各个表有哪些字段、各个字段的类型是什么、表与表之间是什么关系、创建了什么索引等与后台数据库相关的详细信息,相当于软件程序员兼职数据库(DBA)。,3) 系统架构问题JDBC属于数据访问层,但是使用,使用ORM技术,可以将数据库层完全隐蔽,呈献给程序员的只有Java的对象,程序员只需根据业务逻辑的需要调用Java对象的Getter和Setter方法,即可实现对后台数据库的操作,程序员不必知道后台采用什么数据库、有哪些表、有什么字段、表与表之间有什么关系。于是,系统设计人员在搭建好ORM后,将Java对象交给程序员去实现业务逻辑,使数据访问层与数据库层清晰分界。,使用ORM技术,可以将数据库层完全隐蔽,呈献给程序员的只,4) 性能问题采用JDBC编程,在很多时候存在效率低下的问题。采用ORM技术后,ORM框架将根据具体数据库操作需要,会自动延迟向后台数据库发送SQL请求,当所有操作完成后,一次向数据库发送操作请求,从而大大降低通信量,提高运行效率。ORM也可以根据实际情况,将数据库访问操作合成,以尽量减少不必要的数据库操作请求。,4) 性能问题采用JDBC编程,在很多时候存在效率,2. Hibernate框架Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲地使用对象编程思想来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序中使用,也可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。,2. Hibernate框架Hibernate是,Hibernate是一种强大的可提供对象关系持久化和查询服务的中间件,它可以使程序员依据面向对象的原理开发持久化类,实现对象之间的关联、继承、多态、组合、集合等。Hibernate提供了其特有的数据库查询语言HQL。这种查询语言屏蔽了不同数据库之间的差别,使用户可以编写统一的查询语句执行查询。不同于其他持久化解决方案的是,Hibernate并没有把SQL的强大功能屏蔽掉,而是仍然兼容SQL,这使以往的关系技术依然有效。,Hibernate是一种强大的可提供对象关系持久化和查,Hibernate是一个非常优秀的持久层解决方案,具有以下发展趋势: 与其他开发框架的集成将越来越成熟:如与Struts、Spring、Jbpm的集成,充分发挥了Hibernate自身的优势,也吸取了对方框架的优势,在软件系统的各个层各司其职; 产品线逐渐完善:通过增加若干的工具套件,并支持.net平台,使Hibernate具有更强大的生命力;,Hibernate是一个非常优秀的持久层解决方案,具有以, 与EJB更好的集成:集成EJB,开始将重点转向重量级应用,使得Hibernate在企业级应用中必将占据一席之地。Hibernate的轻量级ORM模型逐步确立了其在Java ORM架构中的领导地位,甚至取代复杂而又繁琐的EJB模型而成为事实上的Java ORM工业标准,而且其中的许多设计均被J2EE 标准组织吸纳而成为最新的EJB3.0规范的标准。, 与EJB更好的集成:集成EJB,开始将重点转向重量级,3. JPA框架以下简单介绍一下JPA的优势。1) 标准化JPA是JCP组织发布的Java EE标准之一,因此任何声称符合JPA标准的框架都遵循同样的架构,提供相同的访问API。这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。,3. JPA框架以下简单介绍一下JPA的优势。,2) 对容器级特性的支持JPA框架支持大数据集、事务、并发等容器级事务,这使得JPA超越了简单持久化框架的局限,在企业应用中发挥了更大的作用。,2) 对容器级特性的支持JPA框架支持大数据集、事,3) 简单易用,集成方便JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java类一样简单,没有任何的约束和限制,只需要使用javax.persistence.Entity进行注释;JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式要求,开发者可以很容易掌握。JPA基于非侵入式原则设计,因此可以很容易地和其它框架或者容器集成。,3) 简单易用,集成方便JPA的主要目标之一就是提,4) 可媲美JDBC的查询能力JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且支持批量更新和修改、JOIN、GROUP BY、HAVING等通常只有SQL才能够提供的高级查询特性,甚至还能够支持子查询。,4) 可媲美JDBC的查询能力JPA的查询语言是面,5) 支持面向对象的高级特性JPA能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度地使用面向对象的模型设计企业应用,而不需自行处理这些特性在关系数据库的持久化。,5) 支持面向对象的高级特性JPA能够支持面向对象,4.4 建立开发平台,4.4.1 搭建开发环境,1. 安装JDK (1) 双击可执行文件,开始安装(本书使用的是jdk-6u1-windows-i586-p.exe)。(2) 在安装窗口中接受协议并多次单击【下一步】按钮,直至出现如图4-7所示的界面,选择JDK安装的路径。注意图中的默认路径为C:Program FilesJavajdk1.6.0_01。,4.4 建立开发平台4.4.1 搭,图4-7 安装JDK,图4-7 安装JDK,(3) 若采用默认安装,则继续安装直至完成,如图4-8所示。安装完成后,一般要求重启操作系统。,图4-8 完成JDK的安装,(3) 若采用默认安装,则继续安装直至完成,如图4-8所,(4) 设置环境变量。JAVA_HOME=C:Program FilesJavajdk1.6.0_01PATH=%JAVA_HOME%bin;CLASSPATH=.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;打开环境变量设置窗口的步骤为:在Windows XP系统中,右击桌面上的【我的电脑】图标,在弹出的菜单中选择【属性】命令,显示如图4-9所示的对话框,并选择【高级】选项卡。,(4) 设置环境变量。JAVA_HOME=C:P,图4-9 设置环境变量,图4-9 设置环境变量,点击图中的【环境变量】按钮,将显示如图4-10所示的对话框,对不存在的变量选择【新建】按钮,对存在的变量选择【编辑】按钮,可获得黑框标出来的界面,这时就可以设置我们所需要的值了。,点击图中的【环境变量】按钮,将显示如图4-10所示的对话,图4-10 环境变量对话框,图4-10 环境变量对话框,在完成设置后,可以到cmd窗口验证JDK是否配置成功。在命令行输入java和javac命令,如果回车后显示相关命令,则说明配置成功,如图4-11所示。,在完成设置后,可以到cmd窗口验证JDK是否配置成功。在,图4-11 cmd窗口,图4-11 cmd窗口,2. 安装Tomcat在Windows和Linux平台上的安装和配置基本相同,以下介绍其在Windows平台下的下载和安装。(1) 本书使用Tomcat6.0.18版本,可到http:/tomcat.apache.org站点下载zip包。建议不要下载安装文件,因为安装文件的Tomcat看不到启动、运行时控制台的输出,不利于开发者使用;另外,Tomcat在多次部署运行后会显得很臃肿,在一定时间内要清空重装,压缩包的安装也比较方便。,2. 安装Tomcat在Windows和Linux,(2) 解压下载的压缩包,可解压在任何路径。在环境变量中设置Tomcat运行的环境变量JAVA_HOME,该环境变量指向JDK安装路径,以上JDK已配置好。(3) 启动Tomcat,只需双击Tomcat安装路径下bin路径的startup.bat文件即可。启动之后打开浏览器,Tomcat的默认端口号为8080,因此在地址栏输入http:/localhost:8080,将出现如图4-12所示的界面,安装成功。,(2) 解压下载的压缩包,可解压在任何路径。在环境变量中,图4-12 Tomcat安装成功界面,图4-12 Tomcat安装成功界面,3. 安装和配置MyEclipse (1) 在站点下载所需软件,本书用的是MyEclipse_7.0M1_ E3.4.0_Installer.exe版本。(2) 此IDE的安装就是“傻瓜化”的最简单安装形式,基本上是完成一系列【NEXT】按钮的操作。安装完成后,打开软件可看到如图4-13所示的界面,选择工作空间,这是以后进行程序开发工作的地方。,3. 安装和配置MyEclipse (1) 在h,图4-13 设置工作空间,图4-13 设置工作空间,(3) 如果是初次启动,MyEclipse将显示一个欢迎界面,如图4-14所示。,图4-14 MyEclipse7欢迎界面,(3) 如果是初次启动,MyEclipse将显示一个欢迎,(4) 成功启动MyEclipse后,第一件要做的事就是把Tomcat配置成MyEclipse的Web服务器,这样就可以利用MyEclipse自有的功能来完成Web对Tomcat的自动部署。每个不同的项目只需部署一次,无论修改多少次都不需要再次部署。,(4) 成功启动MyEclipse后,第一件要做的事就是,首先,在MyEclipse工作环境中选择菜单【Window】的子菜单【Preferences】,将出现如图4-15所示的界面。在左边的导航条菜单中选择图中的【JDK】子菜单,其中默认的JDK为MyEclipse 7.1M1,点击右上角的【Add】按钮,添加上面安装的jdk1.6.0_01,选择安装根目录C:Program FilesJavajdk1.6.0_01,就会出现图中的JDK名字。,首先,在MyEclipse工作环境中选择菜单【Windo,图4-15 Tomcat中JDK的设置界面,图4-15 Tomcat中JDK的设置界面,其次,选择图4-16中的【Tomcat 6.x】子菜单,配置右边的服务器,只要选择Tomcat的安装目录即可。另外,千万记住把服务器状态选为Enable,使服务器处于可用状态。,其次,选择图4-16中的【Tomcat 6.x】子菜单,,图4-16 Tomcat设置界面,图4-16 Tomcat设置界面,(5) 完成以上步骤后,在MyEclipse中启动Tomcat服务,验证配置是否成功,如图4-17所示,启动Tomcat服务后,在IE中输入http:/localhost:8080,如果出现图4-12所示的界面,则说明配置成功。,(5) 完成以上步骤后,在MyEclipse中启动Tom,图4-17 Tomcat在MyEclipse中的启动按钮,图4-17 Tomcat在MyEclipse中的启动按钮,4.4.2 开发一个简单的Java Web实例,1. 创建工程 (1) 点击MyEclipse主菜单的【File】子项【New】的【Web Project】菜单,如图4-18所示。(2) 在弹出的如图4-19所示的界面中,在【Project Name】中输入新建工程的名字,在【Location】中选择存放工程的文件夹,还可以在此界面选择工程所遵循的J2EE规范,点击【Finish】完成工程的建立。,4.4.2 开发一个简单的Java Web实例1.,图4-18 新建Web工程菜单,图4-18 新建Web工程菜单,图4-19 新建Web工程界面,图4-19 新建Web工程界面,(3) 选中新建的ch04工程中的WebRoot目录,用鼠标右键单击,在弹出的快捷菜单中选择【NEW】中的【JSP】菜单,将弹出如图4-20所示的界面,其中【File Name】就是建立的JSP文件的名字。设置好后,点击【Finish】完成JSP页面。,(3) 选中新建的ch04工程中的WebRoot目录,用,图4-20 新建JSP页面,图4-20 新建JSP页面,(4) 以上步骤完成了工程ch04的建立,在MyEclipse的【package explorer】视图中的显示如图4-21所示。,图4-21 工程目录,(4) 以上步骤完成了工程ch04的建立,在MyEcli,2. 运行工程在MyEclipse中运行工程ch04的步骤如下:(1) 选中工程ch04,点击工具栏中的部署工程按钮,如图4-22所示。,图4-22 部署工程按钮,2. 运行工程在MyEclipse中运行工程ch0,(2) 在弹出的图4-23中,选择【Project】为要部署的工程名ch04,点击右边的【Add】按钮,在图4-24中把此工程加入Tomcat服务器中,设置好后,点击【Finish】完成服务器部署。,(2) 在弹出的图4-23中,选择【Project】为,图4-23 部署工程界面,图4-23 部署工程界面,图4-24 部署服务器界面,图4-24 部署服务器界面,(3) 部署完成后,启动Tomcat即可运行项目。要查看项目的自动部署情况,只要查看Tomcat的webapps目录中是否有ch04文件夹即可。(4) 在IE中输入http:/localhost:8080/ch04,/,即可运行部署好的工程,如图4-25所示。注意,此处的运行地址格式是http:/localhost:8080/+工程名。,(3) 部署完成后,启动Tomcat即可运行项目。要查看,图4-25 运行工程界面,图4-25 运行工程界面,3. Web项目在IE中的列表显示以上完成了一个Web项目的部署和运行。这里还要注意一个问题,许多开发者习惯以Tomcat5的列表式显示工程文件的格式,这点在Tomcat6的默认配置中是不能实现的。如要完成这个功能,还需完成以下两个步骤:(1) 打开Tomcat的conf文件夹的web.xml文件,修改listings参数值为true,默认为false。,3. Web项目在IE中的列表显示以上完成了一个, ,listings,true 1 , ,(2) 删除工程中的index.jsp文件。重新运行工程http:/localhost:8080/ch04,/,,将显示如图,4-26所示的界面。,图4-26 列表显示工程,(2) 删除工程中的index.jsp文件。重新运,另外,如果需要修改Tomcat的访问端口号,可以打开Tomcat的conf文件夹的server.xml文件,修改以下代码的port属性值,默认为8080,此处修改为80,为IE默认的端口号,所以今后项目的运行路径为http:/localhost,/,+工程名,端口号可省。,另外,如果需要修改Tomcat的访问端口号,可以打开To,4. 导入工程对于一个现成的Web工程,MyEclipse也提供了简单的导入功能,点击【File】的【Import】菜单,将出现如图4-27所示的界面,选中图中椭圆标识的选项,点击【Next】按钮。,4. 导入工程对于一个现成的Web工程,MyEcl,图4-27 导入工程,图4-27 导入工程,图4-27 导入工程图4-27 导入工程,在图4-28所示的界面中单击【Browse】按钮,选择要导入的工程所在的目录,然后在【Projects】下面选择具体要导入的工程,设置好后,点击【Finish】完成工程导入。,在图4-28所示的界面中单击【Browse】按钮,选择要,图4-28 选择导入工程,图4-28 选择导入工程,
展开阅读全文