SpringStruts的快速系统开发框架介绍.ppt
基于Spring+Struts框架开发指南,1.J2EE部分总体架构.2.掌握本框架的前提基础3.框架技术涉及的原理4.J2EE部分系统框架介绍5.系统开发框架-目录结构6.系统框架规范7.快速开发模块简单应用介绍,系统架构介绍系统架构采用典型的三层架构,分别是展现成,应用层,持久层。J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,,企业内部或外部难以互通的窘境,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值 J2EE平台由一整套服务(SERVICES)、应用程序接口(APIS)和协议构成,它对开发基于WEB的多层应用提供了功能支持。在本文中我将解释支撑J2EE的13种核心技术:JDBC,JNDI,EJBS,RMI,JSP,JAVA SERVLETS,XML,JMS,JAVA IDL,JTS,JTA,JAVA MAIL 和 JAF,同时还将描述在何时、何处需要使用这些技术,J2EE部分总体架构,掌握本框架的前提基础,1.掌握Struts技术2.掌握Spring原理3.了解并掌握MVC构架4.掌握基于控制层,业务层,DAO层的分层原理,框架技术涉及的原理,1、J2EE容器服务器介绍J2EE应用系统只有部署在J2EE容器中才能运行J2EE容器分离了一般应用系统的一些通用功能功能机制的设计开发有一定难度,同时运行的稳定性和快速性都非常重要形成了专门的J2EE容器服务器产品,如Tomcat JBoss、Websphere、WebLogic等2、面向接口编程所有的定义与实现分离的原则,便于程序规范化设计方便的代码复用,无需了解技术细节,便于团队协同开发实现松散耦合,便于以后升级,扩展缺点:只能遵循接口规范,不知道实现的技术细节所谓的设计比实现难,3、Spring依赖注入模式对象间依赖关系构成分散,不宜维护这种在方法中new一个对象,缺乏统一的管理和控制,如果用这种方式,依赖构成可能分散在程序的各个角落,日后程序可读性和维护性将受到影响可能会带来频繁创建对象的损失直接在方法中new对象,每一次方法调用,都需要一次对象构造过程依赖注入(DI)背后的基本原理是对象之间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性。因此,容器的工作就是创建bean时注入那些依赖关系。相对于由bean自己来控制其实例化、直接在构造器中指定依赖关系或者类似服务定位器(Service Locator)模式这3种自主控制依赖关系注入的方法来说,控制从根本上发生了倒转,这也是控制反转(Inversion of Control,IoC)名字的由来。,代码片段1,public void greet()Speaker s=new Speaker();s.sayHello();不用容器的编码模式,代码片段2,public void greet()Speaker s=(Speaker)context.lookup(ejb/Speaker);s.sayHello();EJB编码模式,代码片段3,public Speaker s;public Greeting(Speaker s)this.s=s;public void greet()s.sayHello();注入编码模式(Spring),使用容器的好处,由容器来维护各个类之间的依赖关系(一般通过Setter来注入依赖,而不是构造函数)。Greeting并不需要关心Speaker是哪里来的或是从哪里获得Speaker,只需要关注自己分内的事情,也就是让Speaker说一句问候的话。为什么要使用框架技术1、框架一般是成熟,稳健的,可以无需再考虑和处理系统很多细节问题2、使用成熟的框架,一些基础工作已经构建完成,只需要集中精力完成系统的业务逻辑设计3、成熟的框架结构性好,扩展性好,多使用XML描述和解耦,便于升级扩展和维护,Struts介绍:Struts是使用 servlet 和 JavaServer Pages 技术的一种 Model-View-Controller 实现,J2EE部分系统框架介绍,Struts 概览Client browser(客户浏览器)来自客户浏览器的每个 HTTP 请求创建一个事件。Web 容器将用一个 HTTP 响应作出响应。Controller(控制器)控制器接收来自浏览器的请求,并决定将这个请求发往何处。就 Struts 而言,控制器是以 servlet 实现的一个命令设计模式。struts-config.xml 文件配置控制器。,业务逻辑 业务逻辑更新模型的状态,并帮助控制应用程序的流程。就 Struts 而言,这是通过作为实际业务逻辑“瘦”包装的 Action 类完成的。Model(模型)的状态 模型表示应用程序的状态。业务对象更新应用程序的状态。ActionForm bean 在会话级或请求级表示模型的状态,而不是在持久级。JSP 文件使用 JSP 标记读取来自 ActionForm bean 的信息。View(视图)视图就是一个 JSP 文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息-只有标记。标记是使 Struts 有别于其他框架(如 Velocity)的因素之一。,Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring 框架是一个分层架构,由 7 个定义良好的模块组成。各 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式。组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现,核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。,Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。,Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。,系统开发框架-目录结构,src 放的是项目源代码目录(.java文件)log4j.properties日志配置文件Struts-config.xmlstruts应用配置文件spring配置文件目录|-applicationContext.xmlSpring公共配置文件 数据库连接配置 数据库事务管理配置,com.witsky.web 项目标识某项目开发源代码root目录(与该项目有关的代码都放在此下)|-action action类|-operator|-servlet servlet类用于全局字符的转换和URL的拦截|-common.util 项目通用类(全局常量、变量定义等),以及工具类|-bean bean目录(POJO类)|-dao dao类(用于集中定义数据库的接口和实现类封装了数据接口和实现方式)|-service 业务逻辑处理类,建议1个功能模块对应1个类(注:action,service,dao包下可按照业务再划分包),WebRoot放的是项目页面目录(.jsp文件)|-css 放样式表供页面引用|-helpimage 帮助文档的图片|-js js文件|-model excel文件模板|-page 各种模块的页-operator面,按功能建立对应的文件夹|-web-inf|-lib 项目用到的JAR文件|-tld 标签|-applicationContext.xml spring配置文件|-struts-config.xml struts配置文件|-struts-servlet.xml 具体的bean,action类配置文件|-web.xml 项目启动加载配置文件,环境规范,系统框架规范,设置规范,分层建模原则:,快速开发模块简单应用介绍,系统完全基于J2EE架构,采用browser/server模式。操作员通过浏览器进行业务操作。操作人员经过登录窗口登录系统后,显示业务功能主界面,主界面包括所有业务功能模块的用户操作接口。业务功能实现部分采用STRUTS+SPRING结构。利用jsp来进行页面显示,Action类表示业务逻辑,控制则有ActionMapping完成。对数据库的操作都是通过C3P0的数据库连接池来实现的,通过连接池可以避免频繁的打开关闭数据库连接,降低系统负担。,本系统所采用的J2EE框架是从STRUTS+SPRING模式出发,结合本系统的需求而设计的。Struts作为前台控制框架简化了程序的开发。使得页面展示代码和JAVA代码编写工作有效分工,使项目的可扩展性大大增强,提高了开发效率,降低了维护成本。Spring作为一个应用于所有层面的综合框架,具有强大的应用功能及灵活性,适合作为一些大规模软件项目的底层平台。基于Struts+Spring的Web应用实现了表示层、逻辑层和数据库访问层等多层面分离,使软件在扩展性、复用性和维护性方面上有了很大提高。,以操作员管理为例介绍,1.在page里面增加operator操作员模块文件夹放JSP对应文件,2.在action里面增加operator操作员模块包放action对应java文件,3.在service里面增加operator操作员业务处理java文件,4.在struts-config.xml文件里配置表单的元素和跳转页面,4.在struts-servlet.xml文件里配置具体的action类和依赖注入的类,1.SMSServer主通讯服务端 接收来自各方系统的原始数据报文然后进行路由报文缓存到数据库的对应报文缓存表,采用TCP/IP的SCOKET通讯方式,该模块的设计理念是通讯与应用的分开,降低系统的风险性,主通讯程序主要负责接收原始数据分发到各业务处理表中使用对象:所有接入服务端平台的系统接收来自各个系统的平台对外接口数据,该通讯组件主要运用DBCP的数据库连接池采用TCP/IP的方式通讯方式进行收发收报,采用JAVA 中非阻塞模式的通讯方式,采用多线程技术,提高服务端的并发能力。将原始报文收到并路由到对应的消息队列表中去,经测试该通讯服务端在4G的内存,双核8路CPU的情况下在小型机上可以高达每秒150笔的并发数量,处理报文程序:AACService,这是一个处理报文缓存队列的消息报文处理程序,采用多线程技术,并发处理报文数据,,谢谢各位,