java web 核心_开发JAVA Web 程序用到的核心框架的初步认识

不管开发任何Java Web 程序,使用基础编程(JSP,Servlet,JavaBean)技术都可以完成,那么为什么还要使用框架?之所以使用框架,从根本来说是为了:理清程序逻辑和结构,减轻程序员的开发难度,让程序员更加注重业务开发的同是来实现同步开发,提高开发效率和缩短开发周期。

那么一般用到了哪些框架呢?它们是:实现了MVC模式的Structs框架,无侵入性的Spring框架,简单灵活的Guice框架,实现持久化的Hibernate框架,实现JPQL语言的JPA框架,实现数据映射器的iBATES框架,用于开发用户界面的JSF框架和实现异步交换的AJAX框架。

1.实现了MVC模式的Structs框架

问题:在使用JSP和servlet开发Web应用程序时,可以使用Servlet生成HTML页面,但是这样所有的代码都必须使用Servlet来编写;也可以使用JSP来生成HTML页面,但是业务逻辑和现实逻辑混杂在一起,代码的维护量大,开发效率低

为了解决上述的问题,可以使用Structs框架,MVC设计模式:

(1)Model:该部分一般用简单的JavaBean来完成底层的业务逻辑组件,但是开发企业级的应用时,就需要一个或多个EJB来完成底层的业务逻辑组件;

(2)View:该部分采用JSP来实现,Structs

1.x提供了丰富的标签库来支持JSP编程;

(3)Controller:该部分由系统核心控制器和业务逻辑控制器这两个部分组成,系统核心控制器就是系统中的ActionServlet,而业务逻辑控制器就是用户自己实现的Action实例。

Structs

1.x框架其实只实现了控制器部分,而其他两个部分,该框架只是利用控制器调用模型和把处理结果传送给视图。随时间的发展,Structs

1.x框架显示出自己的种种缺陷:

(1)该框架属于入侵式设计,即使用其实现的程序严重依赖于Structs 1.x

API;

(2) 该框架的业务逻辑控制器用Servlet API 来编写,严重依赖于Web容器;

(3)该框架的表示层使用jsp技术来编写,而不能使用FreeMarker,Velocity等视图技术。

经过五年的发展,出现了Structs 2.x框架。为了将业务逻辑控制器于Servlet

API 分离,该框架使用大量的拦截器来处理用户请求。同时,它支持其他的视图技术。

当用户通过浏览器向服务器发送请求时,请求就被核心控制器

FilterDispatcher拦截,然后核心控制器就会调用合适的Action来进行处理请求。在调用Action的过程中会经过多层拦截器,这些连接器会对请求应用通用功能。最后回调Action的execute()方法,把处理好的信息传回到浏览器。

2.无侵入性的Spring框架

Spring框架是各种 Java Web

框架的粘合剂。加入Structs框架负责提交表单相当于电脑显卡,Hibernate框架负责对数据库的操作相当于电脑的CPU,那么Spring

框架就相当于一个主板将显卡和CPU组装在一起。

Spring 框架是一个分层架构,其主要特性被很好的组织在七个模块中:

(1)Spring Core (Spring 核心容器):

它是Spring

框架的最基础部分,要理解三个概念:

IOC,控制反转,代表的是一种思想,也是一种开发模式,是解决调用者(Bean)和被调用者(Bean)之间的一种关系。使用IOC不仅使应用中对象的关系清晰,一致,而且还事一切对象可控;

DI,依赖注入,IOC的实现策略,该策略让容器全权负责依赖,受控对象只要暴露属性和带参数的构造函数,在初始化对象的时候就可以设置对象间的依赖关系;

BeanFactory(Bean工厂),利用经典的Factory模式来消除对程序性单例的需要,并允许从程序逻辑中分离出依赖关系的配置和描述。

(2)Spring Context (Spring 上下文):

是一个配置文件,可以向Spring框架提供上下文信息,该框架利用一种框架式的对象方法来实现一些企业服务,例如JNDI,EJB,电子邮件,国际化,校验和调度功能。

(3)Spring DAO(Spring 数据访问操作):

JDBC的抽象层,利用异常层次结构消除冗长的JDBC编码和解析不同数据库厂商特有的错误代码,同时也提供了一种针对所有操作数据库类的方法来实现编程性和声明性事务管理。

(4)Spring AOP(Spring 面向切面编程):

是Spring

的拦截器,借助于面向切面编程可以以声明式的方式使用企业级服务。所谓AOP就是允许定义方法拦截器和切点,来干净地给从逻辑上说应该被分离的功能实现代码解耦。借助于Spring AOP,开发者可以声明式,基于元数据访问企业级服务。

(5)Spring ORM(Spring 对象关系映射):

该包为Spring框架提供了关系-对象映射工具。

(6)Spring Web(Spring 的Web上下文):

与Spring上下文的区别在于后者是构建于Spring

Core基础上,而前者是构建于应用程序基础之上的。该模块的主要作用是位了基于Web的应用程序提供上下文,例如多方文件上传,Multipart功能,使用Servlet监听器的Context的初始化和面向Web的ApplicationContex,以及使Spring框架可与其它框架结合。

(7)Spring Web MVC(Spring Web 应用程序的MVC)

面向Web应用的MVC是吸纳,Spring Web

MVC不但使传统的MVC框架成为高度可配置,而且还提供了一种清晰分离模式使MVC框架可使用Spring框架的所有其它特性,如校验等。

3.简单灵活的Guice框架

在过去是以面向接口的编程方式来开发普遍的应用,但是这种方式需要程序员自己处理接口和这些接口实现类之间的关系,以及访问中间层和事务管理器的操作,为了解决该弊端,于是就出现了在IOC框架中使用XML配置文件进行Bean配置的解决方案。但是该方案无法把代码修改和配置文件的修改同步,同时,配置文件也无法进行类型检测。随着时间的发展,Spring和Guice这两种框架都可以解决上述问题。

Spring 和 Guice

这两种框架虽然都可以实现依赖注入和配置,但Spring框架推崇主要的是非侵入性的方式,即以一种完全外部化的方式来对待对象依赖关系。例如,可以使用XML,Spring

JavaConfig

等外部技术来实现对象的依赖关系。Guice框架却把配置作为应用程序模型的首要对象来看待,允许它们存在于领域模型代码中。

下面通过斧子的例子来详细讲解实现依赖关系的各种方式,它们分别如下。

(1)原始社会时,劳动社会基本没有分工,需要斧子的人(调用者)只好自己去磨一把斧子,每个人拥有自己的斧子。如果把自己的石斧改为铁斧,需要每个人都要学会磨斧子的本领,工作效率极低。

【对应Java代码中的情形是】

当调用者需要被调用者时,都必须得通过new来实现。类耦合度极高,修改维护繁琐,效率极低。

(2)工业社会时,工厂出现,斧子不再由普通人完成,而由工厂生产,当人们需要斧子的时候,可以到工厂购买斧子,无须关心斧子是怎么制造出来的。如果废弃铁斧为钢斧,只需改变工厂的制造工艺即可,制造工艺是工厂决定的,工厂生产什么斧子,工人们就得用什么斧子。

【对应Java代码中的情形是】当调用者需要被调用者时,可以使用工厂模式来创建被调用者。由于变化东西被封装到工厂,所以耦合度降低,但是调用者还是会和工厂耦合。

(3)近代工业社会,工厂蓬勃发展,人们需要什么斧子,只需要提供一个斧子图形,商家会按照你提供的图形将你的斧子订做好,并送上门。

【对应Java中的情形是】Spring框架的依赖注入

(4)进入按需分配社会,信息进入现代化,人们不再去工厂购买斧子,不再拘泥于需要什么斧子事先画好什么样的图形,只需要打个电话,描述一下需要什么类型的斧子,或许想打造一个物美价廉的斧子,商家会根据市场零件的价格,计算出最优制作工艺,打造最适合的斧子送过来,更加信息化,更加人性化。

【对应Java中的情形是】Guice框架的依赖注入,即基于描述的注入,动态的,灵活简单的注入。

通过上述的分析可以发现,与Spring框架相比,Guice框架拥有更加强大的功能,并且 Structs

2.x框架中名为xwork 2.0.jar包已经集成了该框架。

4.实现持久化的 Hibernate

框架

Hibernate框架存在一些任何开发中都会用到的核心接口,它们分别是:

Session接口:

SessionFactory接口:

Configuration接口:

Transaction接口:

Query和Criteria接口:

5.实现JPQL语言的JPL框架

JPA框架全称 Java Persistence API,为了得到所有Java

EE服务器的支持,该框架实现Java EE5.0 平台标准的ORM规范。

实现持久层的技术之一,JPA是一个基于操作持久层的框架,它使用ORM映射将面向模型和关系数据库联系起来。总体来说,JPA框架由三部分构成:

Java持久化API:通过操作实体对象来对数据库中的数据进行增删改查(CRUD)和事物的操作,该框架在后台替程序员完成所有的事情,使得程序从繁琐的JDBC和SQL代码中解脱出来;

ORM(对象/关系)映射元数据:JPA框架支持XML和JDK5.0注解两种元素据描述形式,通过使用元数据描述对象和表之间的映射关系,从而将实体对象持久化到数据库表中;

查询语言:作为持久化操作中很重要的一个方面,JPA框架通过面向对象而不是面向数据库的查询语言查询数据,避免程序中的SQL语句的紧密耦合。

6.实现数据库映射器的 iBATIS

框架

7.用于开发服务器端用户界面的JSF框架

8.实现了异步交换的AJAX框架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值