办公自动化系统的考勤管理模块的设计与实现(1)内容摘要:

用户。 对于整个 ,控制器就是它的核心, :核心控制器和业务逻辑控制器。 其中核心控制器就是 ActionServlet,由 框架提供;业务逻辑控制就是用户自定义的 Action,由应用开发者提供。 的运行流程如图 所示。 图 运行流程图 而 WebWork 的优秀设计思想为核心,吸收了 分优点,同时克服了 MVC 框架。 Struts2 框架由 3 个部分组成:核心控制器 FilterDispatcher、业务控制器( 用户实现 Action类的实例 )和用户实现的业务逻辑组件。 在 Action实现类方面, Action类继承一个抽象基类 ,是面向抽象类编程而不是面向接口编程; Action类可以实现一个 Action接口,也可以实现其他接口,使可选和定制的服务成为南京大学软件学院本科毕业论文 5 可能, Struts 2 提供一个 ActionSupport 基类去实现常用的接口, 即使 Action接口不是必须实现的,只有一个包含 execute 方法的 POJO 类都可以用作 Action。 因此 Action与 Servlet 的 API 有较高耦合性,而 Action与 Servlet API 低耦合(几乎 没有耦合 ) , 因此便于开发和测试。 运行流程如图 所示 [5]。 图 由于我们小组是使用 ++ 开发这个 BBS 系统的,所以下面分别对 、 、。 Struts 2 是 Struts 的下一代产品。 是在 struts 和 WebWork 的技术基础上进行了合并,全新的 Struts 2 框架。 其全新的 Struts 2 的体系结构与 Struts 1 的体系结构的 差别巨大。 Struts 2 以 WebWork 为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与 Servlet API完全脱离开,所以 Struts 2 可以理解为 WebWork 的更新产品。 Struts2 框架的大概处理流程如下: 1. 加载类( FilterDispatcher) 2. 读取配置( struts 配置文件中的 Action) 3. 派发请求(客户端发送请求) 4. 调用 Action( FilterDispatcher 从 struts 配置文件中读取与之相对应的Action ) 南京大学软件学院本科毕业论文 6 5. 启用拦截器( WebWork 拦截 器链自动对请求应用通用功能,如验证) 6. 处理业务(回调 Action的 execute()方法) 7. 返回响应(通过 execute 方法将信息返回到 FilterDispatcher) 8. 查找响应( FilterDispatcher 根据配置查找响应的是什么信息如:SUCCESS、 ERROER,将跳转到哪个 jsp 页面) 9. 响应用户( jsp客户浏览器端显示) Spring是一个开源框架,它由 Rod Johnson创建。 它是为了解决企业应用开发的复杂性 而创建的。 Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。 然而, Spring的用途不仅限于服务器端的开发。 从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring中受益 [6]。 Spring 作为一个轻量级的 MVC 框架,具有很多特性,如图 所示。 图 Spring框架概述 Core 封装包是框架的最基础部分,提供 IoC 和依赖注入特性。 这里的基础概念是 BeanFactory,它提供对 Factory模式 的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。 Context(上下文 ) 封装包构筑于 Core 封装包的坚固基础上:它提供了用一种框架风格的方式来访问对象,有些像 JNDI 注册表。 Context 封装包继承了 beans包的功能,还增加了国际化( I18N)(用于规范 resource bundle) ,事件传播,资源装载,以及透明创建上下文,例如通过 servlet 容器。 DAO 提供了 JDBC 的抽象层,它可消除冗长的 JDBC 编码和解析数据库厂商特有的错误代码。 并且, JDBC 封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的 POJOs( plain old Java objects)都适用。 ORM 封装包提供了常用的“对象 /关系”映射 APIs 的集成层。 其中包括 JPA、南京大学软件学院本科毕业论文 7 JDO、 Hibernate 和 iBatis。 利用 ORM 封装包,可以混合使用所有 Spring 提供的特性进行“对象 /关系”映射,如前边提到的简单声明性事务管理。 Spring 的 AOP 封装包提供了符合 AOP Alliance 规范的面向方面的编程( aspectoriented programming)实现,让你可以定义,例如方法拦截器( methodinterceptors)和切点( pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。 而且,利用 sourcelevel 的元数据功能,还可以将各种行为信息合并到你的代码中,这有点象 .Net 的 attribute 的概念。 Spring中的 Web 包提供了基础的针对 Web 开发的集成特性,例如多方文件上传,利用 Servlet listeners进行 IoC容器初始化和针对 Web的 application context。 当与 WebWork 或 Struts 一起使用 Spring时,这个包使 Spring可与其他框架结合。 Spring中的 MVC 封装包提供了 Web 应用的 ModelViewController( MVC)实现。 Spring的 MVC 框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和 web form之间。 并且,还可以借助 Spring框架的其他特性。 Hibernate 是一个开放源代码的对象关系映射框架,它 对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序使用,也可以在 Servlet/JSP 的 Web 应用中使用,最具革命意义的是, Hibernate可以在应用 EJB的 J2EE架构中取代 CMP,完成数据持久化的重任 [7]。 Hibernate 的核心接口一共有 5 个,分别为 :Session、 SessionFactory、Transaction、 Query 和 Configuration。 这 5 个核心接口在任何开发中都会用到。 通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。 如图 所示。 图 Hibernate overview Session接口负责执行被持久化对象的 CRUD操作 (CRUD的任务是完成与数据库的交流,包含了很多常见的 SQL 语句。 )。 但需要注意的是 Session 对象是非线程安全的。 同时, Hibernate 的 session不同于 JSP 应用中的 HttpSession。 这南京大学软件学院本科毕业论文 8 里当使用 session 这个术语时,其 实指的是 Hibernate 中的 session,而以后会将HttpSession对象称为用户 session。 SessionFactory接口负责初始化 Hibernate。 它充当数据存储源的代理,并负责创建 Session 对象。 这里用到了工厂模式。 需要注意的是 SessionFactory 并不是轻量级的,因为一般情况下,一个项目通常只需要一个 SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个 SessionFactory。 Configuration接口负责配置并启动 Hibernate,创建 SessionFactory对象。 在Hibernate 的启动的过程中, Configuration类的实例首先定位映射文档位置、读取配置,然后创建 SessionFactory对象。 Transaction接口负责事务相关的操作。 它是可选的,开发人员也可以设计编写自己的底层事务处理代码。 Query 和 Criteria 接口负责执行各种数据库查询。 它可以使用 HQL 语言或SQL语句两种表达方式。 Div+CSS 技术 DIV+CSS 是网站标准(或称“ WEB标准”)中常用术语之一, div+css 是一种网页的布局 方法 ,这一种网页布局方法有别于传统的 HTML网页设计语言中的表格( table)定位方式 ,真正地达到了 w3c 内容与表现相分离。 HTML 语言自 以来,不再发布新版本,原因就在于 HTML 语言正变得越来越复杂化、专用化。 XHTML 语言是一种可以将 HTML 语言标准化,用 XHTML 语言重写后的 HTML页面可以应用许多 XML应用技术。 使得网页更加容易扩展,适合自动数据交换,并且更加规整。 在 XHTML网站设计标准中,不再使用表格定位技术,而是采用 DIV+CSS 的方式实现各种定位。 使用 Div+CSS 的网页布局 ,具有以下优点:使页面载入得更快、降低流量费用、修改设计时更有效率、保持视觉的一致性、更好地被搜索引擎收录、对浏览者和浏览器更具亲和力。 虽然 Div+CSS 布局方式具有相对于 Table 布局很好的优势,但传统的 Table布局也有相应的应用领域, Div+CSS 不能完全代替 Table 布局,如有些类似于表格的布局若强制使用 Div+CSS 就会有些生硬,效果明显没有直接使用 Table 布局好。 在我们的项目中,我们是使用 Div+CSS+Table 相结合的布局方式。 Div Div 是 HTML 中的一个块级元素标签( div/div), Div 元素是用来为HTML 文档内大块( blocklevel)的内容提供结构和背景的元素。 Div 的起始标签和结束标签之间的所有内容都是用来构成这个块的,其中所包含元素的特性由Div标签的属性来控制,或者是通过使用样式表格式化这个块来进行控制 [8]。 南京大学软件学院本科毕业论文 9 CSS CSS(Cascading Style Sheet,层叠样式表或级联演示表 ),是一组格式设置规则,用于控制 Web 页面的外观,它也是 DHTML的基础。 通过使用 CSS 样式设置页面的格式,可将页面的内容与表现形式分离。 页面内容存放在 HTML 文 档中,而用于定义表现形式的 CSS 规则则存放在另一个文件中或 HTML文档的某一部分,通常为文件头部分。 将内容与表现形式分离,不仅可使维护站点的外观更加容易,而且还可以使 HTML文档代码更加简练,缩短浏览器的加载时间 [9]。 Javascript/Ajax/JQuery 技术 在 Web 编程中不可避免的希望给页面增加丰富的特效或者用户体验,那么Javascript 就是一项必须要用到的技术,通过它可以给页面增加动画效果、对用户输入的信息进行验证、也服务器进行异步通信( Ajax)。 为了更加简便的访问页面中的元素,我们 使用 JQuery来操作 DOM(Document Object Model,文档对象模型 ),并且我们可以使用 JQuery 丰富的 各种插件,如图形插件。 Javascript JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。 同时也是一种广泛用于客户端 Web 开发的脚本语言,常用来给 HTML网页添加动态功能,比如响应用户的各种操作。 它最初由网景公司的 Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类 [10]。 Ajax Ajax( Asynchronous JavaScript And XML)即异步 JavaScript 及 XML。 通过 AJAX,您的 JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。 通过这个对象,您的 JavaScript 可在不重载页面的情况与 Web 服务器交换数据。 AJAX 在浏览器与 Web 服务器之间使用异步数据传输( HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。 AJAX 可使因特网应用程序更小、更 快,更友好 [11]。 JQuery JQuery 是继 prototype 之后又一个优秀的 Javascrīpt 框架。 它是轻量级的 js库 (压缩后只有 21k) ,它兼容 CSS3,还兼容各种浏览器 ( IE +, FF +, Safari +, Opera +)。 jQuery使用户能更方便地处理 HTML documents、 events、实现动画效果,并且方便地为网站提供 AJAX 交互 [12]。 南京大学软件学院本科毕业论文 10 xhEditor技术 作为一个论坛系统 ,在一些 页面中提供在线。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。