J2EE框架设计及研究(信息技术专业)(DOC毕业设计论文).doc_第1页
J2EE框架设计及研究(信息技术专业)(DOC毕业设计论文).doc_第2页
J2EE框架设计及研究(信息技术专业)(DOC毕业设计论文).doc_第3页
J2EE框架设计及研究(信息技术专业)(DOC毕业设计论文).doc_第4页
J2EE框架设计及研究(信息技术专业)(DOC毕业设计论文).doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计J2EE框架设计及研究摘要在好的框架下,开发者只需要写一些必须的代码;他们不需要直接接触底层的API。这一点很重要。经过良好设计的框架可以为程序提供清晰的结构并且提高程序的内聚性。好清晰的结构使得其他人可以更容易加入项目。一个容易使用的框架可以通过一些例子和文档为用户提供最佳实践。采用成功的框架的代码比自己的代码容易测试。J2EE复杂的多层结构决定了大型的J2EE项目需要运用框架和设计模式来控制软件质量。关键字: J2EE;J2EE框架设计;J2EE框架;J2EE框架原目录1、前言12、Struts、Hibernate、Spring工作原理简介12.1 表示层框架Struts12.1.1什么是Struts22.1.2为什么要使用Struts框架52.2 业务逻辑层框架Spring62.2.1 什么是spring62.2.2 为什么要用spring82.3 数据持久层框架Hibernate92.3.1 什么是Hibernate?92.3.2 Hibernate核心接口103、基于SSH组合框架的Web应用模型设计与实现113.1 SSH框架实现的设计思路分析113.2 SSH框架实现的具体应用123.2.1数据持久层123.2.2业务逻辑层163.2.3表示层17参考文献181、前言 著名的软件大师Ralph Johnson对框架(Framework)进行了如下的定义:框架是整个系统或系统的一部分的可重用设计,由一组抽象的类及其实例间的相互作用方式组成1。程序大致上由两类性质不同的组件组成,一类与程序要处理的具体事务密切相关,我们不妨把它们叫做业务组件;另一类是应用服务。比如说:一个税务征管系统和一个图书管理系统会在处理它们的业务方面存在很大的差异,这些直接处理业务的组件由于业务性质的不同不大可能在不同的系统中重用,而另一些组件如决定程序流向的控制、输入的校验、错误处理及标签库等这些只与程序相关的组件在不同的系统中可以很好地得到重用。人们自然会想要是把这些在不同应用程序中有共性的一些东西抽取出来,做成一个半成品程序,这样的半成品就是所谓的程序框架。设计策略的不同,导致了解决问题的方法不同,这无疑决定了框架的多样性。像Web表示层框架,除了Struts还有WebWork、Turbine、Echo、MaveRick等等;类似于Spring的框架还有realMethods、Keel、Expresso等;而相似于hibernate的持久层框架就更多了ibatis、jdo、jpa、JULP、Mr.Persister、TopLink等等。框架说白了就是JAVA工作者多年以来总结出的一些开发标准。让我们可以以成功的经验模式来开发我们自已的系统,一般使用框架的好处是:在好的框架下,开发者只需要写一些必须的代码;他们不需要直接接触底层的API。经过良好设计的框架可以为程序提供清晰的结构并且提高程序的内聚性。清晰的结构使得其他人可以更容易加入项目。 一个容易使用的框架可以通过一些例子和文档为用户提供最佳实践。 采用成功的框架的代码比自己的代码容易测试。简而言之,框架一般具有即插即用的可重用性、成熟的稳定性以及良好的团队协作性。J2EE复杂的多层结构决定了大型的J2EE项目需要运用框架和设计模式来控制软件质量。本文将结合J2EE当前流行的三大开源框架:基于MVC模式的Struts框架和基于IoC模式的Spring框架以及对象/关系映射框架Hibernate,简单的探讨一下J2EE框架的设计方法。 2、Struts、Hibernate、Spring工作原理简介2.1 表示层框架Struts2.1.1什么是StrutsStruts作为一个开放原代码的应用框架,在最近几年得到了飞速的发展,在JSP Web应用开发中应用得非常广泛,有的文献上说它已经成为JSP Web应用框架的事实上的标准。那么,究竟什么是Struts呢?要回答这个问题还得从JSP Web应用的两种基本的结构模式:Model 1和Model 2说起。 Model 1结构如图1所示: 图1Model 1是一个以JSP文件为中心的模式,在这种模式中JSP页面不仅负责表现逻辑,也负责控制逻辑。专业书籍上称之为逻辑耦合在页面中,这种处理方式,对一些规模很小的项目如:一个简单的留言簿,也没什么太大的坏处,实际上,人们开始接触一些对自己来说是新的东西的时候,比如,用JSP访问数据库时,往往喜欢别人能提供一个包含这一切的单个JSP页面,因为这样在一个页面上他就可以把握全局,便于理解。但是,用Model 1模式开发大型时,程序流向由一些互相能够感知的页面决定,当页面很多时要清楚地把握其流向将是很复杂的事情,当您修改一页时可能会影响相关的很多页面,大有牵一发而动全身的感觉,使得程序的修改与维护变得异常困难;还有一个问题就是程序逻辑开发与页面设计纠缠在一起,既不便于分工合作也不利于代码的重用,这样的程序其健壮性和可伸缩性都不好。 Grady Booch等人在UML用户指南一书中,强调建模的重要性时,打了一个制作狗窝、私人住宅、和大厦的形象比喻来说明人们处理不同规模的事物时应该采用的合理方法一样,人们对不同规模的应用程序也应该采用不同的模式。 为了克服Model 1的缺陷,人们引入了Model 2,如图2所示: 图2它引入了控制器这个概念,控制器一般由servlet来担任,客户端的请求不再直接送给一个处理业务逻辑的JSP页面,而是送给这个控制器,再由控制器根据具体的请求调用不同的事务逻辑,并将处理结果返回到合适的页面。因此,这个servlet控制器为应用程序提供了一个进行前-后端处理的中枢。一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另一方面也提供了将业务逻辑从JSP文件剥离的可能。业务逻辑从JSP页面分离后,JSP文件蜕变成一个单纯完成显示任务的东西,这就是常说的View。而独立出来的事务逻辑变成人们常说的Model,再加上控制器Control本身,就构成了MVC模式。实践证明,MVC模式为大型程序的开发及维护提供了巨大的便利。 其实,MVC开始并不是为Web应用程序提出的模式,传统的MVC要求M将其状态变化通报给V,但由于Web浏览器工作在典型的拉模式而非推模式,很难做到这一点。因此有些人又将用于Web应用的MVC称之为MVC2。正如上面所提到的MVC是一种模式,当然可以有各种不同的具体实现,包括您自己就可以实现一个体现MVC思想的程序框架,Struts就是一种具体实现MVC2的程序框架。其主要的设计理念是通过控制器将表现逻辑和业务逻辑解耦,以提高系统的可维护性、可扩展性和可重用性2。它的大致结构如图3所示:图3图3基本勾勒出了一个基于Struts的应用程序的结构,从左到右,分别是其表示层(view)、控制层(controller)、和模型层(Model)。其表示层使用Struts标签库构建。来自客户的所有需要通过框架的请求统一由叫ActionServlet的servlet接收,根据接收的请求参数和Struts配置(struts-config.xml)中ActionMapping,将请求送给合适的Action去处理,解决由谁做的问题,它们共同构成Struts的控制器。Action则是Struts应用中真正干活的组件,开发人员一般都要在这里耗费大量的时间,它解决的是做什么的问题,它通过调用需要的业务组件(模型)来完成应用的业务,业务组件解决的是如何做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet以将响应呈现给客户。 过程如图四所示: 图42.1.2为什么要使用Struts框架我们自己可以建这种框架,为什么要使用Struts呢?我想下面列举的这些理由是显而易见的:首先,它是建立在MVC这种公认的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等;其次,它是个开源项目得到了包括它的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护,并且经受了实战的检验,使其功能越来越强大,体系也日臻完善;最后,是它对其他技术和框架显示出很好的融合性。当然,和其他任何技术一样,它也不是十全十美的,如:它对类和一些属性、参数的命名显得有些随意,给使用带来一些不便;还有如Action类execute方法的只能接收一个ActionForm参数等。但瑕不掩瑜,这些没有影响它被广泛使用。2.2 业务逻辑层框架Spring2.2.1 什么是springSpring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。目的:解决企业应用开发的复杂性功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能范围:任何Java应用简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。轻量从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。Spring框架的核心是控制反转IoC(Inversion of Control)/依赖注入DI(Dependence Injection)机制。IoC是指由容器中控制组件之间的关系(这里,容器是指为组件提供特定服务和技术支持的一个标准化的运行时的环境)而非传统实现中由程序代码直接操控,这种将控制权由程序代码到外部容器的转移,称为“反转”3。DI是对IoC更形象的解释,即由容器在运行期间动态地将依赖关系(如构造参数、构造对象或接口)注入到组件之中3。Spring采用设值注入(使用Setter方法实现依赖)和构造子注入(在构造方法中实现依赖)的机制,通过配置文件管理组建的协作对象,创建可以构造组件的IoC容器。这样,不需要编写工厂模式、单例模式或者其他构造的方法,就可以通过容器直接获取所需的业务组件。Spring框架的结构如图5所示。图5 Spring框架由七个定义明确的模块组成,且每个模块或组件都可以单独存在,或者与其他一个或多个模块联合实现。Spring Core Container是一个用来管理业务组件的IoC容器,是Spring应用的核心;Spring DAO和Spring ORM不仅提供数据访问的抽象模块,还集成了对Hibernate、JDO和iBatis等流行的对象关系映射框架的支持模块,并且提供了缓冲连接池、事务处理等重要的服务功能,保证了系统的性能和数据的完整性;Sprnig Web模块提供了Web应用的一些抽象封装,可以将Struts、Webwork等Web框架与Spring整合成为适用于自己的解决方案。Spring框架可以成为企业级应用程序一站式的解决方案,同时它也是模块化的框架,允许开发人员自由地挑选适合自己应用的模块进行开发。Spring框架式是一个松耦合的框架,框架的部分耦合度被设计为最小,在各个层次上具体选用哪个框架取决于开发者的需要。2.2.2 为什么要用springSpring可以给一个工程带来的一些好处,比如: Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB。如果你仅仅使用了Struts或其他的包含了J2EE特有APIs的framework,你会发现Spring关注了遗留下的问题。Spring能消除在许多工程上对Singleton的过多使用。根据我的经验,这是一个主要的问题,它减少了系统的可测试性和面向对象特性。 Spring能消除使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可通过一种一致的方法来进行配置。曾经感到迷惑,一个特定类要查找迷幻般的属性关键字或系统属性,为此不得不读Javadoc乃至源编码吗?有了Spring,你可很简单地看到类的JavaBean属性。倒置控制的使用(在下面讨论)帮助完成这种简化。 Spring能通过接口而不是类促进好的编程习惯,减少编程代价到几乎为零。 Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。 使用Spring构建的应用程序易于单元测试。 Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。 Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适于许多web应用。例如,Spring能使用AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA实现。 Spring为数据存取提供了一致的框架,不论是使用JDBC或O/R mapping产品(如Hibernate)。 总结起来,Spring有如下优点:低侵入式设计,代码污染极低 独立于各种应用服务器,可以真正实现Write Once,Run Anywhere的承诺Spring的DI机制降低了业务对象替换的复杂性Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。2.3 数据持久层框架Hibernate2.3.1 什么是Hibernate? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate是目前最为流行的O/R mapping框架;O/R mapping技术是为了解决关系型数据库和面向对象的程序设计之间不匹配的矛盾而产生。Hibernate工作原理如图6所示。图6 Hibernate通过对JDBC的封装,向程序员屏蔽了底层的数据库操作,使程序员专注于OO程序的开发,有助于提高开发效率。程序员访问数据库所需要做的就是为持久化对象编制xml映射文件4。底层数据库的改变只需要简单地更改初始化配置文件(hibernate.cfg.xml或者perties)即可,不会对应用程序产生影响。 Hibernate有自己的面向对象的查询语言HQL,HQL功能强大,支持目前大部分主流的数据库,如Oracle、DB2、MySQL、Microsoft SQL Server等,是目前应用最广泛的O/R映射工具。Hibernate为快速开发应用程序提供了底层的支持。2.3.2 Hibernate核心接口Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。 Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。 Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。3、基于SSH组合框架的Web应用模型设计与实现 3.1 SSH框架实现的设计思路分析前面分析了基于J2EE的三种框架技术,下面通过集成以上三种框架技术来对传统的J2EE Web开发模型加以改进,以形成一种新的、轻量型的J2EE架构。集成SSH框架的系统框架图如图7所示,系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,利用Hibernate框架对持久层提供支持,业务层用Spring支持。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring完成业务逻辑。图7系统的基本业务流程是:在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。3.2 SSH框架实现的具体应用下面将通过一个实际的系统来展示如何进行基于SSH框架的Web应用开发。该系统是为某通信公司运营部开发的一个问答式系统,功能类似于百度知道和新浪爱问。由于系统的模块较多,下面就以一个用户管理模块为例来说明系统的开发实现过程,并将按照数据持久层、业务逻辑层、表示层的顺序说明系统构建过程。3.2.1数据持久层数据持久层由Java对象持久化类和数据访问对象(DAO)组成。每个数据库表都对应着一个持久化对象,这样就给予了开发者使用OO思想设计和开发的便利,同时也屏蔽了具体的数据库和具体的数据表、字段,消除了对数据库操作的硬编码在重用性上的弊端。用户信息表的部分结构如下所示。用户信息表(User)字段名含义备注id用户ID主键IDname用户名用户名pwd登陆密码密码对应Java类及映射文件主要内容如下:src/.ssh.modelUser.javapublic class User private int id;/主键IDprivate String name;/用户名private String pwd;/密码 public String getName() return name; public void setName(String name) = name; public String getPwd() return pwd; public void setPwd(String pwd) this.pwd = pwd; public int getId() return id; public void setId(int id) this.id = id; src/.ssh.modelUser.hbm.xml ?xml version=1.0?!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD/EN /hibernate-mapping-2.0.dtd hibernate-mapping package= .ssh.model class name=User table=USERid column=ID name=id type=integer generator class=assigned / /idpropertycolumn=NAMElength=20name=namenot-null=truetype=string/propertycolumn=PWDlength=20name=pwdnot-null=truetype=string/class/hibernate-mapping Hibernate通过映射(Mapping)文件将对象(Object)与关系型数据(Relational)相关联,因此需要编写和数据库表相对应的Java持久化类以及对应的映射文件。有了Java持久化类后就可以在此基础上实现数据访问类。相应的部分代码如下:src/.ssh.daoIDAO.java( 接口,所有的DAO都继承该接口) package .ssh.services.dao;public interface IDAO src/.ssh.daoIUserDAO.java( 接口,该接口提供访问对象的方法) public interface IUserDAO extends DAO List getUsers();User getUser(Integer id);void saveUser(User user);void removeUser(Integer id); src/.ssh.dao.ImpUserDAOHibernate.java import java.util.List;import mons.logging.Log;import mons.logging.LogFactory;import org.springframework.orm.hibernate3.HibernateTemplate;import .ssh.model;import .ssh.dao.IUserDAO;public class UserDaoHibernate implements IUserDAO private Log log=LogFactory.getLog(UserDaoHibernate.class); private HibernateTemplate hibernateTemplate; public void setHibernateTemplate(HibernateTemplate hibernateTemplate) this.hibernateTemplate = hibernateTemplate; /* (非 Javadoc)* see .ssh.dao.IUserDAO#getUsers()*/public List getUsers() return hibernateTemplate .find(from User); /* (非 Javadoc)* see .ssh.dao IUserDAO#getUser(java.lang.Long)*/public User getUser(Integer id) return (User) hibernateTemplate . get(User.class,id); /* (非 Javadoc)* see .ssh.dao.IUserDAO#saveUser(com.jandar.model.User)*/public void saveUser(User user) log.debug(xxxxxxx); hibernateTemplate .saveOrUpdate(user);if(log.isDebugEnabled()log.debug(userId set to +user.getId(); /* (非 Javadoc)* see .ssh.dao.IUserDAO#removeUser(java.lang.Long)*/public void removeUser(Integer id) Object user= hibernateTemplate .load(User.class,id);hibernateTemplate .delete(user);if(log.isDebugEnabled()log.debug(del user +id); 在这个类中实现了IUserDAO接口的方法,并且继承了HibernateDAOSupport类。这个类的作用是通过hibernate访问、操作对象,进而实现对数据库的操作。具体的Hibernate数据源、session工厂、事务管理、缓冲连接池等功能都由业务层的Spring容器提供。3.2.2业务逻辑层业务逻辑层由Spring框架支持,提供了处理业务逻辑的服务组件。开发者需要对业务对象建模,抽象出业务模型并封装在Model组件中。由于数据持久层实现了Java持久化类并且封装了数据访问对象(DAO),因此可以在Model组件中方便地调用DAO组件来存取数据。Spring的IoC容器负责统一管理Model组件和DAO组件以及Spring所提供的事务处理、缓冲连接池等服务组件。在用户管理模块中,通过业务建模创建了用户模型UserService类,封装了对用户的权限管理以及积分管理等功能。UserService类通过调用数据访问类UserDao实现对用户数据的操作。这些组件的关系将通过配置Spring框架的applicationContext.xml联系起来,配置文件的主要内容如下:applicationContext.xml?xml version=1.0 encodiong=”UTF-8”?beans xmlns=/schema/beans xmlns:xsi=/2001/XMLSchema-instance xmlns:aop=/schema/aop xsi:schemaLocation=/schema/beans /schema/beans/spring-beans-2.0.xsd /schema/aop /schema/aop/spring-aop-2.0.xsd !- dao类 -bean id=dao class= .ssh.service.dao.impl. UserDAOHibernate property name=hibernateTemplate ref=template/bean!- service类 -bean id=service class=.css.service.impl.DaoServiceImplproperty name=dao ref=dao/beanbean id=serverCenterService class=.css.service.impl.ServerCenterServiceImplproperty name=dao ref=dao/ /bean!- name的值必须与struts配置文件中的action元素的属性path一致,class为业务处理类, 从而,处理类中的属性(service)业务管理类可以由此注入 -!- 子系统转发 -bean name=/login class=.ssh.controller.UserLoginActionproperty name=daoServiceref local=service/property/bean/hibernate-mapping3.2.3表示层 表示层结合JSP和Struts的TagLib库处理显示功能,利用ActionServlet将请求(*.do)映射到相应的Action,并由Action调用业务逻辑的服务组件,然后根据处理结果跳转到Forword对象指定的响应页面。 业务流程的部署由struts-config.xml完成。下面以一个显示所有用户信息的请求(ListUser.do)为例来说明配置文件的使用。 基于J2EE的Web应用以其层次性、平台无关性的优势已经逐渐成为了电子商务、电子政务主要的解决方案。本文针对传统的J2EE Web应用开发的弊端,提出了一种利用轻量级框架来快速搭建Web应用的解决方案,并且通过其在实际项目中的应用,证明了采用此方案可以帮助开发人员在短时间内建立结构清晰、可重用性好、维护扩展方便的Web应用程序。在用SSH开发web应用时,需要对生成的各个类文件进行组织,下面就对一个可行的目录方案进行介绍,根据SSH框架的结构,将包大体分为:.ssh :公共包.ssh.model:模型层,用于放Bean文件,如User.java文件.如果项目有很多子模块,可以在该包下建一些子包用来分别存放子模块的Bean .ssh.controller:存放控件类文件,如UserLoginA.ssh.dao :存放数据访问层的dao文件,主要放dao接口文件.ssh.dao.impl :存放dao接口的具体实现类文件.ssh.service:存放服务类接口文件.ssh.service.impl: 存放服务接口的具体实现类文件.ssh.hibernate:存放hibernate文件具体的结构图如下: 参考文献1GAMMA E, HELM R, JOHNSON R, et al. Design patterns:Elements of reusable object-oriented softwareM. Addison Wesley, 1994.2孙卫琴.精通Struts:基于MVC的Java Web设计与开发M.北京:电子工业出版社,2004.3JOHNSON R, HOELLER J, ARENDSEN A, et al. Java/J2EE application framework reference document. V1.1.2004.4徐长盛,戴超.一种快速开发Web应用程序方法的研究J.计算机工程与设计,2004,(12):2237-2239.5夏昕,曹晓钢,唐勇.深入浅出HibernateM. 北京:电子工业出版社,2005.6JOHNSON R.Expert one-on-one J2EE design and developmentM. 魏海萍译.北京:电子工业出版社,2003. 致谢 XXX、XXX老师以下内容与本文档无关!以下内容与本文档无关!。以下为赠送文档,祝你事业有成,财源广进,身体健康,家庭和睦!高效能人士的50个习惯l 在行动前设定目标有目标未必能够成功,但没有目标的肯定不能成功。著名的效率提升大师博思.崔西説:“成功就是目标的达成,其他都是这句话的注释。”现实中那些顶尖的成功人士不是成功了才设定目标,而是设定了目标才成功。一次做好一件事著名的效率提升大师博思.崔西有一个著名的论断:“一次做好一件事的人比同时涉猎多个领域的人要好得多。”富兰克林将自己一生的成就归功于对“在一定时期内不遗余力地做一件事”这一信条的实践。培养重点思维从重点问题突破,是高效能人士思考的一项重要习惯。如果一个人没有重点地思考,就等于无主要目标,做事的效率必然会十分低下。相反,如果他抓住了主要矛盾,解决问题就变得容易多了。发现问题关键在许多领导者看来,高效能人士应当具备的最重要的能力就是发现问题关键能力,因为这是通向问题解决的必经之路。正如微软总裁兼首席软件设计师比尔。盖茨所説:“通向最高管理层的最迅捷的途径,是主动承担别人都不愿意接手的工作,并在其中展示你出众的创造力和解决问题的能力。”把问题想透彻把问题想透彻,是一种很好的思维品质。只要把问题想透彻了,才能找到问题到底是什么,才能找到解决问题最有效的手段。不找借口美国成功学家格兰特纳说过这样的话:“如果你有为自己系鞋带的能力,你就有上天摘星星的机会!”一个人对待生活和工作是否负责是决定他能否成功的关键。一名高效能人士不会到处为自己找借口,开脱责任;相反,无伦出现什么情况,他都会自觉主动地将自己的任务执行到底。要事第一创设遍及全美的事务公司的亨瑞。杜哈提说,不论他出多小钱的薪水,都不可能找到一个具有两种能力的人。这两种能力是:第一,能思想;第二,能按事情的重要程度来做事。因此,在工作中,如果我们不能选择正确的事情去做,那么唯一正确的事情就是停止手头上的事情,直到发现正确的事情为止。运用20/80法则二八法则向人们揭示了这样一个真理,即投入与产出、努力与收获、原因和结果之间,普遍存在着不平衡关系。小部分的努力,可以获得大的收获;起关键作用的小部分,通常就能主宰整个组织的产出、盈亏和成败。合理利用零碎时间所谓零碎时间,是指不构成连续的时间或一个事务与另一事务衔接时的空余时间。这样的时间往往被人们毫不在乎地忽略过去,零碎时间虽短,但倘若一日、一月、一年地不断积累起来,其总和将是相当可观的。凡事在事业上有所成就的人,几乎都是能有效地利用零碎时间的人。习惯10、废除拖延对于一名高效能人士来説,拖延是最具破坏性的,它是一种最危险的恶习,它使人丧失进取心。一旦开始遇事推托,就很容易再次拖延,直到变成一种根深崹蒂固的习惯。习惯11、向竞争对手学习一位知名的企业家曾经说过,“对手是一面镜子,可以照见自己的缺陷。如果没有了对手,缺陷也不会自动消失。对手,可以让你时刻提醒自己:没有最好的,只有更好。”习惯12、善于借助他人力量年轻人要成就一番事业,养成良好的合作习惯是不可少的,尤其是在现代职场中,靠个人单打独斗的时代已经过去了,只有同别人展开良好的合作,才会使你的事业更加顺风顺水。如果你要成为一名高效能的职场人士,就应当养成善于借助他人力量的好习惯。习惯13、换位思考在人际的相处和沟通里,“换位思考”扮演着相当重要的角色。用“换位思考”指导人的交往,就是让我们能够站在他人的立场上,设身处地理解他人的情绪,感同身受地明白及体会身边人的处境及感受,并且尽可能地回应其需要。树立团队精神一个真正的高效能人士,是不会依仗自己业务能力比别人更优秀而傲慢地拒绝合作,或者合作时不积极,倾向于一个人孤军奋战。他明白在一个企业中,只有团队成功,个人才能成功。善于休息休息可以使一个人的大脑恢复活力,提高一个人的工作效能。身处激烈的竞争之中,每一个人如上紧发条的钟表.因此,一名高效能人士应当注意工作中的调节与休息,这不但于自己健康有益,对事业也是大有好处的。及时改正错误一名高效能人士要善于从批评中找到进步的动力.批评通常分为两类,有价值的评价或是无理的责难.不管怎样,坦然面对批评,并且从中找寻有价值、可参考的成分,进而学习、改进、你将获得意想不到的成功。责任重于一切著名管理大师德鲁克认为,责任是一名高效能工作者的工作宣言.在这份工作宣言里,你首先表明的是你的工作态度:你要以高度的责任感对待你的工作,不懈怠你的工作、对于工作中出现的问题能敢于承担.这是保证你的任务能够有效完成的基本条件。不断学习一个人,如果每天都能提高1%,就没有什么能阻挡他抵达成功.成功与失败的距离其实并不遥远,很多时候,它们之间的区别就在于你是否每天都在提高你自己;如果你不坚持每天进步1%的话,你就不可能成为一名高效能人士.让工作变得简单简单一些,不是要你把事情推给别人或是逃避责任,而是当你焦点集中很清楚自己该做那些事情时,自然就能花更小的力气,得到更好的结果.重在执行执行力是决定一个企业成败的关键,同时也是衡量一个人做事是否高效的重要标准.只做适合自己的事找到合适自己的事,并积极地发挥专长,成为行业的能手,是高效能人士应当努力追求的一个目标.把握关键细节精细化管理时代已经到来,一个人要成为一名高效能人士,必须养成重视细节的习惯.做好小事情既是一种认真的工作态度,也是一种科学的工作精神.一个连小事都做不好的人,绝不可能成为一名高效能人士.不为小事困扰我们通常都能够面对生活中出现的危机,但却常常被一些小事搞得垂头丧气,整天心情不快,精神忧闷紧张。一名高效能人士应当及时摆脱小事困扰,积极地面对工作和生活。专注目标美国明尼苏达矿业制造公司(3M)的口号是:写出两个以上的目标就等于没有目标.这句话不仅适用于公司经营,对个人工作也有指导作用。有效沟通人与人之间的交往需要沟通,在公司,无论是员工于员工员工于上司员工与客户之间都需要沟通.良好的沟通能力是工作中不可缺小的,一个高效能人士绝不会是一个性格孤

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论