zoukankan      html  css  js  c++  java
  • j2e应用概述

    过年也过完了,现在正式开始进入j2e的整理。现在开篇第一篇,整理一下j2e应用和开发环境。j2e应用提供的跨平台性,开放性已经各种远程访问的技术,为异构系统的良好整合提供了保证。注意这个是有一个异构系统,也就是说一个大的项目里面分布式整合了好多不同的平台 ,不同的系统,那么这就是一个复杂的异构系统。废话不多说,现在开始:

    首先,什么是j2e?

    2006年sun提出了java EE的概念,与之同步出现了2个主要规范,JSF1.2和Ejb3.0,但是应用依然不如使用SSH组合应用广泛。对于现在的项目来说,使用struts2的已经很少的,现在都是在使用springMVC来做前端控制器。SSH三大框架俗称轻量级j2e平台,关于什么是轻量级什么是重量级我后面会有整理,这里只需要明白基于轻量级的j2e平台可以运行在普通的web容器中,无需Ejb容器的支持,且一样具有稳定的性能和极高的可扩展性,可维护性。

    • j2e应用的经典分层模型

    每天在玩j2e,说白了就是玩6块东西。

     


    1,数据库:很明显了,数据库用来存放数据,序列化对象,进行CRUD操作。
    2,领域对象层:也就是我们常说的pojo,也就是entity,也就是VO,也就是domain object。在这里说明下pojo,实际中我们一般都不这样子来喊,一般都是说实体,这个东西就是实体。他的定义是Plain Old Java Object,也就是说说传统的,古老的,普通的java对象。这一层是直接关联数据库的表的,我们在做的ORM映射都是在做这个领域对象和数据库中表的映射的。实际开发中呢,还有另外的一层,我自己成为PO,也就是持久层对象,他里面可以再封装一层VO,用来在控制器和页面交互使用,举一个具体的例子,我现在有一个情节设计的数据结构有点复杂了,页面上显示一个list,但是list里面丢着是好多的map,或者说是map里面value存的是一个list集合,那么这个时候就要设计VO的时候就设计成简单的单表,在ORM映射的时候这样子很方便的,我自己在DAO层做处理,转换成PO。
    3,DAO层:Date Access Object,数据访问对象,这一层由系列的DAO组件构成,这些DAO单纯的访问实体对象,实现了对数据库的CRUD的操作。为了使得业务逻辑组件的实现和DAO组件的实现分离,我们可以为每一个DAO组件提供接口,在编码的时候面向接口编程,这样子就很好的解耦了。
    4,service层:业务逻辑层,这一层由系列的业务逻辑对象组成。这一层一般的都要依赖上面的DAO层,在这里可以使用门面模式,将上面的DAO的每一个方法组合成自己的一套业务逻辑方法。这里值得注意的是这些业务逻辑方法仅仅负责实现业务逻辑,不应该进行数据库的访问,因此,业务逻辑组件中不应该出现原始的hibernate,JDBC等API。
    5,controller层:控制器层。这一层使用MVC设计模式,也就是说这些控制器用于拦截用户的请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果转发到不同的表现层组件。
    6,表现层:也就是我们说的页面了。我使用最多的是JSP,当然还有Velocity页面,PDF文档试图等等,现在比较流行的HTML5也都是表现层,负责收集用户请求,并显示处理结果。

    以上各层组件之间以松耦合的方式联系在一起,各组件之间不以硬编码的方式进行耦合,这种方式是为了应用以后的扩展性。在具体一点就是说,比如,变现层使用jsp用于页面显示,控制器层使用springMVC来交互前后台,DAO层使用hibernate来进行ORM映射,数据库层使用oracle来处理数据,整个组件之间使用spring来管理,这样子就形成了一个有效的完成的j2e体系了。

    • 关于j2e的一些名字的解释:
    1,胖客户端:当一个程序运行时需要一个单独的客户端程序支持。比如QQ,就需要安装一个客户端程序。
    瘦客户端:不需要进行任何程序的安装,直接使用即可。比如用浏览器访问我自己的博客。

    2,静态web和静态web:他们2个最本质的区别就是动态的web是要进行数据库操作的,而静态的不需要。
    关于静态web和动态web要多说几句:
    实际开发中一般都会有静态服务器,什么叫静态服务器呢,就是里面放的都是些静态的文件,比如说模板了,比如说流程图等等这些,之所以分开还是处于降低服务器负荷的考虑。动态web和静态web访问的大致情况如下:
    首先,所有的请求不在直接提交给web服务器,而是通过web服务插件进行接收,此插件的用处就是区分用户发出的请求是动态的还是静态的。OK,如果客户发出的是静态请求,则会将用户请求提交给web服务器,并通过文件系统将用户所需要的资源发回给客户端浏览器,但是如果是动态请求的话,则会将所有的请求提交给web容器处理,在web容器中将会采用拼凑代码的方式动态的生成数据并通过web服务器发回给客户端浏览器。具体的过程如下图:


    3,C/S结构:即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。。 
    B/S结构:即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种 结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器 就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。

    最后说一下j2e要达到的终极目标,因为一个系统以后会维护,升级,产品也会迭代更新,这样子就要求我们的软件系统要具有良好的伸缩性。以后我们在写代码的时候要尽量的让应用的各组件以松耦合的方式组织在一起,让应用之间的耦合停留在接口层次,而不是代码层次。

    j2e的概述基本就讲这么多,接下来我会详细的讲解下常用的服务器。也就是tomcat,之前使用的websphere和jetty暂时先不讲,以后再说。


  • 相关阅读:
    codeforces 1198B
    POJ 3177 Redundant Paths (tarjan边双连通分量)
    Geotrellis系列文章链接
    geotrellis使用(十一)实现空间数据库栅格化以及根据属性字段进行赋值
    geotrellis使用(十)缓冲区分析以及多种类型要素栅格化
    geotrellis使用(九)使用geotrellis进行栅格渲染
    geotrellis使用(八)矢量数据栅格化
    geotrellis使用(七)记录一次惨痛的bug调试经历以及求DEM坡度实践
    Parallel并行化编程
    geotrellis使用(六)Scala并发(并行)编程
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5233091.html
Copyright © 2011-2022 走看看