`
gstarwd
  • 浏览: 1522221 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAVA WEB 系统设计开发知识体系

阅读更多

1.1 Browser
1.1.1 HTML
1.1.2 CSS
1.1.3 JavaScript
1.1.4 AJAX

1) DWR
2) Jquery
1.2 Presentation Layer
1.2.1 Servlet/Filter/Listener/JSP
1.2.2 Struts
1.2.3 JSF

1.3 Business Logic layer
1.3.1 BO/Service/DomainObject
1.3.2 Spring

1.3.2.1 为什么需要Spring?


为什么要用spring,我们可以几个非常常用的方面来分析一下.
        Spring是基于j2ee框架. 他站在非常实用的角度帮助程序员解决了很多不需要程序员搞和程序员一直重复搞的问题. 下面我只讲能节省我们工作的地方以使得大家对spring有足够的兴趣.

        1, 松耦合问题. loose coupled  IOC
        这个问题我不费太多笔墨. 因为太多的文章解释这个问题. 大名叫:依赖注入. 说白了就是根据配置文件动态组装复杂对象. 或许有人又问, 我就是用程序组合也很简单啊. 是的, 你程序组装简单业务的是很简单. 如果组装的对象里面包含了Ejb, 包含了JMS, 包含了远程RMI那就没有这样组装简单了. 就说到这里.不说那么多废话.

        2, AOP, 面向切面编程. 这个功能我们自己是不好设计的. 这个功能大家也都知道是干什么的, 例如方法的事务管理, 用户安全验证, 日志记录, 等等. 为了避免将更多的代码放进方法中去.spring使用这个AOP来监控符合你配置的正则表达式的方法名字. 并允许在执行这个方法的前后执行你的方法. 这个是建立在spring上下文框架下的一个功能. 原理是映射机制. 如果没有上下文是不好搞的.
        虽然spring AOP对于大多程序员就足够了. 但与AspectJ相比, 他只能是功能比较弱的解决方案. AspectJ提供了SpringAOP不可能实现的多种切点类型. 如果不够用,你可以引入AspectJ. 来帮助你做更多的工作.

        上面两个是大的方面的一个简单的说明. Spring在更多细节中方便了大家的工作. 下面我继续依次给以说明.

        3, Bean工厂节省了.
        你不用再自己构造工厂了. 不用再用自己构造单例模式了(原来我用hibernate做项目的时候,就有自己写的构造单例模式 好像是public static sessionFactory...). 不用自己再关心对象的创建了. 不用new对象了. 一切都直接从 上下文的框架中取就行了. 框架会帮助你构造你需要的对象. 你只需要跟上下文打交道就可以了. 当然,你多出了装配的工作. 但这是必须要付出的代价. 因为复杂性被集成在了配置里面. 使得你在开发层面只关心业务. 要是配置有可视化的工具就太好了. 但别着急, 找找, 现在只有想不到,没有找不到.

        4, 集成Hibernate使用节省了事务的显式代码.
        这个其实还是切面的一个好处应用. 配置进去是很简单. 既然能节省工作, 我就给你说一下. 
(额 记得之前用hibernate做项目要加commit  而结合了spring之后就不用了 啥原因捏?是spring的哪个特性所导致的呢?恩 要好好思考下。╮(╯▽╰)╭)

        5, Spring 针对不同的数据库访问模式提供了不同的模板. 分别适用于不同的持久机制.
        包括: 针对JCA CCI的链接, 针对JDBC的, 支持命名参数的JDBC的链接, Hebernate的,针对iBATIS sqlMap的, Oraclede TopLink的. 这些模板使用方式的统一降低了程序员使用不同数据库的成本.模板的使用让你只关心数据的准备, 而看不到那些样板代码, 其实那些样板代码都还在, 只是被巧妙的隐含到了template中了.
        例如: List list = jdbcTemplate.query(“select * from table1”,new Object[]{“a”,”b”},new RowMapper(){…..}); 意思表达到了.
        其中对数据源的引用可以配置使用JNDI以从应用服务器中获取数据库的连接. 这样程序就可以集中处理业务逻辑而不必关心数据库的具体情况 .
        如果不能从JNDI中取得, 那就必须在spring中配置一个连接池. 可以使用开源的DBCP. 这个支持多种数据库连接.


        6, 数据库层面的缓存的使用.
        Spring并不提供实际的缓存解决方案, 而是要以来第三方的缓存方案. 包括: EHcache,Gigaspaces, JBoss Bache, JCS, OSCache, Coherence .无论采用哪种缓存方案, 对于spring的配置都是一样的. 但缓存的配置文件都是要分开的. 简化了使用缓存的成本.


        7. 安全验证方面节省的工作.
        基于多种方式的用户验证. 都节省了很多工作.

        8, 访问 RMI , 访问 Http Invoker, 访问Web Service
        如果要穿越防火墙最后是后两种. 但httpInvoder局限于spring的对象. webService 可以多种.平台. 不管使用哪种, spring都为他们的配置提供了统一简单的配置. 使用起来非常方便. Xfire协助你访问webService简单易用.

        9, JMS的访问. 大量冗余的代码被节省了. 配置好了即可使用. 当然你需要使用activeMQ第三方的队列服务器来接受消息.

        10 , 访问EJB.. JNDI都非常简单了. 所有额外的工作,你配置好之后, spring都帮你做了. 你要做的就是: 使用


为什么不选择EJB呢?

打个比方吧,spring就像银行为我们提供很多的服务,以前有个叫ejb的银行,但是服务态度不好,学院派的风格,程序员快疯了。Johnson这位程序员很愤怒,新开了这家spring银行,非常的友善,于是很快地流行起来。感觉中型项目比较适合,几百块钱就不必麻烦去找银行了。大型项目 估计还要找Ejb这家大型银行。

1.3.2.2 Spring 简介和使用范围

Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。它是一个基于IoC和AOP(Aspect Oriented Programming 面向方面编程)的构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等。 从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

  ◆目的:解决企业应用开发的复杂性

  ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能

  ◆范围:任何Java应用

  简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

  ◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

  ◆控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

  ◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

  ◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

  ◆框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

  所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。



  让我们明确Spring范围。尽管Spring覆盖了许多方面,但我们已经有清楚的概念,它什么应该涉及和什么不应该涉及。

  Spring的主要目的是使J2EE易用和促进好编程习惯。

  Spring不重新开发已有的东西。因此,在Spring中你将发现没有日志记录的包,没有连接池,没有分布事务调度。这些均有开源项目提供(例如CommonsLogging用来做所有的日志输出,或CommonsDBCP用来作数据连接池),或由你的应用程序服务器提供。因为同样的的原因,我们没有提供O/Rmapping层,对此,已有有好的解决办法如Hibernate和JDO。

  Spring的目标是使已存在的技术更加易用。例如,尽管我们没有底层事务协调处理,但我们提供了一个抽象层覆盖了JTA或任何其他的事务策略。

  Spring没有直接和其他的开源项目竞争,除非我们感到我们能提供新的一些东西。例如,象许多开发人员,我们从来没有为Struts高兴过,并且感到在MVCwebframework中还有改进的余地。在某些领域,例如轻量级的IoC容器和AOP框架,Spring有直接的竞争,但是在这些领域还没有已经较为流行的解决方案。(Spring在这些区域是开路先锋。)

1.3.2.3 Spring 带来的好处


  ◆方便解耦,简化开发

  通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

  ◆AOP编程的支持

  通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP(Object Oriented Programming  面向对象的程序设计)实现的功能可以通过AOP轻松应付。

  ◆声明式事务的支持

  在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

  ◆方便程序的测试

  可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。

  ◆方便集成各种优秀框架

  Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hession、Quartz)等的直接支持。

  ◆降低JavaEEAPI的使用难度

  Spring对很多难用的JavaEEAPI(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些JavaEEAPI的使用难度大为降低。

  ◆Java源码是经典学习范例

  Spring的源码设计精妙、结构清晰、匠心独用,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你收到意想不到的效果。


下面的一些描述,可能跟上边有重叠, 列在这里做为参考:


  ◆Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB。如果你仅仅使用了Struts或其他的包含了J2EE特有APIs的framework,你会发现Spring关注了遗留下的问题,。

  ◆Spring能消除在许多工程上对Singleton的过多使用。(Singleton的过多使用,会减少系统的可测试性和面向对象特性。)  

  ◆Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。

  ◆使用Spring构建的应用程序易于单元测试。

  ◆Spring使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或localEJBs来实现业务接口,却不会影响调用代码。

  ◆Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适于许多web应用。例如,Spring能使用AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA实现。

  ■Spring为数据存取提供了一致的框架,不论是使用JDBC或O/Rmapping产品(如Hibernate)。

  Spring确实使你能通过最简单可行的解决办法解决你的问题。这些特性是有很大价值的。


1.3.2.4 Spring 的一些细节问题?
1) 事务控制的粒度/范围问题:详细信息有待补充
2) … …


1.3.2.5 Spring + Struts + Hibernate 的Sample Project


1.3.3 EJB


1.4 Data Layer
1.4.1 标准 SQL 语言
1.4.2 Hibernate
Hibernate 的设计思想
Hibernate 为我们解决了那些问题?
1.4.3 Oracle
1.4.4 Mysql
1.4.5 H2

1.5 其他


1.5.1 Cache的应用与设计
1.5.1.1 设计原理/原则
1.5.1.2 JCS cache
1.5.1.3 EH cache
1.5.1.4 Jboss cache
1.5.2 SOA
1.5.3 WebService
1.5.4 集群
1.5.5 负载均衡
1.5.6 SAP
分享到:
评论

相关推荐

    JAVA WEB 系统设计开发知识体系

    在JAVA WEB系统设计开发的知识体系中,我们涵盖了多个关键领域,这些领域对于构建高效、可扩展和健壮的网络应用程序至关重要。以下是对这些知识点的详细解释: 1. **源码管理**: 源码管理是软件开发过程中的基础...

    Java Web整合开发王者归来

    《Java Web整合开发王者归来》这本书的标题和描述都强调了Java Web开发的整合过程,并表示这是一本关于Java Web开发的完整指南。从这些信息中,我们可以推断出书中可能涉及的一些关键知识点: 1. Java基础:作为...

    Java Web 程序设计教程-课件

    本教程“Java Web程序设计教程”旨在为学习者提供一个全面且深入的Java Web开发知识体系,帮助初学者及进阶者掌握在Web环境中使用Java进行开发的基本技能。 1. **Servlet**: Servlet是Java服务器端的小型应用程序,...

    深入体验Java Web开发内幕——核心基础

    Java Web开发是利用Java语言进行网络应用设计的技术体系,主要由Servlet、JSP(JavaServer Pages)、JSTL(JavaServer Pages Standard Tag Library)等组件构成。这些组件共同构成了Java EE(Enterprise Edition)...

    Java Web开发入行真功夫 书籍源代码

    Java Web开发是IT行业中一个非常重要的领域,它涵盖了多种技术和工具,用于构建动态、交互式的Web应用程序。"Java Web开发入行真功夫"这本书籍,...通过深入研究和实践,你可以逐步建立起自己的Java Web开发技能体系。

    Java Web开发实例大全.基础卷

    基础卷》,你可以获得全面的Java Web开发知识体系,了解每个技术的实际应用场景,并通过实例操作来加深理解。配合书中的"Readme.txt"文件,你可能还能获取到额外的提示、资源链接或作者的说明,进一步提升学习效果。...

    《Java Web应用开发技术》课程教学改革与实践.pdf

    此外,学生还应对B/S结构和MVC设计思想有一个全面的了解,并能在企业中运用Web应用相关知识进行需求分析、系统设计、程序编码及测试等工作。 然而,当前《Java Web应用开发技术》课程的教学存在一些问题,主要体现...

    Java Web开发应掌握的知识

    ### Java Web开发应掌握的关键知识点 #### 一、概述 随着信息技术的发展,Web应用已成为现代信息化建设的核心之一。Java作为一种广泛应用于网络开发的语言,在Web应用领域具有不可替代的地位。为了有效地构建高质量...

    Java web开发进阶

    本实训生培养方案旨在帮助学员掌握Java Web开发的核心技能,包括面向对象编程基础、数据结构、Java集合框架、设计模式、开发工具使用、数据库操作、前端技术、后端技术、高级Java特性以及软件工程等方面的知识。...

    JAVA初级教程——Web系统开发技术与方法

    【JAVA初级教程——Web系统开发技术与方法】涵盖了Web编程的多个核心领域,旨在帮助初学者建立起完整的Web系统开发知识体系。以下是对每个知识点的详细解释: 1. **Web编程基本知识**: - **HTML**是超文本标记...

    Java web 工程师所必备的所有知识体系

    这个知识体系涵盖了从基础到高级的多个方面,确保Java Web工程师能够有效地设计、实现和优化复杂的Web系统。以下是对Java Web工程师所需知识体系的详细解析: 1. **Java基础知识**:首先,Java Web工程师需要掌握...

    深入分析java web

    《深入分析Java Web》这本书是Java Web开发领域的一本经典之作,它涵盖了多个核心主题,旨在帮助读者深入了解这个领域的各种技术细节。以下是书中的主要知识点: 1. **Java Web基础知识**:这部分通常会介绍Web应用...

    《Java-Web程序设计》整体设计.doc

    《Java-Web程序设计》整体设计是一门针对软件技术专业的核心课程,旨在培养学生的WEB网站开发能力。课程开设在第二学年的第一学期,是《计算机基础》、《Java语言程序设计》和《Java语言高级程序设计》等课程的后续...

    Java Web程序设计入门课件-Java Web框架.pptx

    Java Web程序设计主要涉及到客户端/服务器(C/S)体系架构和浏览器/服务器(B/S)体系架构的理解,以及两种常见的JSP开发模型:JSP Model1和JSP Model2。 C/S体系架构是一种传统的软件架构,由客户端软件和服务器两...

    Java Web开发技术课程体系建设探索与实践.pdf

    通过系统化的课程体系建设,《Java Web开发技术》不仅能够有效提升学生的实践能力和创新能力,还能够为他们未来的职业生涯奠定坚实的基础。随着技术的不断进步和发展,这门课程的内容也将持续更新和完善,以适应行业...

    基于Java的网购系统设计与开发的注意事项.pdf

    网购系统设计与开发是一项复杂的工程,它涉及前端、后端、数据库、安全性以及用户交互等多方面的技术。在设计和开发网购系统时,不仅需要遵循一般软件开发的最佳实践,还需要特别关注与电商相关的特殊要求,如支付...

    【69】2017年Java web开发工程师成长之路全套视频教程附配套资料下载 .txt

    根据提供的文件信息,我们可以推断出这是一套关于2017年的Java Web开发工程师成长之路的全套视频教程,该教程旨在帮助初学者乃至有一定基础的开发者系统地学习Java Web开发的相关技能。接下来,我们将围绕这个主题...

    Tomcat与Java_Web开发技术详解4.pdf

    综上所述,《Tomcat与Java Web开发技术详解》这本书全面覆盖了Tomcat和Java Web开发的相关知识,适合于初学者入门学习以及有一定基础的开发者深入研究。无论是理论知识还是实际操作,本书都能够提供有力的支持。

    《Java Web开发实战经典》.(李兴华).[PDF]&ckook;

    《Java Web开发实战经典》是李兴华撰写的一本深入探讨Java Web开发的书籍,它为读者提供了全面而详实的Java ...通过阅读并实践书中的例子,读者可以逐步建立起自己的Java Web开发知识体系,从而在实际工作中游刃有余。

    JAVA WEB开发实战经典PPT part2

    以上知识点构成了JAVA WEB开发的基础,通过李兴华老师的PPT教程,读者可以系统地学习这些内容,逐步建立起JAVA WEB开发的体系知识。对于实际项目开发,这些基础知识是必不可少的,能够为后续的框架学习(如Spring、...

Global site tag (gtag.js) - Google Analytics