资源描述
吕梁学院计算机系毕业论文
基于MVC模式的毕业生信息网站的
开发与应用
摘 要
本课题设计的毕业生信息网站是基于JSP技术的B/S架构程序,具有B/S程序所有优点的同时,引入大量JavaScript以改善用户操作简便性与数据有效性。
本课题根据吕梁高等专科教务处毕业生管理实际需求,有毕业生信息,论坛交流,相册欣赏,后台管理,建议专区五大模块。同时,根据实际情况下网站使用人员等级不同,对用户和游客进行了权限控制。使得程序在安全性,可靠性方面有了很好保障。
本课题的特色在于采用了目前流行的MVC开发模式进行开发,这样网站维护的工作量就大大降低,同时也最大程度上提高了程序的性能与功能。
本课题所设计的毕业生信息网站,是模拟真实业务流程而编写的。虽然在数据库采用,代码规范性方面有待提高,但整体而言,能基本满足真实业务流程,具有一定的真实性和使用价值。
关键字:B/S 架构, MVC模式,JSP, Access
目 录
摘 要 1
1 开发背景及可行性研究 3
1.1 开发背景 3
1.2 可行性研究 3
1.2.1 技术可行性 4
1.2.2 经济可行性 4
1.1.3 社会可行性 4
2 系统设计环境及工具软件介绍 5
2.1 MyEclipse简介 5
2.2 Photoshop简介 6
2.3 Macromedia Dreamweaver 8简介 7
2.4 Tomcat简介 7
2.5 MVC模式简介 8
2.6 JSP技术简介 10
2.7 Access 简介 11
3 系统分析 13
3.1 数据需求分析 13
3.2 数据表结构设计 13
3.3 功能需求分析 15
4 系统总体设计 16
4.1 总体框架 16
4.2 系统主界面 17
4.3 网站特点 18
5 系统设计与实现 19
5.1 数据库连接 19
5.2 用户注册 20
5 . 3 毕业生信息实现 26
5 . 4 论坛实现 27
5 . 5 相册的实现 28
5 . 6 后台管理的实现 29
6 结束语 32
6.1 存在的问题 32
6.2 对未来的展望 32
致 谢 33
参考文献 34
1 开发背景及可行性研究
1.1 开发背景
随着网络技术和软件技术的飞速发展,特别是Internet/Intranet的出现及其相关技术的迅速发展,信息革命带来了全球范围市场竞争的日益加剧,对传统的办公教学和生活方式产生了巨大的冲击。办公自动化就是采用Internet/Intranet技术,基于工作流的概念,使内部人员方便快捷的共享信息,高效的协同工作;改变过去复杂,低效的手工办公方式,实现迅速,全方位的信息采集,信息处理。校园网的建设,为开放式的学籍管理系统提供了技术保障。
毕业生信息网站是学校日常工作中不可或缺的重要部分,它对于学校的辅导员和管理者来说都至关重要。 毕业生信息网站的对象是一个学院或整个学校中每一位学生的基本信息,这些信息是在不断的变化之中。因此,学籍管理系统应该能为使用者提供充足的信息和快捷的查询手段。同时,系领导还要为本学校,上级部门提供准确的毕业生就业统计数据。由于人员众多,数据源复杂,统计管理工作困难。以往每做一项工作,都需要花费很多的精力和时间。统计出来的数据往往又不够准确。传统的人工管理方式存有诸如效率低,保密性差,查找,更新,维护困难等各种各样的缺点。而毕业生信息网站作为计算机的一种应用,使用计算机对毕业生信息进行管理,会给应用者带来很多方便,例如检索迅速,查找方便,可靠性高,存储量大,保密性好,寿命长,成本低等。这些优点能够极大地提高毕业生信息管理的效率,同时,这也是学校的信息化,正规化管理以及与先进管理技术接轨的重要条件。因此,将毕业生信息的手工操作转换成为用计算机处理显得非常有必要。
1.2 可行性研究
可行性研究的目的是用最小的代价在尽可能短的时间里确定问题是否能解决,我们主要从下面三个方面考虑:
1.2.1 技术可行性
开发该网站的基本要求与功能是实现毕业学生信息数据包括与学生有关的数据的管理与操作处理。网站的基本数据流动为用户注册信息的输入,毕业学生信息,论坛信息,相册信息的输入,以及有关用户提出的对学生信息等等的查询要求所产生的数据输出。 这对于熟悉JSP的人来是说并不是件难事,并且根据功能分析,代码量并不大,一个人完全可以在较短时间内完成。所以从技术方面来说是可行的。
1.2.2 经济可行性
由于本网站是一个较小型的网站,由我一个人进行开发,所以从人力、财力、物力方面来说都是可行的。
1.1.3 社会可行性
运用计算机网络来管理毕业生信息,仅仅是由原来的学校去老师去调查变为每个毕业生参与,并且为查找、查询带来极大方便,其它工作模式没有任何的改变,不涉及任何侵犯、妨碍等责任问题。
2 系统设计环境及工具软件介绍
现在市场上很多管理系统的开发工具,如Delphi、ASP、JSP等,但因为本系统功能较为简单,并且考虑到使用单位的实际情况,数据容量不会很大,即使考虑发展,也不过万余人,用VF实现起来较为方便,因此采用了关系型数据库中较小的DBF格式数据表,而没有使用诸如SQL、Oracle之类的中大型数据库。
编写一个软件不仅仅要求其能完成既定的功能,并且还要求界面友好,一个漂亮的画面无疑会给操作者一个好的操作心情和操作欲望,在界面设计中我用了一些自我感觉较好的图片。这些图片都是经过笔者精心处理过的,在这方面Photoshop无疑帮了我不少的忙。
2.1 MyEclipse简介
Genuitec发布了MyEclipse Enterprise Workbench 6.0,更智能、更快捷、更简单和更便宜的J2EE工具的新版本的诞生。它的价格对于个人和企业开发人员来说都是非常有吸引力的。这是J2EE IDE市场一个重量级的选手。通过增加UML双向建模工具、WYSIWYG的JSP/Strutsdesigner、可视化的Hibernate/ORM工具、Spring和Web services支持,以及新的Oracle数据库开发,MyEclipse 6.0继续为业界提供全面的产品。
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, JavaScript, SQL, Hibernate。
在结构上,MyEclipse的特征可以被分为7类:
1. J2EE模型
2. WEB开发工具
3. EJB开发工具
4. 应用程序服务器的连接器
5. J2EE项目部署服务
6. 数据库服务
7. MyEclipse整合帮助
对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。
2.2 Photoshop简介
在众多图像处理软件中,Adobe公司推出的专门用于图形、图像处理的软件Photoshop以其强大的功能、集成度高、适用面广和操作简便而著称于世。它不仅提供强大的绘图工具,可以直接绘制艺术图形,还能直接从扫描仪、数码相机等设备采集图像,并对它们自发进行修改、修复,并调整图像的色彩、亮度,改变图像的大小,而且还可以对多幅图像进行合并增加特殊效果,使现实生活中很难遇见的景像十分逼真地展现;同时可以改变图像的颜色模式,并能在图像中制作艺术文字等。
Photoshop的专长在于图像处理,而不是图形创作。目前,ADOBE Photoshop6.0已成为出版界中图象处理的专业标准。 Photoshop就开始悄悄地向Web靠拢,更适合于网络。
Photoshop是平面图像处理业界霸主Adobe公司推出的跨越PC和MAC两界首屈一指的大型图像处理软件。它功能强大,操作界面友好,得到了广大第三方开发厂家的支持,从而也赢得了众多的用户的青睐。
Adobe Photoshop最初的程序是由Mchigan大学的研究生Thomas创建,后经Knoll兄弟以及Adobe公司程序员的努力Adobe Photoshop产生巨大的转变,一举成为优秀的平面设计编辑软件。它的诞生可以说掀起了图象出版业的革命。
Adobe产品的升级更新速度并不快,但每一次推出新版总会有令人惊喜的重大革新。Photoshop从当年名噪一时的图形处理新秀经过不断升级,功能越来越强大,处理领域也越来越宽广,逐渐建立了图像处理的霸主地位。
Photoshop支持众多的图像格式,对图像的常见操作和变换做到了非常精细的程度,使得任何一款同类软件都无法望其颈背;它拥有异常丰富的插件(在Photoshop中叫滤镜),熟练后您自然能体会到“只有想不到,没有做不到”的境界。
而这一切,Photoshop都为我们提供了相当简捷和自由的操作环境,从而使我们的工作游刃有余。从某种程度上来讲,Photoshop本身就是一件经过精心雕琢的艺术品,更像为您度身定做的衣服,刚开始使用不久就会觉得的倍感亲切。
当然,简捷并不意味着傻瓜化,自由也并非随心所欲,Photoshop仍然是一款大型处理软件,想要用好它更不会在朝夕之间,只有长时间的学习和实际操作我们才能充分贴近它。
2.3 Macromedia Dreamweaver 8简介
Macromedia Dreamweaver 8 是一个专业的可视化编辑器,主要用于构架WEB应用。它还是一种可以满足多层次要求,功能强大的可视化专业级网页设计工具。为了使专业设计者使用起来得心应手,Dreamweaver采用了Roundtrip HTML技术。这项技术可以使得网页在Dreamweaver和源代码编辑器之间进行转换时保持HTML句法及结构不变以利于作者进行修改。基于事件的交互性控制以及类似Director的时问轴控制于身的Dreamweaver,自然就成为了新一代网页设计工具的首选,通过Dreamweaver可以轻易制作出复杂的交互式目极富动感的网页,Dreamweaver最具挑战性和生命力的是它的开放式设计这项设计使得任何人都以轻易扩展Dreamweaver的功能。
2.4 Tomcat简介
Tomcat是一个JSP/Servlet引擎,是Sun公司的JSP/ Servlet的官方实现。Tomcat也是在SUN的JSWDK的基础上发展起来的另一个优秀的JSP服务器,它不但支持Servlet,而且还提供了Web服务器的功能。作为一个开放源码的软件,Tomcat有着自己独特的优势,可以和目前大部分的主流服务器一起工作,而且有着相当高的运行率。
2.5 MVC模式简介
MVC是一种目前广泛流行的软件设计模式。近来,随着J2EE的成熟,它正在成为在J2EE平台上推荐的一种设计模型。MVC模式也逐渐在PHP和ColdFusion开发者中运用,并有增长趋势。随着网络应用的快速增加,实践已经证明MVC模式对于Web应用的开发无疑是一种非常先进的设计思想,无论选择哪种语言,无论应用多复杂,它都能为理解分析应用模型提供最基本的分析方法,为构造产品提供清晰的设计框架,为软件工程提供规范的依据。
什么是MVC设计模式
MVC英文即Model-View-Controller,即把一个应用的输入,处理,输出流程按照Model,View,Controller的方式进行分离,这样一个应用被分成三个层--模型层,视图层,控制层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML,XML和Applet 。在本文中,FLASH代替了我们所熟悉的传统的前台展示。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。
控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
什么是MVC设计模式的优点
MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。
首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。按MVC设计模式,一个订单模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。
其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。
再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。
控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。
最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化,工具化产生管理程序代码:
2-1 MVC模型图
2-2 MVC 应用中的程序流
2.6 JSP技术简介
在这里本人要用到的技术是JSP(Java Server Pages),它与与ASP很相似, 两者最主要的区别在于在JSP中〈% 和% 〉之间嵌入的代码只能是Java, 而不是VBScript和JavaScript这类脚本语言, 按照SUN公司的说法,JSP能够适应市场上85%的服务器产品, 如Apache Webserver以及Microsoft的IIS等。不过在IIS上运行JSP需要插件支持, 因此目前热衷与用JSP代替ASP的开发者还不多。然而JSP所带来的丰富的特性以及强大的发展潜力意味着JSP必将成为WEB编程领域的强大的竞争者。
JSP 基本上是使用Java 编程, Java 具有坚固,安全,易于使用,易于理解和可从网络上自动下载等特性, 是编写数据库与网络应用程序的杰出语言。与C++和VB这类语言相比, Java程序运行速度慢是其最大的缺陷, 但是许多软件开发者都因其平台无关性而愿意付出这种代价。Java 程序的编译结果是一种通用的字节码, 这些字节码由平台相关的Java虚拟机(JVM )“ 翻译”执行。字节码可以在Windows,Unix,Linux 以及所有Java兼容的OS之间移植而无须任何额外的修改工作, 只要代码中不含有依赖于特定平台的内容即可。服务器在处理JSP页面时会先把它们转换成Servlet(一种服务器端的Java程序,它能够通过HTTP协议响应浏览器请求并作出答应)。JSP页面被转换成Servlet后,原来的整个文档被转换成Java代码, 即不存在〈% 和% 〉标记,当用户并发请求JSP页面时,系统通过多个线程来响应这些请求, 与CGI为每个用户请求创建完整的进程相比, 用线程响应用户的请求具有高得多的效率。
我们一般通过ADO配置和使用ODBC来连接数据库,而Java环境下一般使用的是JDBC(Java Database Connectivity),JDBC为数据库开发人员提供了一个标准的API, 使他们能够用纯Java API来编写数据库应用程序。有了JDBC,向各种关系数据库发送SQL语句就是一件很容易的事。必须存在适合于目标数据库的JDBC驱动程序。JDBC驱动程序是一个数据库与Java之间的接口,用于为Java应用程序连接数据库和执行查询提供统一的方法。与ODBC不同的是JDBC一般不使用服务器上创建的数据源。JSP页面或Java Bean只需JSBC驱动程序即可连接到数据库如果某个数据库没有相应的JDBC驱动程序,却有合适的ODBC驱动程序, 那么可以使用一种桥接程序连接JDBC驱动程序和ODBC驱动程序来实现对数据库的操作。SUN公司的JD2BC―ODBC桥接驱动程序是随着它的免费Java编译器一起提供的。
正如充满活力的Java 语言一样,JSP在WEB应用开发领域展示了广阔的前景。JSP出现于ASP之后, 所以它继承了ASP的许多优良特性。JSP使用Java语言编程,提供了更多编程上的支持。JSP继承了Java所拥有的跨平台支持这一特性,由于它的平台无关性,所以它更是能够稳定的运行于各种流行的操作系统上。
2.7 Access 简介
Access 是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、 模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理 系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。
Access是一种关系型数据库管理系统,其主要特点如下:
(1) 存储方式单
(2) 面向对象
(3) 界面友好、易操作
(4) 集成环境、处理多种数据信息
(5) Access支持ODBC(开发数据库互连,Open Data Base Connectivity),利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、 Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。
3 系统分析
系统分析(逻辑分析)是管理信息系统开发的关键环节,要求在系统调查的基础上,对新系统的功能进行细致的分析,并建立一个新系统的逻辑模型。
毕业生信息网站要求原始数据库保持稳定,采用模块设计思想,大大提高了设计的效率,而且最大限度的减少了不必要的错误。
3.1 数据需求分析
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。进行数据库设计,首先要做数据需求分析,数据需求分析是数据库结构设计的第一个阶段,是非常重要的一个环节。这个阶段主要是确定基本数据,数据结构及数据处理的流程,组成一份详细的数据字典,为以后的设计打下基础。
3.2 数据表结构设计
一般来说,数据库可按下列步骤进行设计:(1)确定需要的表;(2)确定所需字段;(3)确定表之间的关系。
虽然sql server 2000应该是数据库服务器的首选,但作为模拟环境,本文选用了Microsoft ACCESS 2003作为数据库,选用 Microsoft ACCESS 2003数据库的原因是:便于本机调试,易于向更高级的数据库服务器拓展,数据库原理相同,不影响技术的难易程度。本文有四个表:
3-1 用户表
3-2毕业生信息表
3-3 论坛主题表
3-4 论坛回复表
3.3 功能需求分析
根据用户要求及工作流程,结合网站的可操作性,毕业生信息网站应提供以下功能:
1、用户注册;
2、毕业生基本信息查询;
3、发表贴子(提出问题),查看留言,回复留言;
4、上传好看的图片,链接校内的新闻;
5、后台管理,对本网站的所有数据进行增加,修改,删除;
6、有一定的容错能力。
4 系统总体设计
本网站主要做了以下几个模块:(1)毕业生信息模块;(2)相册模块;(3)论坛交流模块;(4)后台管理模块;(5)建议专区模块。
4.1 总体框架
在网站主要的五个模块中,查看毕业生详细信息,修改信息,创建主题,发表留言等都要是注册后才能进行的操作。后台管理只有管理员登录后,才能对数据进行管理。
网站功能模块结构如图4-1所示:
用 户
注册成功
登录
会员
查看所有毕业信息
修改本人信息
上传本人信息
创建论坛主题
发表留言
上传好看图片
游客
查看毕业生姓名
查看论坛留言
4-1 网站功能模块
后台管理
管理登录
用户管理
信息管理
论坛管理
修改
删除
修改
删除
修改
删除
4-2后台管理
4.2 系统主界面
用户界面是用户与应用程序进行信息交流、交互式操作的主要地方。一个应用程序的实用性不仅仅取决于它的功能,在很大程序上依赖于它的界面,因为对用户而言,界面就是应用程序,用户感觉不到代码在计算机内部的动作。
网页追求的是:整洁才是美。
4-3 首页
4.3 网站特点
本系统短小精干,易于操作,主要有以下几个特点:
1、界面友好。任何一个优秀的网站不仅要有完善的功能,而且还要有美观友好的用户界面。在应件程序的启动时我选用了学校标志性建筑的图案,并加以艺术加工,使使用者感觉到一种亲和力,第一感觉就能接受它。
2、可维护性较强。后台管理提供完善的数据管理各项操作。
3、具有保密性。为增强应用程序的保密性,本系统采用了使用密码的方式登录,并用在进入系统后随时可以修改登录密码。因密码是保存在内存变量文件之中的,为了防止个别较高水平的人使用查看内存变量的方式窃取密码,作者采用了验证码,这个验证码是随机的,而且在这验证图片有加了许多干扰线防止木马检测到它的值,从而达到保密的效果。
4、性能好。
本网站每个网页加入了许多合适的JavaScript对提交的表单的数据进行了验证,例如数据的长度,是否为空验证,这样经过这个页面的都是合法数据,再连接数据库进行验证,这样就有效的减少的数据库的连接,提高的服务器的性能。
5 系统设计与实现
系统模块实现是在搞清楚软件“做什么”的前提下,转换为“怎么做” ,即把“逻辑模型”转换为“物理模型” 。需要用具体的表单、控件、事件和代码来实现软件的需求。
5.1 数据库连接
本课程采用了目前流行的MVC进行开发,一个动态网站是离不开数据库的,下面就是连接数据库的JavaBean,也就是MVC中M,在本文命名为DataBaseConnection.java
package com.hua.db;
import java.sql.* ;
public class DataBaseConnection {
private String DBDRIVER="sun. jdbc. Odbc.JdbcOdbcDriver" ;
private String DBURL="jdbc:odbc:hua" ;
private String DBUSER="" ;
private String DBPASSWORD="" ;
private Connection conn=null ;
public DataBaseConnection()
{
try
{
//加载驱动
Class. forName(DBDRIVER) ;
this.conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
}
catch (Exception e)
{
System.out.println("连接失败!") ;
}
}
public Connection getConnection()
{
return this.conn ;
}
public void close()
{
try
{
this。conn。close() ;
}
catch (Exception e)
{
System.out.println("关闭数据库失败!") ;
}
}
}
5.2 用户注册
有了数据库连接,就要对用户注册实现,用户注册页面如下:
5-1用户注册
MVC的实现是建立在DAO(Data Access Object)基础上的,DAO是以VO为柄实现对表操作,增加、修改、删除.VO是一个对象,本文建了用户的VO,
即User.java
package com.hua.vo;
public class User {
private String username ;
private String password ;
private String address ;
private String phone ;
private String email ;
public void setUsername(String username)
{
this.username=username ;
}
public void setPassword(String password)
{
this.password=password ;
}
public void setAddress(String address)
{
this.address=address ;
}
public void setPhone(String phone)
{
this.phone=phone ;
}
public void setEmail(String email)
{
this.email=email ;
}
public String getUsername()
{
return this.username ;
}
public String getPassword()
{
return this.password ;
}
public String getAddress()
{
return this.address ;
}
public String getPhone()
{
return this.phone ;
}
public String getEmail()
{
return this.email ;
}
}
有了VO,就应有相应的DAO类
即UserDAO.java
package com.hua.dao;
import com.hua.vo.* ;
public interface UserDAO {
//注册后,增加用户
public void insert(User uv) throws Exception ;
//验证是否登录
public boolean isLogin(User uv) throws Exception ;
}
有了DAO接口,就要实现这接口:UserDAOImpl.java
package com.hua.daoimpl;
import java.sql.* ;
import com.hua.vo.* ;
import com.hua.db.* ;
import com.hua.dao.* ;
public class UserDAOImpl implements UserDAO{
//注册,用户添加
public void insert(User uv) throws Exception
{
String sql="INSERT INTO user(username,password,address,phone,email) VALUES(?,?,?,?,?)" ;
PreparedStatement pstmt=null ;
DataBaseConnection dbc=new DataBaseConnection() ;
try
{
pstmt=dbc.getConnection().prepareStatement(sql) ;
pstmt.setString(1,uv.getUsername()) ;
pstmt.setString(2,uv.getPassword()) ;
pstmt.setString(3,uv.getAddress()) ;
pstmt.setString(4,uv.getPhone()) ;
pstmt.setString(5,uv.getEmail()) ;
pstmt.executeUpdate() ;
pstmt.close() ;
}
catch (Exception e)
{
throw new Exception("增加失败!") ;
}
finally
{
dbc.close() ;
}
}
//验证是否登录
public boolean isLogin(User uv) throws Exception
{
boolean flag=false ;
String sql="SELECT * FROM user WHERE username=? and password=?" ;
PreparedStatement pstmt=null ;
ResultSet rs=null ;
DataBaseConnection dbc=new DataBaseConnection() ;
try
{
pstmt=dbc.getConnection().prepareStatement(sql) ;
pstmt.setString(1,uv.getUsername()) ;
pstmt.setString(2,uv.getPassword()) ;
rs=pstmt.executeQuery() ;
if(rs.next())
{
flag=true ;
}
rs.close() ;
pstmt.close() ;
}
catch (Exception e)
{
throw new Exception("增加失败!") ;
}
finally
{
dbc.close() ;
}
return flag ;
}
}
在开发中往往会引入工厂类(factory),这样就不用知道DAO实现的具体子类,只须知道父类就可以了,即DAOFactory.java
package com.hua.factory;
import com.hua.dao.* ;
import com.hua.daoimpl.* ;
public class DAOFactory {
public static UserDAO getUserDAOIntance()
{
return new UserDAOImpl() ;
}
}
万事俱备,就差引入MVC的核心Servlet类了,
RegisterServlet.java:
package com.hua.servlet;
import java.io.* ;
import java.sql.*;
import javax.servlet.* ;
import javax.servlet.http.* ;
import com.hua.vo.* ;
import com.hua.db.* ;
import com.hua.factory.* ;
public class RegisterServlet extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException
{
this.doPost(request,response) ;
}
public void doPet(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException {
String path="register.jsp";
//处理乱码问题
response.setCharacterEncoding("GB2312") ;
PrintWriter out = response.getWriter();
response.setContentType("text/html;charset=GB2312");
String password=
new String(request.getParameter("password").trim().getBytes("ISO-8859-1"));
String username=
new String(request.getParameter("username").trim().getBytes("ISO-8859-1"));
String address=
new String(request.getParameter("address").trim().getBytes("ISO-8859-1"));
String phone=
new String(request.getParameter("phone").trim().getBytes("ISO-8859-1"));
String email=
new String(request.getParameter("email").trim().getBytes("ISO-8859-1"));
//再次连接数据库主要验证用户名是否重复
String sql="SELECT * FROM user WHERE username=?" ;
PreparedStatement pstmt=null ;
ResultSet rs=null ;
DataBaseConnection dbc=new DataBaseConnection() ;
try
{
pstmt=dbc.getConnection().prepareStatement(sql) ;
pstmt.setString(1,username) ;
rs=pstmt.executeQuery() ;
if(rs.next())
{
//存在相同的用户名
out.println("<script language='javascript'>alert('该用户已经存在!');h
展开阅读全文