中在如何解决实际业务问题上[4]。
下面就图3-1所示的体系结构图分析Struts框架中的MVC组件。
图3-1 Struts框架的体系结构
视图:视图部分主要由JSP页面组成,其中没有流程逻辑、业务逻辑和模型信息只有标记。Struts自身包含了一组标记库(TagLib),这也是Struts的精华之一,灵活运用它们可以简化JSP页面的代码,提高开发效率。
控制器:Struts中的Controller主要是其自身提供的ActionServlet。ActionServlet接收所有来自客户端的请求并根据配置文件(struts-config.xml)中的定义将控制转移到适当的Action对象。
模型:Struts没有定义具体Model层的实现,Model层通常是和业务逻辑紧密相关的,有持续化的要求。目前在商业领域和开源世界,都有一些优秀的工具可以为Model层的开发提供便利。
3.1.3 Spring IOC和AOP简介
IOC和AOP都是Spring的核心思想,作为一个框架级的轻量组件,大量的配置文件是不可缺少的,但是核心是要把这些配置文件,配置节组装起来,并将核心代码编写为完全与业务无关的。下面介绍Spring是怎么做的。首先,理解IOC(控制反转)。Spring开发的基本思想:面向接口的编程模式。框架做的越多,就越能发现接口在其中起到的作用,而Spring将这种想法,开始贯彻到业务的开发中了。Bean的Set方法使用接口作为参数,保证其扩展性,实现依赖关系的松耦合。所谓的控制反转,作为中文更好理解的一个翻译应该是依赖注入,把依赖的类采用接口的方式,利用Set方法,传入Bean的内部,实现与外界的解耦合。这种注入也可作用于构造方法。其次,理解AOP(面向切面的编程方式),更通俗的说法应该是对容器内的Bean进行方法干涉。被容器中创建的类,看起来执行一个普通的方法调用,因为被容器预处理,而会在方法执行前后进行一些其它的、可配置的操作。当然,这种方法也同样是面向接口的,或者直接使用反射。利用java.lang.reflect.InvocationHandler接口可以达到这种干涉的效果。
AOP有一个重要特点:源码组成无关性。体现在具体设计中就是AOP组件与应用代码无关,应用代码可以脱离AOP组件独立编译。这极大地降低了在已有系统中加入权限管理的代码修改量。
图3-2描述了一个典型的分成多个模块的应用系统。
图3-2 交叉业务
每个模块的主要业务是为它的特殊领域提供服务。然而,每个模块也需要一些相似的辅助功能,如安全和事务管理。重用通用功能的常用面向对象技术是使用继承和委托模式。但由于基础类在系统中到处使用,会引起脆弱的继承关系。委托模式比较笨拙,依然需要重复调用委托对象。在大多数情况下,AOP是一种简洁的代替方法。
3.1.4 Hibernate框架介绍
作为本系统与数据库的操纵接口,Hibernate在本系统中扮演了很重要的角色。
Hibernate是一个面向Java环境的对象-关系数据库映射工具,它不仅提供了从Java类到数据表之间的映射,还提供了数据查询和数据恢复机制。与使用JDBC和SQL来手工操作数据库相比,使用Hibernate实现了持久层功能,通过使用Hibernate来封装底层的数据操作细节,为业务逻辑层提供了面向对象的API,它的意义在于:使代码重用性高,能够完成所有的数据访问操作;具有相对的独立性,底层数据库改变,只需要修改持久层代码,只要对上提供的API不变,则上层的业务逻辑层可以不用修改,其架构图如图3-3所示:
Hibernate能有效地实现关系型数据与对象模型之间的转换,Hibernate作为Java应用和关系型数据库之间的桥梁,它负责关系数据与Java对象之问的映射,并对JDBC进行了轻量级的对象封装,使得Java程序员可以随心所欲地使用对象编程来操纵数据库。
Hibernate具有以下特点:
1.Hibernate是一个开放源代码的对象关系映射框架,它是JDBC的轻量级的对象封装。它可以应用在任何使用JDBC的场合,例如既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。而且Hibernate拥有自己的功能强大的查询语言(Hibernate Query Language,简称HQL),它的语法和SQL语句有些相像,在运行时才得以解析,并且它是完全面向对象的。
2.Hibernate具有自己的事务管理机制,其本质其实就是对JDBC进行轻量级的对象封装,Hibernate本身在设计时并不具备Transaction处理功能,平时所用的Hibernate的Transaction,只是将底层的JDBC Transaction,或者是JTA Transaction进行了一下封装,在外面套上Transaction和Session的外壳,其实底层都是通过委托底层的JDBC或JTA来实现事务的调度功能。
3.Hibernate是一种非强迫性的解决方案。开发者在写业务逻辑与持续性类时,不会被要求遵循许多Hibernate特定的规则和设计模式。这样,Hibernate就可以与大多数新的和现有的应用平稳地集成,而不需要对应用的其余部分作破坏性的改动。
图3-3 Hibernate架构图
3.2 系统设计目标
基于J2EE的在线招聘系统从分析现有的市场情况的基础上,通过对当今求职者以及应聘者的充分调查研究,了解了现阶段各个人群的需求,设定在线招聘系统的主要功能大概可以分为四大部分:应聘者、招聘方、系统管理员和游客。具体功能如下:
应聘者:发送简历,查看相应的招聘信息,查看公告,修改自己的注册信息,找回自己的密码,修改自己的简历;
招聘方:查看简历,发布需求信息,下载简历,修改相应的需求信息,删除简历;
系统管理员:编辑站内公告,发布站内公告,验证招聘方注册,创建管理员等等;
游客:浏览。
3.3 系统功能设计
基于J2EE的在线招聘系统主要的功能涉及三个方面的功能。包括应聘方,招聘方,管理员及游客。
应聘者可以根据不同的招聘公司来填写自身适合该公司需求的相关信息;可以向自己选择的招聘公司投递自己的信息;查看相应的招聘信息从而选择适合自己的招聘公司;查看管理员发布的有关公告;修改注册时填写的有关信息,如电话、邮箱等;根据自己填写的信息可以找回自己忘记的密码;随时修改自己的简历。
招聘方可以查看应聘者投放的简历;可以填写自身公司所需要的学会相关技能的人才,如java架构师,软件工程师等;可以对已发布的需求信息随时进行修改;删除已发布的需求信息;对已接受到的简历进行查看。
管理员可以填写并编辑站内公告;发布站内公告,从而使招聘方和应聘方看到;对已发布的站内公告进行修改;对注册的招聘方或应聘方的注册信息进行验证;创建管理员,从而进行管理整个系统[5]。
3.4 系统结构设计
系统的概要设计中最重要的就是系统的模块化。模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干个模块的过程。每个模块完成一个特定的功能,所有的模块按某种方法组织起来,成为一个整体,完成整个系统所要求的功能[6]。
将系统划分为多个模块是为了降低软件系统的复杂性,提高可读性、可维护性。但是,模块的划分不能是任意的,应尽量保持其独立性。也就是说,每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单,即尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。
3.4.1 应聘者模块.
1.填写简历模块:
模块功能:对用户的简历信息进行添加。
源码存储目录:zhongyan/online/action/ResumeAction。
2.查看简历模块:
模块功能:对该用户的简历进行查询,包括新增、修改和删除自己的简历信息源码。
源码存储目录:zhongyan/online/action/Re
上一篇:
毕业设计任务书--J2EE架构的在线招聘系统(word文档)
下一篇:
基于JSP邮件收发系统论文