目录
第一章 前言………………………………………………………………………………………………… 3
第二章 Servlet简介
1. 什么是Servlet……………………………………………………………………………………… 3
2. Servlet技术的特点……………………………………………………………………………… 3
3. Servlet的生命周期……………………………………………………………………………… 3
第三章 JSP技术概述
1. JSP技术的产生背景……………………………………………………………………………… 4
2. JSP技术的优势和弱势 …………………………………………………………………………… 4
2.1 JSP技术的优势……………………………………………………………………………… 4
2.2 JSP技术的弱势……………………………………………………………………………… 4
2.3 JSP内置对象………………………………………………………………………………… 4
3. JSP技术的工作原理…………………………………………………………………………………4
第四章 Struts概述
1. Struts的由来和发展……………………………………………………………………………… 4
1.1 Struts的MVC模式简介…………………………………………………………………… 5
2. Struts的优缺点 …………………………………………………………………………………… 6
3. Struts的工作流程………………………………………………………………………………… 6
第五章 Hibernate数据库持久化技术
1. Hibernate简介………………………………………………………………………………………7
2. Hibernate的工作流程………………………………………………………………………………7
第六章 开发环境
1. Eclipse开发工具……………………………………………………………………………………8
2. Tomcat服务器……………………………………………………………………………………… 8
2.1 Tomcat的产生和发展…………………………………………………………………………8
2.2 在Tomcat中部署Web应用程序………………………………………………………………8
3. SQL Server 数据库………………………………………………………………………………… 8
第七章 基于Web的教学管理系统详细设计
1. 系统功能设计…………………………………………………………………………………………8
2. 系统功能模块…………………………………………………………………………………………9
3. 数据库设计与实现……………………………………………………………………………………9
3.1 数据库功能设计……………………………………………………………………………… 9
3.2 数据库概念结构设计………………………………………………………………………… 9
3.3 数据库逻辑结构设计…………………………………………………………………………11
4. 业务逻辑层各bean功能…………………………………………………………………………… 12
5. 控制处理层………………………………………………………………………………………… 14
总结…………………………………………………………………………………………………………… 14
参考文献……………………………………………………………………………………………………… 14
第一章 前言
教学管理系统是集计算机技术、网络通信技术为一体的信息系统工程,通过JSP开发基于Web的教学管理系统,一方面它面向包括学生、教师和教学管理人员,大大方便学校的教务管理,另一方面它通过数据库管理学校的庞大信息量,保证了数据的准确、及时、全面、详实。
教学管理系统的开发过程是以软件工程的思想为指导,经过可行性研究、需求分析、总体分析、详细设计等主要阶段而进行的规范的开发过程。目前开发Web应用程序主要有C/S(客户机/服务器)和B/S(浏览器/服务器)两种模式。B/S设计模式为我们提供了系统设计的基本思想和基本方向。相对于C/S模式来讲,B/S 模式让客户端不安装软件通过对服务端的访问就可以得到所需信息,从而使网页更加便于浏览和管理,符合使用者对使用系统的要求,也就是说用户无需安装客户端,只要通过浏览器就可以访问相关服务;它在系统升级或维护的时候,只要在Web服务器中集中改动,用户在下一次页面刷新时就能立即得到反馈,而对于那些在服务端运行的逻辑、改动对于用户来说是透明的的;此外,就数据迁移和安全性等方面来讲,B/S模式也更加具有优势。
学校作为一个复杂的机构,要实现其日常教学活动庞大数据量的有效管理,借助于一个实用的教学管理系统是必不可少的。与教学活动相关的角色大致可分为学生、教师和教学管理人员三类。而这三类用户所具备的权限、所关心的问题及所需要的资料也互不相同,这就需要给他们提供不同的操作界面,规定他们的对应操作。因此,教学管理系统的主要功能也必须针对这三类主要角色进行相对应的设计。
第二章 Servlet简介
1. 什么是Servlet
Servlet(Java服务器小程序)是用Java编写的服务器端程序,是由服务器端调用和执行的、按
照Servlet自身规范编写的Java类。Servlet可以看成是Java编写的CGI,但是它的功能和性能比CGI更加强大。
Servlet是使用Java Servlet应用程序设计接口(API)及相关类和方法的Java程序。除了Java Servlet API,Servlet还可以用于扩展和添加到API的Java类软件包。它最常见的用途是扩展Web服务器,提供非常安全的、可移植的、易于使用的CGI替代品。它是一种动态加载的模块,为来自Web服务器的请求提供服务。它完全运行在Java虚拟机上。由于它在服务器端运行,因此它不依赖于浏览器的兼容性。
2. Servlet技术的特点
Servlet是一个Java的类,能够实现除了图形界面外的Java的所有功能,总的来说,它有以下优势:
1、可移植性 它可以在不同的操作系统平台和不同的应用服务器平台下移植。
2、功能强大 可以使用Java API核心的所有功能。
3、安全 有几个不同的层次为Servlet的安全提供了保障。
4、简洁 Servlet代码面向对象,在封闭方面具有先天的优势。
5、集成 Servlet和服务器紧密集成,它们可以密切合作完成特定的任务。
6、模块化 第一个Servlet可以执行一个特定的任务,并且可以将它们并在一起工作。
7、扩展性 Servlet的接口设计得非常简单,使它具有很强的扩展性。
8、高效耐久 Servlet一旦载入,它就驻留在内存中,这样加快了响应的速度。
3. Servlet的生命周期
Servlet部署在容器里,它的生命周期由容器管理,一般可概括为以下几个步骤:
1、装载Servlet 这项操作一般是动态执行的。
2、servlet容器创建servlet的一个实例。
3、容器调用该实例的init()方法。
4、服务 如果容器对该servlet有请求,则调用此实例的service()方法。
5、销毁 通过调用Servlet的destory()方法销毁Servlet。
第三章 JSP技术概述
1. JSP技术的产生背景
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,该技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。 JSP规范是Web服务器、应用服务器、交易系统、以及开发工具供应商间广泛合作的结果。在传统的网页HTML文件(*htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。由于JSP构建在Servlet上,所以它有Servlet所有强大的功能。JSP基于强大的Java语言,具有良好的伸缩性,与Java Enterprise API紧密地集成在一起,在网络数据库应用开发领域具有得天独厚的优势。从JSP这几年的发展来看,JSP已经取得了巨大的成功,它通过和EJB等J2EE组件进行集成,可以编写出具有大的伸缩性、高负载的企业级应用,它从多个方面加速了动态Web应用页面的开发[2]。
2. JSP技术的优势和弱势
2.1 JSP技术的优势
1、一次编写,到处运行。
2、系统的多平台支持。
3、强大的可伸缩性。
4、多样化和功能强大的开发工具支持。
2.2 JSP技术的弱势
1、跨平台的功能和极度的伸缩能力,极大地增加了产品的复杂性。
2、它需要一定的硬盘空间来存储一系列的.Java文件、.class文件及对应的版本文件。
2.3 JSP内置对象
JSP包括九种内置对象:request对象、response对象、pageContext对象、Session对象、application对象、out对象、config对象、page对象以及exception对象,其中通过application对象和session对象可以实现不同页面间的数据共享。
3. JSP的工作原理
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。
第四章 Struts概述
1. Struts的由来和发展
Struts 框架工具是 Apache 基金会 Jakarta 项目中推出的一个子项目。 Struts 在英文中是支架、支撑的意思,这也体现出 Struts 在开发 Web 应用程序过程所起到的重要作用, Struts 为 Web 应用提供了通用的框架,让开发人员可以把主要精力集中在如何解决实际业务问题上,与此同时 Struts 框架也允许开发人员根据实际需要进行扩展和定制,从而可以更好的适应用户的需求。采用 Struts 可以简化遵循 MVC 设计模式的 Web 应用的开发工作,很好地实现代码重用,使开发人员从一些繁琐的工作中解脱出来,快速开发能够充分发挥 JSP/Servlet 优点、并具有强可扩展性的 Web 应用。总之, Struts 的出现使得 Web 应用的开发过程大大简化,从而能够缩短开发周期、提高开发效率。
1.1 Struts的MVC模式简介
模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。
1、模型(Model)
模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.
2、视图(View)
视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。
3、控制器(controller)
控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。
MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。尽管MVC设计模式很早就提出,但由于缺乏相关支持,在Web开发中引入MVC却相当困难,直到基于J2EE的JSP Model 2问世时才得以改观。下面对JSP Model 1 与 JSP Model 2进行简单介绍。
JSP Model 1(JSP+JavaBean)的数据传递关系
JSP Model 2(JSP+JavaBean+Servlet) 的数据传递关系
比较两种模式,我们不难发现JSP Model 2显然比JSP Model 1层次关系更加清楚,开发的页面也更易于维护。在这种模式中,各组件的分工关系非常明确,JSP技术用于显示,充当了视图的角色,Servlet用于执行业务逻辑,它相当于控制器的角色,JavaBean组件用于表示数据,相当于模型的角色。尽管如此,JSP Model 2仍不够好,它容易使系统出现多个Controller,并且对页面导航的处理比较复杂。Struts就是在JSP Model 2的基础上实现的一个MVC架构。它只有一个中心控制器,他采用XML定制转向的URL。采用Action来处理逻辑,是对JSP Model 2的一个极大改进[3]。
2. Struts的优缺点
优点:Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,使开发者能更深入的了解其内部实现机制,这是它的一大优点。 除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率;而页面导航则使系统的脉络更加清晰,通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处‘尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
缺点:Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。 Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。 Struts从产生到现在还不到半年,但已逐步越来越多运用于商业软件。虽然它现在还有不少缺点,但它是一种非常优秀的J2EE MVC实现方式。
3. Struts的工作流程
在WEB启动时就会中载并初始化ActionServlet。ActionServlet从struts-config.xml
文件中读取配置信息,把它们存放到各种配置对象中。
当ActionServlet接收到一个客户请求时,它的执行过程大致如下:
1、检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效。
2、如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交表单数据保存到
ActionForm对象中。
3、根据配置住处决定是否需要表单验证,如果需要验证,就调用ActionForm扔validate()方法。
4、如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的
ActionError对象,就表示表单验证成功。
5、ActionServlet根据ActionMapping实例包含的映射住处决定将请求转发给哪个Action。如果相应
的Action 实例不存在,就先创建这个实例,然后调用Action的execrte()方法。
6、Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给
ActionForward对象指向的JSP组件。
7、ActionForward对象指向的JSP组件生成动态网页,返回给客户[4]。
下图是Struts的工作流程,所有的请求都提交给ActionServlet
第五章 Hibernate数据库持久化技术
1. Hibernate简介
Hibernate是一个面向Java环境的对象/关系数据库映射工具。它是使用GNU宽通用公共许可证发行的自由、开源的软件,它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。
Hibernate不仅仅管理Java类到数据库表的映射(包括Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。
Hibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑。Hibernate可能不是最好的解决方案,但对于那些在基于Java的中间层应用中实现面向对象的业务模型和商业逻辑的应用Hibernate是最有用的。
- Hibernate的工作流程
在Java应用中使用Hibernate,大致包括以下步骤:
1、创建Hibernate配置文件。
2、创建持久类。
3、创建对象-关系-映射文件。
4、通过Hibernate API编写访问数据库的代码[5]。
第六章 开发环境
1. Eclipse开发工具
Eclipse是目前主流的Web应用程序开发工具之一,它是一个开放源代码的、与NetBeans、Sun ONE Studio和Borland Jbuilder类似的一种基于Java的整合型可扩展开发平台,也是目前最著名的开源项目之一。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。它将包括Spring、Struts、Hibernate等在内主流的开发框架以插件的形式嵌入其中,大大减少了程序开发人员的工作量。根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。
尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C++、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。此外, Eclipse还支持目前流行的多种数据库管理软件,如SQL、Oracle等,是一个功能强大,不可多得的集成开发工具。由于其开放源码的特性,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。目前最新且功能较为稳定的版本是Eclipse 3.3,插件版本是MyEclipse 6.0.1。
2. Tomcat服务器
2.1 Tomcat的产生和发展
Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet, 这样Tomcat就诞生了。Tomcat是jakarta项目中的一个重要的子项目,又是sun公司官方推荐的servlet和jsp容器,因为其技术先进、性能稳定,也受到其越来越多的软件公司和开发人员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。其次,Tomcat是完全免费的软件,任何人都可以从互联网上自由地下载。
2.2 在Tomcat中部署Web应用程序
在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。
3. SQL Server 数据库
SQL Server是目前主流的数据库软件之一,作为系统的后台服务,主要用来保存系统各类信息,通过数据库表的有效管理可以实现数据的永久存储,并可以通过特定的SQL语句对保存在其中的数据进行一系列操作,如查询、更新、删除、添加等等。
第七章 基于Web的教学管理系统详细设计
1. 系统功能设计
基于Web的教学管理系统主要是实现网上选课、信息查询、个人信息修改等功能的系统。根据教学管理系统的基本需求和不同角色使用系统的权限不同,设定本系统的具体功能如下:
1、管理员功能:实现学生信息查询、教师信息查询、添加或删除学生、添加或删除教师、留言管理、公告管理、课程信息录入及修改等功能。
2、教师功能:实现学生成绩录入及修改、个人信息查询及修改、选择选课的学生、网上留言和查看公告等功能。
3、学生功能:实现网上选课、成绩查询、个人信息查询及修改、网上留言及查看公告等功能。
2. 系统功能模块
系统功能模块所下如所示:
3. 数据库设计与实现
3.1 数据库功能设计
依据教学管理系统的处理需求,对数据库表的设计及功能如下:
- 学生个人信息表:用于存放学生的基本信息。
- 教师个人信息表:用于存放教师的基本信息。
- 课程信息表:用于存放课程的基本信息。
- 学生成绩表:用于存放学生的成绩纪录。
- 选课情况表:用于存入学生的选课纪录。
- 留言信息表:用于存放所有人的留言纪录。
3.2 数据库概念结构设计
1、实体及其联系图:
2、系统流程图:
3.3 数据库逻辑结构设计
根据上面的E-R图,建立六张数据库表,其结构如下所示:
学生个人信息表
字段名 | 数据类型 | 是否为空 | 说 明 |
number | varchar(20) | not null | 学号(主码) |
name | varchar(20) | not null | 姓名 |
sex | varchar(5) | not null | 性别 |
age | bigint | not null | 年龄 |
department | varchar(50) | not null | 专业 |
college | varchar(50) | not null | 学院 |
phone | varchar(20) | not null | 电话 |
address | varchar(50) | not null | 地址 |
inTime | varchar(50) | not null | 入学时间 |
outTime | varchar(50) | not null | 毕业时间 |
password | varchar(20) | not null | 密码 |
教师个人信息表
字段名 | 数据类型 | 是否为空 | 说 明 |
number | varchar(20) | not null | 职工号(主码) |
name | varchar(20) | not null | 姓名 |
sex | varchar(5) | not null | 性别 |
age | bigint | not null | 年龄 |
department | varchar(50) | not null | 部门 |
post | varchar(20) | not null | 职称 |
remark | varchar(100) | not null | 备注 |
password | varchar(20) | not null | 密码 |
课程信息表
字段名 | 数据类型 | 是否为空 | 说 明 |
number | varchar(20) | not null | 课程号(主码) |
name | varchar(20) | not null | 课程名 |
credit | bigint | not null | 学分 |
teacher | varchar(20) | not null | 授课老师 |
time | varchar(50) | not null | 上课时间 |
address | varchar(50) | not null | 上课地点 |
type | varchar(50) | not null | 课程类型 |
学生成绩表
字段名 | 数据类型 | 是否为空 | 说 明 |
snumber | varchar(20) | not null | 学生学号(外码) |
cnumber | varchar(20) | not null | 课程号(外码) |
year | varchar(50) | not null | 学年 |
term | bigint | not null | 学期 |
grade | float | not null | 成绩 |
chongXiu | varchar(10) | not null | 重修标志 |
选课情况表
字段名 | 数据类型 | 是否为空 | 说 明 |
sno | varchar(20) | not null | 学生学号 |
cno | varchar(20) | not null | 课程号 |
name | varchar(20) | not null | 课程名称 |
credit | bigint | not null | 课程学分 |
teacher | varchar(20) | not null | 授课老师 |
time | varchar(50) | not null | 上课时间 |
address | varchar(50) | not null | 上课地点 |
type | varchar(50) | not null | 课程类型 |
selected | varchar(20) | not null | 选课标志 |
留言信息表
字段名 | 数据类型 | 是否为空 | 说 明 |
title | varchar(100) | not null | 主题 |
name | varchar(20) | not null | 留言人 |
| varchar(50) | null | 留言人email |
time | varchar(50) | not null | 留言时间 |
content | varchar(2000) | not null | 留言内容 |
4. 业务逻辑层各Bean功能
以下简单介绍一下一些主要的JavaBean及其相关方法。
1、Course.java:
public Collection queryOperator(String hql):封装了查询的方法。
public Course getCourse(String id):返回指定id的课程。
public static void addCourse(CourseForm course):添加一门新的课程。
public static void deleteCourse(String id):删除指定id的课程。
public Collection getCourses():返回所有课程信息。
public void changeCourseInfo(String id,Course cour):修改指定课程的信息
2、Grade.java:
public Collection queryOperator(String hql):封装了查询的方法。
public void addGrade(GradeForm grade):添加一条成绩纪录。
public Collection getAllGrades(String sno):返回指定学生的所有成绩纪录。
public Collection getYearGrades(String sno,String year):返回指定学生在指定学年的成绩。
public Collection getTermGrades(String sno,String year,Long term):返回指定学生在指定学期的成绩。
public static void changeGrade(String sno,String cno,String grade):修改指定学生指定课程的成绩。
3、Sc.java:
public Collection queryOperator(String hql):封装了查询的方法。
public static Sc getSc(String sno,String cno):返回一条指定的选课纪录。
public static void addSc(Sc sc):增加一条选课纪录。
public static void deleteSc(String sno,String cno):删除一条选课纪录。
public Collection getScs(String sno):返回指定学生所选修的所有课程。
public Collection getStudents(String cno):返回选修指定课程的所有学生。
public Collection getTeaScs(String teaName):返回指定教师开设的选修课。
public Collection getSelectedStudents(String cno):返回选修指定课程并且已经入选的学生。
public void f_tSc(String sno,String cno):选择指定学生选修指定课程(即让其从未选中状态变成选中状态)。
public void t_fSc(String sno,String cno):取消指定学生选修指定课程(即让其从选中状态变成未选中状态)。
4、Message.java:
public void addMessage(MessageForm message):添加留言。
public void deleteMessage(String title,String name,String email,String time,String content):删除留言。
public int getMessageCount():返回留言总数。
public Page listDate(String page_num):获得指定页面的数据,并封装在Page中返回。
public Vector getResult():返回查询结果。
5、Student.java:
public Collection queryOperator(String hql):封装了查询的方法。
public static void addStudent(Student student):添加一个学生。
public static void deleteStudent(String id):删除指定id的学生。
public static Student getStudent(String id):返回指定id的学生。
public boolean isStudent(LoginForm student):验证学生用户的登陆信息。
public Collection getInformation(String id):返回指定学号的学生信息。
public void chahgeStuInfo(StuInfoForm student):修改个人信息。
6、Teacher.java:
public Collection queryOperator(String hql):封装了查询的方法。
public static void addTeacher(Teacher teacher):添加一个教师。
public static void deleteTeacher(String id):删除指定id的教师。
public static Teacher getTeacher(String id):返回指定职工号的教师。
public boolean isTeacher(LoginForm teacher):验证老师用户的登陆信息。
public Collection getInformation(String id):返回指定职工号的教师信息。
public void chahgeTeaInfo(TeaInfoForm teacher):修改个人信息。
5. 控制处理层
系统的流程控制主要由Servlet与Action来共同完成,当用户提交了相关信息,便把这些信息发送到Servlet或Action中,Servlet或Action再调用对应的JavaBean的相关功能执行用户期望的操作,之后再跳转到相应的页面,并返回操作后的结果。这一过程对用户来说是透明的,用户仅能看到操作后返回的页面信息,对于整个系统的流程控制完全可以不必了解。
结论
通过Eclipse开发工具与JSP开发语言的结合,Struts框架和Hibernate技术的整合应用,能很好
的建设一个教学管理网站,实现该网站所应有的功能模块。在此基础上经过两个多月的设计和开发,教学管理系统基本开发完毕,其功能基本符合要求,所有的模块的功能也都已经基本完成。在这次的设计过程中虽然碰到了许多难题,但通过自己的努力以及老师、同学的帮助也都一一克服了。通过此次毕业设计,不仅巩固大学四年所学的专业知识,更在此基础上通过自学了解和掌握了一些新的开发方法和编程技巧,对自己是一个很大的提高。
参考文献
[1] 刘晓华,张健,周慧贞.JSP应用开发详解(第三版).北京:电子工业出版社, 2007.1,8-9
[2] 赵强.精通JSP编程.北京:电子工业出版社, 2006.4,21-22
[3] 赵强.精通Struts基于MVC的Java Web设计与开发.北京:电子工业出版社, 2004.8,114-121
[4] 李刚. 整合STRUTS+HIBERNATE+SPRING应用开发详解.北京: 清华大学出版社, 2007.11,
45-121
[5] 夏晰,曹晓钢,唐勇.深入浅出Hibernate.北京:电子工业出版社, 2005.6,173-188