毕业设计JAVA学习网站的设计与实现.docx
《毕业设计JAVA学习网站的设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业设计JAVA学习网站的设计与实现.docx(34页珍藏版)》请在冰豆网上搜索。
毕业设计JAVA学习网站的设计与实现
毕业设计--JAVA学习网站的设计与实现
XX学院
毕业论文(设计)
题目 JAVA学习网站的设计与实现
院系XX学院
专业计算机科学与技术
学生姓名XX
学号
指导教师XX
职 称
二O年月日
声明
本人郑重声明:
1、持以“求实、创新”的科学精神从事研究工作。
2、本论文是我个人在导师指导下进行的研究工作和取得的研究成果。
3、本论文中除引文外,所有实验、数据和有关材料均是真实的。
4、本论文中除引文和致谢的内容外,没有抄袭其他人或其他机构已经发表或撰写过的研究成果。
5、其他同志对本研究所做的贡献均已在论文中作了声明并表示了谢意。
作者签名:
日期:
JAVA学习网站
XX
南京信息工程大学XX学院计算机科学与技术专业,南京210044
摘要:
本设计主要介绍了一个完整的Java学习网站,它包括系统概述与设计,数据库结构设计与实现,详细设计等主要部分,本系统给用户提供了一个学习Java的平台。
系统概述与设计主要包含了系统功能需求、系统结构设计和系统功能模块划分等内容。
数据库结构设计中构造出E-R图,主要完成用户管理,文章管理,用户评论,下载管理,书籍管理等功能,详细设计包含了系统各功能模块的具体实现。
关键词:
JAVA学习;上传下载;JSP;文章浏览
1.前言
Java不仅可以用来开发大型的桌面应用程序,而且特别适合于Internet的应用开发。
目前,Java语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。
Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,而且很多新的技术领域都涉及到了Java语言,因此,学习和掌握Java已成为共识,国内外许多大学已将Java语言列入了本科教学计划,IT行业对Java人才的需求正在不断的增长。
由于Java涉及的方面较多且内容较广,学习起来容易迷失方向,找不到一个正确的路线。
有鉴于此,设计了这样一个系统。
本系统为一个Java学习网站,提供了文章阅读、书籍推荐、资料下载等全方面的功能,希望可以给想学习Java的同学提供一个学习的平台,给予一定的帮助。
文章阅读模块主要提供一些从网络上收集的与Java有关的经典文章,包括对技术的理解以及学习方法的介绍等。
书籍推荐给读者介绍了学习Java的经典书籍,而资料下载则提供了课件,教学视频等各式各样学习资源的下载功能。
2.开发技术与相关工具简介
2.1JSP技术
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。
网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。
JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。
插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP与Java Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。
目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。
JSP页面由HTML代码和嵌入其中的Java代码所组成。
服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
JavaServlet 是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。
JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。
JSP可用一种简单易懂的等式表示为:
HTML+Java=JSP。
2.2MyEclipse+Eclipse简介
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。
目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。
Eclipse是一个开发源码项目,它其实是VisualAgeforJava的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。
MyEclipse,是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。
MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。
它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。
2.3Tomcat简介
Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。
Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。
实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。
这里的诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。
另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
不过,Tomcat处理静态HTML的能力不如Apache服务器。
2.4SQLServer2005数据库
SQLServer2005是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。
SQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
SQLServer2005数据引擎是本企业数据管理解决方案的核心。
此外SQLServer2005结合了分析、报表、集成和通知功能。
这使您的企业可以构建和部署经济有效的BI解决方案,帮助您的团队通过记分卡、Dashboard、Webservices和移动设备将数据应用推向业务的各个领域。
与MicrosoftVisualStudio、MicrosoftOfficeSystem以及新的开发工具包(包括BusinessIntelligenceDevelopmentStudio)的紧密集成使SQLServer2005与众不同。
无论您是开发人员、数据库管理员、信息工作者还是决策者,SQLServer2005都可以为您提供创新的解决方案,帮助您从数据中更多地获益。
3.系统概述与设计
系统采用目前较为流行的B/S架构。
整个系统采用了JSP技术,在应用服务器端使用Tomcat服务器,在数据库服务器上采用了微软的SQLServer2005。
3.1系统功能需求
用户可以分为普通用户和管理员用户两类。
普通用户拥有注册、登录、查看精品文章、评论文章、查看推荐书籍、下载资源等功能。
管理员拥有管理用户、管理文章、管理书籍、管理下载四个模块。
管理用户模块
(1)查看所有用户
(2)修改用户信息
(3)添加用户
(4)删除用户
管理文章
(1)查看所有文章信息
(2)修改文章
(3)添加文章
(4)删除文章
管理书籍
(1)查看所有书籍信息
(2)修改书籍信息
(3)添加书籍信息
(4)删除书籍信息
管理下载
(1)查看下载资料信息
(2)删除下载信息
(3)上传文件
3.2系统结构设计
根据系统功能模块的划分,系统的结构设计如图3-1所示。
图3-1 系统结构设计图
3.3系统功能模块划分
1.普通用户的权限如图3-2所示:
图3-2 普通用户权限
2.管理员用户的权限如图3-3所示:
图3-3管理员用户权限图
4.数据库结构设计与实现
4.1数据库概念结构设计
数据库在一个系统中起着十分重要的作用,数据库设计的好坏将直接影响到系统的效率和实现的效果。
本实例的实体有:
用户信息实体、文章信息实体、用户评论实体、推荐书籍实体、下载资源实体。
用户信息实体属性图如图4-1所示。
图4-1用户信息属性
文章信息实体的属性图如图4-2所示。
图4-2文章信息属性图
用户评论实体的属性图如图4-3所示:
图4-3用户评论实体的属性图
推荐书籍实体的属性图如图4-4所示:
图4-4推荐书籍实体的属性图
下载资源实体的属性图如图4-5所示:
图4-5下载资源实体的属性图
4.2数据库逻辑结构设计
数据库概念结构设计完后,现在可以将数据库概念结构转化为数据库系统所支持的实际数据模型,也就是数据库逻辑结构。
本系统使用SQLServer数据库,各个表的设计结果表4-1至表4-5所示。
每个表格表示在数据库中的一个表。
用户信息表users如表4-1所示,记录管理员和普通用户信息。
表4-1用户表(users)
列名
数据类型
允许空
说明
useId
int
用户ID
username
Varchar(20)
yes
用户名
passwd
Varchar(20)
yes
用户密码
email
Varchar(30)
yes
用户邮箱
grade
int
yes
用户级别
文章表如表4-2所示,记录文章信息。
表4-2文章表(article)
列名
数据类型
允许空
说明
id
int
文章ID
title
Varchar(50)
yes
文章标题
detail
text
yes
文章内容
评论表如表4-3所示,记录评论信息。
表4-3评论表(remark)
列名
数据类型
允许空
说明
id
int
评论ID
username
Varchar(20)
yes
评论者
content
text
yes
评论内容
articleid
int
yes
文章ID
推荐书籍表如表4-4所示,记录书籍信息。
表4-4推荐书籍表(books)
列名
数据类型
允许空
说明
bookId
int
书籍ID
bookname
Varchar(20)
yes
书籍名称
bookinfo
text
yes
书籍简介
photo
Varchar(20)
yes
书籍封面图
下载资源表如表4-5所示,记录下载资源信息。
表4-5下载资源表(resourse)
列名
数据类型
允许空
说明
id
int
资源ID
title
Varchar(50)
yes
资源标题
Link
Varchar(50)
yes
资源链接
5.组件设计
5.1数据库连接
数据库连接在ConnB.java文件中,返回一个到数据库的连接,它是一个公共类,其他类如果要连接数据库,只需要构造这个类的对象就可以了。
源代码如下所示:
publicclassConnB{
Connectionct=null;
publicConnectiongetCon(){
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//得到连接
ct=DriverManager.getConnection
("jdbc:
sqlserver:
//localhost:
1433;databaseName=user;user=sa;password=37917290;");
}catch(Exceptione){
e.printStackTrace();
}
returnct;
}
}
5.2用户Bean的编写
用户类UserBean主要负责描述用户的属性,以及这些属性的get和set方法,以下源代码中省略了部分属性的get和set方法,用户类的代码如下所示:
publicclassUserBean{
privateintuserId;
privateStringuserName;
privateStringpasswd;
privateStringemail;
privateintgrade;
publicintgetUserId(){
returnuserId;
}
...//此处代码省略
publicvoidsetGrade(intgrade){
this.grade=grade;
}
}
5.3用户相关处理Bean的编写
用户分普通用户和管理员,因此在进行用户操作时,要判断用户属于哪一种身份。
对用户的相关处理存放在UserBeanCL.java文件中。
publicclassUserBeanCL{
privateConnectionct=null;
privateStatementsm=null;
privateResultSetrs=null;
privateintpageCount=0;
privateintrowCount=0;
privateintpageSize=3;
//得到页数
publicintgetPageCount()
{
try{
ct=newConnB().getCon();
sm=ct.createStatement();
ResultSetrs=sm.executeQuery("selectcount(*)fromusers");
if(rs.next()){
rowCount=rs.getInt
(1);
}
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
}
catch(Exceptione){
e.printStackTrace();
}finally{
this.close();
}
returnpageCount;
}
通过页数返回用户的详细信息如下所示,只要输入页数,就会返回该页数应该显示内容的集合。
publicArrayListresult(intpageNow)
{
ArrayListal=newArrayList();
try{
ct=newConnB().getCon();
sm=ct.createStatement();
rs=sm.executeQuery("selecttop"+pageSize
+"*fromuserswhereuserIdnotin(selecttop"
+pageSize*(pageNow-1)+"userIdfromusers)");
while(rs.next()){
UserBeanub=newUserBean();
ub.setUserId(rs.getInt
(1));
ub.setUserName(rs.getString
(2));
ub.setPasswd(rs.getString(3));
ub.setEmail(rs.getString(4));
ub.setGrade(rs.getInt(5));
al.add(ub);//将al放到arrayList中
}
}
catch(Exceptione){
e.printStackTrace();
}
finally{
this.close();
}
returnal;
}
根据输入的用户名、密码和级别判断是否允许用户登录的代码如下所示:
publicbooleancompare(Stringp,Stringu,intg)
{
booleanb=false;
try{
ct=newConnB().getCon();
sm=ct.createStatement();
rs=sm.executeQuery("selecttop1passwd,gradefromuserswhereusername='"+u+"'");
if(rs.next()){
Stringpasswd=rs.getString
(1);
intgrade=rs.getInt
(2);
System.out.print(grade);
if(passwd.equals(p)&&grade==g){
b=true;
}
}
}catch(Exceptione){
e.printStackTrace();
}finally{
this.close();
}
returnb;
}
5.4文章Bean的编写
文章Bean对应的文件叫ArticleBean.java,这个bean主要描述了文章资源的一些基本属性,以及这些属性值的get和set方法。
以下代码中省略了部分属性的get和set方法。
publicclassArticleBean{
privateintid;
privateStringtitle;
privateStringcontent;
publicintgetId(){
returnid;
}
...//此处代码省略
publicvoidsetContent(Stringcontent){
this.content=content;
}
}
5.5文章处理Bean
此处代码与用户处理Bean类似,代码在ArticleCl.java文件中,可以查看源文件,此处不再详细列出。
5.6资源Bean的编写
文章Bean对应的文件叫ArticleBean.java,这个bean主要描述了文章资源的一些基本属性,以及这些属性值的get和set方法。
以下代码中省略了部分属性的get和set方法。
publicclassResourseBean{
privateintid;
privateStringtitle;
privateStringlink;
publicintgetId(){
returnid;
}
...//此处代码省略
publicvoidsetLink(Stringlink){
this.link=link;
}
}
5.7资源处理Bean
此处代码与用户处理Bean类似,代码在ResourseBeanCl.java文件中,可以查看源文件,此处不再详细列出。
5.8书籍Bean的编写
publicclassBooksBean{
privateintid;
privateStringbookname;
privateStringbookinfo;
privateStringphoto;
publicintgetId(){
returnid;
}
...//此处代码省略
publicvoidsetPhoto(Stringphoto){
this.photo=photo;
}
}
5.9书籍处理Bean
此处代码与用户处理Bean类似,代码在BookBeanCl.java文件中,此处不再详细列出。
6.普通用户设计
6.1登录
本网站需登录方可进入,只需输入用户名、密码即可,登录界面如图6-1所示:
图6-1登录界面
用户登录输入用户名和密码,然后选择自己的身份(用户、管理员)然后单击“登录”按钮,将用户信息提交到logincl.jsp,由logincl.jsp页面完成数据库认证,验证成功后,根据用户身份自动跳转到相应页面,并把用户信息保存进session,以供其他页面判断用户是否已经登录。
Logincl.jsp主要代码如下所示:
<%
Stringpassword=request.getParameter