基于JSP网络学堂网站的开发_第1页
基于JSP网络学堂网站的开发_第2页
基于JSP网络学堂网站的开发_第3页
基于JSP网络学堂网站的开发_第4页
基于JSP网络学堂网站的开发_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE49毕业设计(论文)任务书拟题单位计算机科学与工程学院审题人题目全称基于JSP网络学堂网站的开发主要任务:运用JSP技术进行网络课堂网站的开发,主要实现的基本功能有:1.系统的不同权限的用户登陆及身份验证2.课件,网页的上传与下载3.老师与学生的信息交流4.动态管理网站信息起止时间:学生姓名专业计算机科学与技术(软件技术)班次指导单位现代教育技术中心指导教师设计地点电子科技大学计算机学院成果形式软件

目录摘要 III第一章JSP技术的介绍 11.1动态网站技术,JSP的发展历史及趋势 11.1.1动态网站技术介绍 11.1.2JSP的发展历史 11.1.3JSP与其他动态网页开发相比的优点 11.1.4JSP应用开发的未来 21.2JSP的运行环境 31.2.1相关软件的介绍 31.2.2软件下载 31.2.3配置前的准备 31.2.4JSP环境的配置方案 41.3JSP的开发环境 51.4JSP网站原理介绍 5第二章数据库及JSP与中数据库的使用 62.1数据库的介绍及选用 62.1.1数据、数据库、数据库系统和数据库管理系统的基本概念 62.1.2数据管理的进展 72.1.3几种常用的数据模型 72.1.4DBMS的功能 72.1.5DBMS的组成 82.2JSP中与数据库的连接 82.2.1JDBC的介绍 82.2.2利用JSP实现Web与数据库的连接 92.2.3数据库工具的选取与连接 13第三章网络学堂的系统分析及实现 143.1课题来源 143.2系统需求分析 143.2.1系统功能描述 153.2.2外部项 153.2.3第一层数据流程图 163.3网络课堂的体系结构及数据库访问技术 203.3.1体系结构 213.3.2数据库的访问以及JDBC桥的搭建 213.4网络学堂管理系统的设计 213.4.1功能设计 223.4.2数据库表的设计 223.4.3教育管理系统的实现流程和演示 313.4.4后台管理 46第四章结束语 57参考文献 58致谢 68基于JSP网络学堂网站的开发刘舰班级:21082021班指导老师:刘志军摘要随着网络计算机的迅猛发展,Internet正在改变人类社会的方方面面,而Java技术的推广更在其中起着推波助澜的作用。Java作为新一代的编程语言,以其良好的移植性和安全性,正在成为一种IT也的主流技术,一些发达国家甚至将它列入了高等学校的必修课程。JSP是JavaServerPages的简称,是将纯Java代码嵌入到HTML中实现动态功能的技术。本毕业设计论文分为两大部分。第一部分对jsp以及jsp网络编程环境作了一个介绍。第二部分记录了本人与其他几位同学开发的网络学堂的实现过程,从总体分析、模块划分到详细设计。关键词:JSP,网络编程,网络学堂ABSTRACTWiththeswiftandviolentdevelopmentofthenetwork,Internetischangingeveryaspectofthehumansociety,thepopularizationofJavatechnologyplaysadrivingroleamongthem.Astheprogramminglanguageofnewgeneration,javaisbecomingakindofITmajortechnologywithitsgoodtransplantationandsecurity,somedevelopedcountriesevenlistitintocompulsorycourseoftheinstitutionofhighereducation.JSPistheabbreviationofJavaServerPages,imbedpureJavacodethetechnologyrealizingthedynamicfunctioninHTML.Thisgraduationprojectisdividedintotwomajorparts.Thefirstpartintroducedthejspandjsp'sprogramingenviroment.Andthesecondpartwriteddownthedevelopingprocessofourgroup.第一章JSP技术的介绍1.1动态网站技术,JSP的发展历史及趋势1.1.1动态网站技术介绍1.1.2JSP的发展历史在早期,开发网络数据库应用程序主要采用CGI技术。编写CGI程序可以使用不通的程序语言,如Perl,VisualBasic,Delphi或C/C++等。虽然CGI技术已经发展成熟而且功能强大,但由于编程困难,效率低下,修改复杂等缺陷,所以有逐渐被新技术取代的趋势,在这样的背景下,新的技术纷纷面试,代表性的有Microsoft的ASP,Tex的PHP,Sun的Jsp。JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其网址为/products/jsp。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送email等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无JavaApplet,甚至无Frame1.1.3JSP与其他动态网页开发相比的优点Microsoft公司的ASP技术也是动态网页开发技术。JSP和ASP从形式上非常相似,ASP程序员一眼就能认出<%%>以及<%=%>。但是深入探究下去会发现它们很多的差别,其中最主要的有以下三点:

JSP的效率和安全性更高

ASP以源码形式存放,以解释方式运行,每次ASP网页调用都需要对源码进行解释,运行效率不高。另外,IIS的漏洞曾使得许多网站源程序大曝光,包括笔者以前用ASP开发的网站,ASP程序全部被人下载了去。

JSP在执行以前先被编译成字节码(bytecode),字节码由Java虚拟机(JavaVirtualMachine)解释执行,比源码解释的效率高;服务器上还有字节码的Cache机制,能提高字节码的访问效率。第一次调用JSP网页可能稍慢,因为它被编译成Cache,以后就快得多了。同时,JSP源程序不大可能被下载,特别是JavaBean程序完全可以放到不对外的目录中。

JSP的组件(Component)方式更方便

ASP通过COM来扩充复杂的功能,如文件上载、发送email以及将业务处理或者复杂计算分离出来成为独立可重复利用的模块。JSP通过JavaBean实现了同样的功能扩充。

在开发方面,COM的开发远比JavaBean复杂和繁琐,学会ASP不难,但学会开发COM可不简单。而JavaBean就简单多了,从本文上述示例中可以看出开发JavaBean很方便。

在维护方面,COM必须在服务器上注册,如果修改了COM程序,就必须重新注册,甚至必须关机和重新启动。JavaBean则不需要注册,放在CLASSPATH包含的目录中就行了。如果JavaBean进行了修改,则JSWDK和Tomcat现在还需要关闭和重新运行(但不是关机),但开发者已经许诺将在以后的版本中做到不需要关闭服务器。

另外JavaBean是完全的OOP,可以针对不同的业务处理功能方便地建立一整套可重复利用的对象库,例如用户权限控制、email自动回复等等。

JSP的适应平台更广

ASP目前仅适用于NT和IIS。虽然Unix下有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的组合来扩充,Unix下的COM实现起来非常困难。

JSP则不同,几乎所有平台都支持Java,JSP+JavaBean可以在所有平台下通行无阻。NT下IIS通过一个插件,JRUN(/products/jrun/)或者ServletExec(/),就能支持JSP。著名的Web服务器Apache已经能够支持JSP。由于Apache广泛应用在NT、Unix和Linux上,因此JSP有更广泛的运行平台。虽然现在NT操作系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来势不小。

从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。笔者将在NT下实验的JSP网页原封不动地拿到Linux下就运行起来了,感觉非常满意。1.1.4JSP应用开发的未来JSP技术被设计为一个开放的,可扩展的建立动态Web页面的标准。开发人员可以使用JSP页面来创建可移植的Web应用,在不同的Web和应用服务器上为不同的场合运行。通过与业界的广泛合作,Sun公司保证了JSP的规范的开发性和可移植性。JSP可以使用任何客户机和服务器平台,在任何地方编写和部署他们。将来,开发工具供应商和其他厂商通过为专门的功能提供客户化的标识库而扩展平台的功能。JSP目前的版本通过一个核心标识集,隐含对象以及开始创建动态Web页面所需的基本功能构成了开发的基础。越来越多的厂商都在开发支持这一标准的工具集合以及运行平台。在今后的版本中,JSP将给予XML,客户化标识更多的支持,同时提高与J2EE的集成度,并且供应商们可能会有选择地扩展和扩充在JSP规范中基本的,必需的功能。我们有理由相信JSP将成为诸如电子商务,分布计算等网络计算领域的统一标准。1.2JSP的运行环境为了实验JSP技术,首先需要建立运行环境执行,配置JSP环境可以有多种途径,但主要工作就是安装和配置Web服务器和JSP引擎。配置jsp运行环境的方法有很多,这里我选择了用j2sdk和tomcat来建立开发的环境。1.2.1相关软件的介绍J2SDK:Java2的软件开发工具,是Java应用程序的基础。JSP是基于Java技术的,所以配置JSP环境之前必须要安装J2SDK。Tomcat服务器:Apache组织开发的一种JSP引擎,本身具有Web服务器的功能,可以作为独立的Web服务器来使用。但是,在作为Web服务器方面,Tomcat处理静态HTML页面时不如Apache迅速,也没有Apache健壮,所以我们一般将Tomcat与Apache配合使用,让Apache对网站的静态页面请求提供服务,而Tomcat作为专用的JSP引擎,提供JSP解析,以得到更好的性能。并且Tomcat本身就是Apache的一个子项目,所以Tomcat对Apache提供了强有力的支持。对于初学者来说,Tomcat是一个很不错的选择。1.2.2软件下载j2sdk

版本:j2sdk1.4.1(35.9MB)

地址:/j2se/1.4.1/download.htmlTomcat4

版本:4.1.21(8.33MB)

地址:/builds/jakarta-tomcat-4.0/release/1.2.3配置前的准备准备一个测试用的JSP网页

打开文本编辑器,比如记事本,输入下列代码,并保存为test.jsp(注意扩展名为.jsp)。

<HTML>

<HEAD>

<TITLE>JSP测试页面</TITLE>

</HEAD>

<BODY>

<%out.println("<h1>HelloWorld!</h1>");%>

</BODY>

</HTML>安装J2SDK安装J2SDK

在Windows下,直接运行下载的j2sdk-1_4_1_01-windows-i586.exe文件,根据安装向导安装到一个目录,例如安装到f:\j2sdk1.4.1;添加环境变量可以用记事本直接编辑Autoexec.bat,添加下面命令行:

PATH=%PATH%;f:\j2sdk1.4.1\bin

SETJAVA_HOME=f:\j2sdk1.4.1

SETCLASSPATH=f:\j2sdk1.4.1\lib

ools.jar

保存后,重新启动计算机,这样所添加的环境变量才会有效。1.2.4JSP环境的配置方案安装Tomcat直接运行下载的jakarta-tomcat-4.0.1.exe,按照一般的Windows程序安装步骤即可安装好Tomcat,安装时它会自动寻找J2SDK的位置。例如安装到f:

Tomcat4。配置Tomcat的环境变量添加一个新的环境变量TOMCAT_HOME,变量值为f:

omcat4,添加方法同J2SDK环境变量的配置方法。测试默认服务

设置完毕后就可以运行Tomcat服务器了。用f:

omcat4\bin\startup.exe启动Tomcat,用f:

omcat4\bin\shutdown.exe关闭。(如果在执行startup.exe或shutdown.exe的时候提示OutofEnvironmentSpace错误,选择DOS窗口的菜单中的"属性"→"内存"→"常规内存",把"初始环境"由"自动"修改成"2816"就可以了。)

启动Tomcat后,打开浏览器,在地址栏中输入http://localhost:8080(Tomcat默认端口为8080),如果在浏览器中看到Tomcat的欢迎界面,表示Tomcat工作正常。测试项目

把刚才准备好的test.jsp放在f:\Tomcat\webapps\examples\jsp目录下,在地址栏中输入http://localhost:8080/examples/jsp/test.jsp,如果浏览器中显示"HelloWorld!",则说明你的JSP环境配置成功了!

由于Tomcat本身具有web服务器的功能,因此我们不必安装Apache.1.3JSP的开发环境JSP的开发环境是多样的,产生JSP文件的方式和编写ASP,PHP,HTML文件的方法基本一样的,可以使用记事本或UltraEditor编辑器来编写JSP程序,我选择了用UltraEditor来编写JSP程序,UltraEditor是当前Windows系统下编程环境最好的编辑器,在UltraEditor中,可以选择关键字高亮显示,这使得用户更容易进行不同文件格式之间的转换,不同文件之间的比较,字节统计,语法检测等功能。1.4JSP网站原理介绍EJB容器EJB容器数据库SessionBeanSimpleBeanEntityBean客户应用容器 WEB客户应用容器 WEBWEB服务器浏览器HTMLAppletJSPSERVLET第二章数据库及JSP与中数据库的使用2.1数据库的介绍及选用2.1.1数据、数据库、数据库系统和数据库管理系统的基本概念数据、数据库、数据库系统和数据库管理系统是4个密切相关的基本概念。数据(data)数据指描述事物的符号记录。文字、图形、图像、声音、学生的档案记录、货物的运输情况等都是数据。数据库(database,简称DB)数据库指长期存储在计算机内有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度,较高的数据独立性和易扩展性,并可为各种用户共享。数据库管理系统(databasemanagementsystem,简称DBMS)数据库系统(databasesystem,简称DBS)数据库系统指在计算机系统中引入数据库后构成的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。2.1.2数据管理的进展数据管理是指如何对数据分类、组织、编码、存储、检索和维护,是数据处理的中心问题。数据管理经历了人工管理、文件系统和数据库系统三个阶段。当前,数据库研究的范围有以下三个领域。数据库管理系统软件的研制数据库设计数据库理论数据模型由三个要素组成:数据结构、数据操作和完整性约束。2.1.3几种常用的数据模型层次数据模型网状数据模型关系数据模型2.1.4DBMS的功能由于不同DBMS要求的硬件资源、软件环境是不同的,因此其功能与性能也存在差异,但一般说来,DBMS的功能主要包括以下6个方面。数据定义数据操纵数据库运行管理数据组织、存储和管理数据库的建立和维护数据通信接口2.1.5DBMS的组成大致说来,DBMS的程序模块可按功能划分为。数据定义数据操纵数据库运行管理数据库组织存储和管理数据库建立维护DBMS的这些组成模块互相联系,互相依赖,共同完成DBMS复杂的功能。这些模块之间的联系也不是平面的,散乱无章的,正如我们下面要讲的,它们具有一定的层次联系。2.2JSP中与数据库的连接常见的Web数据库连接技术有:CGI技术、WebAPI技术、RAD技术和JDBC技术等。最早出现的CGI技术得到了几乎所有的Web服务器的支持,但是存在着严重的缺陷,例如运行速度慢、开发困难和可移植性差等。WebAPI的出现克服了速度问题,但是开发更加困难。各种不同的API互不兼容,使用范围极其受限。RAD技术(快速开发技术)从根本上该改变了开发困难的现状,但是它和特定的Web服务器的依赖性很强,缺乏通用性。2.2.1JDBC的介绍JDBC(JavaDatabaseConnectivity)技术的最大优势是它为所有数据库管理系统提供一种标准接口,可以为多种关系数据库提供统一访问,大致可以分为以下三个部分:

◆JDBCAPI的主要特点之一是简单且容易掌握。它主要由接口组成而不是集成类,被包含在java.sql和javax.sql两个包中。这些接口由提供JDBC驱动的软件商来完成。

◆JDBC驱动管理器的作用是在JDBC运行结构上,提供最基础的指引功能,即当一个JDBCAPI程序进行数据库调用时,它会选择一个正确的JDBC驱动程序进行连接。

◆JDBC驱动的作用是当JDBCAPI制作的程序进行数据调用时,实际连接数据库并进行相应的处理。JDBC驱动提供JDBCAPI的接口类。2.2.2利用JSP实现Web与数据库的连接Java中连接数据库的技术是JDBC(JavaDatabaseConnectivity)。很多数据库系统带有JDBC驱动程序,Java程序就通过JDBC驱动程序与数据库相连,执行查询、提取数据等操作。Sun公司还开发了JDBC-ODBCbridge,用此技术Java程序就可以访问带有ODBC驱动程序的数据库,目前大多数数据库系统都带有ODBC驱动程序,所以Java程序能访问诸如Oracle、Sybase、MSSQLServer和MSAccess等数据库。JDBC是一种可用于执行SQL语句的JavaAPI,它由一些Java语言写的类、界面组成,使开发人员可以用纯Java语言编写完整的数据库应用程序。通过使用JDBC,可以很方便地将SQL语句传送到几乎任何一种数据库。也就是说,可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQLServer。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统。具体步骤如下:

1.完成环境设置,导入java.sql包,命令如下:

#importjava.sql.*

2.载入驱动器

JDBC规范依据驱动器结构将驱动器划分为JDBC-ODBC桥、纯Java到数据库中间件和纯Java直接到数据库几种类型。在此,采用本地API与部分Java类型驱动器,显式创建一个如下的驱动器实例并用驱动器管理器注册:

DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());

3.连接到数据库

驱动器管理器保留已注册驱动器列表,调用其getConnection()方法得到Connection对象。其中getConnection()的参数分别是数据库服务器的IP地址、端口号、库名和登录数据库所需的账号与密码,示例如下:

Connectionconn=DirverManager.getConnection("jdbc:oracle:thin:@localhost:1521:demo","username","password");

4.语句接口

SQL语言由从一个关系数据库中创建、表示和抽取数据的语句组成。JDBC提供的这些SQL语句的面向对象的表示用以封装其文本、执行状态和结果。这种表示称为java.sql.Statement接口。使用预编译SQL的PreparedStatement和调用存储过程的CallableStatement这两个子接口扩展了Statement的功能,示例如下:

Statementstmt=conn.createStatement();

5.获得结果集

一个结果集是表格行的排序列表,使用JDBC中的java.sql.ResultSet接口表示。结果集由Statement接口的executeQuery()方法或一些元数据方法调用产生,示例如下:

ResultSetrs=stmt.executeQuery(sql);

利用连接池优化访问效率

在本实例中,应用层使用WebLogic6.1,数据库层采用Oracle8.1.6,客户端使用Navigate浏览器。

实例

在本实例中建立一个命名为ConnectionPool的连接池。ConnectionPool的基本属性如下:

m_ConnectionPoolSize连接池中连接数量下限;m_ConnectionPoolMax连接池中连接数量上限;m_ConnectionUseCount一个连接的最大使用次数;m_ConnectionTimeout一个连接的最长空闲时间;m_MaxConnections=-1同一时间的最大连接数;m_timer定时器。

这些属性定义了连接池与其中的每个连接的有效状态值。

连接池的自我管理,实际上就是通过定时地对每个连接的状态和连接的数量进行判断而进行相应操作。

这里可以定义出ConnectionPool要完成管理所需要的基本接口,具体见下:

publicclassConnectionPoolimplementsTimerListener{publicbooleaninitialize()//连接池初始化publicvoiddestroy()//连接池的销毁publicsynchronizedjava.sql.ConnectiongetConnection()//取一个连接publicsynchronizedvoidclose()//关闭一个连接privatesynchronizedvoidremoveFromPool()//把一个连接从连接池中删除privatesynchronizedvoidfillPool()//维护连接池大小publicsynchronizedvoidTimerEvent()//定时器事件处理函数}

通过这几个接口,已经可以完成连接池的基本管理。在TimeEvent()函数中完成连接池的状态检验工作,fillPool()时连接池至少保持最小连接数。因为用户要保存每一个连接的状态,所以还需要一个数据库连接对象见下:

classConnectionObject{publicjava.sql.Connectioncon;publicbooleaninUse;//是否被使用标志publiclonglastAccess;//最近一次开始使用时间publicintuseCount;//被使用次数}

加入了ConnectionObject对象后,在ConnectionPool中操作的应该只是ConnectionObject,而其它进程需要的只是ConnectionObject的con属性。因此这里再加入如下一个类,作为其它进程获得与返回连接的接口:

CLASSConn{GetConnection();//从连接池中取出一个有效连接CloseConnection();//返回连接,此时并没有关闭连接,只是放回了连接池DestroyPool();//销毁连接池}

目前采用JSP技术构建B/S结构的Web数据库系统是比较流行的方式,同时采用数据库连接池的系统在效率和稳定性上比采用传统的其它方式的系统要好得多。数据库连接池是一种对整个系统中比较复杂的问题的一种可行的解决办法。但在实际应用中,JDBC连接只是大型Web应用系统的一小部分,数据库连接池管理程序与Web服务器、JSP引擎和RDBMS引擎的管理策略都有可能发生冲突。用户应该全面考虑系统中的各个部分,这样才能充分发挥其高效性。2.2.3数据库工具的选取与连接SQLSERVER2021我选择了SQLSERVER2021来作为数据库的开发工具,它的功能十分强大,安装简便,使用比较简单。运行服务器后,打开查询分析器可以将所有的现成的表单直接导入。SQLSERVER2021与JSP的连接testsqlserver.jsp如下:<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="java.sql.*"%><html><body><%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";//pubs为你的数据库的Stringuser="sa";Stringpassword="";Connectionconn=DriverManager.getConnection(url,user,password);Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);Stringsql="select*fromtest";ResultSetrs=stmt.executeQuery(sql);while(rs.next()){%>您的第一个字段内容为:<%=rs.getString(1)%>您的第二个字段内容为:<%=rs.getString(2)%><%}%><%out.print("数据库操作成功,恭喜你\");%><%rs.close();stmt.close();conn.close();%></body></html>第三章网络学堂的系统分析及实现3.1课题来源根据导师安排拟作一个教育系统3.2系统需求分析3.2.1系统功能描述目的本系统分析说明书的编写目的是为了明确系统功能、为用户及分析人员充分理解本系统的功能、安排项目规划与进度、组织软件开发与测试而撰写。它说明了本系统的各项功能和性能,明确标识各功能的实现过程,阐述实用范围及背景,作为系统系统设计、数据库设计和编写程序的依据。3.2.本系统是以辅助教学为基本功能。为国家精品课程、校内立项多媒体课程以及各学院自行开发的多媒体课程提供发布及管理平台。为本、专科教学提供网上共享资源及教学辅导。本系统以课程为主体,以章节为中心,以主讲教师为课程管理员。为课程管理员提供在网上发布和维护该课程的教学大纲、任课教师、网页课件、知识点、重难点、在线测试题、实验辅导等功能。为任课教师提供PPT课件和个人资料上传等功能。为学习该课程的学生提供下载所学课程PPT课件、浏览课程资料、进行自我测试和实验演示等自主学习的平台。3.2.2外部项外部项是指系统的管理者和使用者,是本系统输入数据的来源和输出数据的去处。本系统的外部项有四类:教师、学生、课程管理员和系统管理员。课程管理员课程管理员可以是讲授该课程的主讲教师(首席教师)、课程教学组织人员等。权限如下:可以增加、删除教师用户、修改用户属性、权限,增加、修改、删除留言板、公告板上的内容,发布和管理课程教学信息,如教学大纲、课程实施方案、考试要求、实验要求、课程开设时间、课程进度表、任课教师简介、课程教材、参考资料等,可以增添、删除PPT课件、参考资料文件、多媒体文件和网上测验试题;题库录入等,备份、恢复用户数据、网上自测题题库。教师此类用户可以上传PPT课件、教学录像;发布公告消息等。权限如下:发布和修改个人资料、个人通知,发布、更新课程的PPT课件及相关材料,解答学生提出的问题等。学生学生类用户:此类用户可以进行网上自我模拟考试,运用网上教学资源进行学习,其权限如下:下载教师课件、浏览课堂教学录像、下载课程重点内容、对课程难点、原理等的在线学习、网上做作业、留言板或教学论坛上留言。系统管理员系统管理员指进行和网上资源维护的专业技术人员,具有以下权限:可以建立、删除课程、课程管理员;增加、修改、删除留言板、公告板上的内容等权限。3.2.3第一层数据流程图第一层数据流程图反映系统的总体功能和主要的数据存贮。图一是本站系统的第一层数据流程图。3.2.31、登录本系统的任何用户都必须经登录确认其身份后才能进入。登录时根据用户的输入数据和“角色登录”数据库中的数据进行验证,确认用户的身份角色后才能进入下一步操作。2、课件上传以教师身份登录的用户可以进行课件上传。上传的内容可以是:PPT课件、个人资料等信息。课程管理员除能上传普通教师上传的信息,还可以上传:章节结构、实验辅导、知识点重点难点、网页课件、测试题和本课程及教研组情况介绍等信息。3、学习资源管理课程管理员身份登录的用户可以输入本课程的课程参考资料。4、课件下载及浏览以学生身份登录的用户可以浏览或下载所学课程的PPT课件。可以使用系统中的网页课件、PPT课件、学习辅导资料、实验辅导资料、自测题等资料进行自主学习,或开展在线讨论,网上答疑等。5、系统管理系统管理员可以新建课程及该课程的课程管理员;建立各类用户的初始密码。课程管理员可以建立该课程的任课教师。任课教师可以新建学生班级。3.2.3数据存贮反映系统中存放数据的需求。1、系统管理员系统管理员:存贮系统管理员的身份及权限等信息,该数据由系统管理员维护。2、学生学生:存贮验证学生身份的信息。本系统对学生用户以教学班级为单位进行管理。该数据存贮由任课教师建立和维护。3、教师教师:存贮验证教师身份的信息。该数据存贮由课程管理员建立和维护。4、课程管理员课程管理员:存贮课程管理员身份验证信息,由系统管理员建立和维护。5、课程课程:存贮本系统所拥有的课程资源的信息。该数据存贮由系统管理员建立。6、章节结构章节结构:存贮各门课程的相关内容的信息,包括:知识点重难点、PPT课件、网页课件、在线作业测试、实验辅导、问题解答等相关信息表。由课程管理员和教师建立。7、课程参考资料课程参考资料:存贮各门课程相关参考资料的信息。由课程管理员建立。3.2.3输入数据流是指从外部项输入到系统内的数据,输出数据流是从系统内部流向外部项的数据。它们是本系统数据的来源和经本系统处理后输出数据的去向。本系统的输入/输出数据流主要有以下内容。输入数据流:1、数据流22来源:教师(外部项);去向:登录(处理功能)。主要内容:教师登录申请的身份及权限、课程、章节结构、课程参考资料、网页课件在线测试题、实验辅导等;任课教师角色的登录申请、PPT课件、个人资料等。2、数据流20来源:课程管理员(外部项)去向:登录(处理功能)主要内容:课程管理员登录申请的身份及权限、课程、章节结构、课程参考资料、网页课件在线测试题、实验辅导等;任课教师角色的登录申请、PPT课件、个人资料等。3、数据流2来源:学生(外部项);去向:登录(处理功能);主要内容:学生角色的登录申请。4、数据流3来源:系统管理员(外部项);去向:登录(处理功能);主要内容:管理员用户的登录信息。输出数据流:1、数据流8来源:课件下载及及浏览(处理功能);去向:学生(外部项);主要内容:学生下载的PPT课件、浏览网上资源的信息、自测题及实验辅导等信息。3.3网络课堂的体系结构及数据库访问技术3.3.1体系结构worldwideweb体系结构这个系统是在网页下运行的,我所做的最初的一步就是将其发布到一个地址上,使其可以被别人访问。IIS虽然很好用,但是不适合大量的人同时进行访问,而APACHE就不一样了,它允许上千人同时访问,而且速度很快,通过修改其配置文件,我将其主目录放在我的G:/JSP下,并将其同我的编译器RESIN连接起来,达到了WWW的访问要求,经测试,一切状况都达到了预期效果!教育管理系统的分类操作结构整个系统的体系很简单,就是3者:学生,教师,管理员拥有各自的登陆界面和方式,并可进行对应的操作,注册则各不一样。3.3.2数据库的访问以及JDBC桥的搭建他们的数据库访问都是通过JDBC桥进行对SQL2021的访问,我将其都归在一个CLASS里面,这样别人就不会通过源代码看到我的数据库的名称,帐号和密码,安全性就相当高了!具体实现是靠以下代码:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();Stringurl="jdbc:microsoft:sqlserver://8:1433;DatabaseName=master";//DatabaseName为你的数据库的Stringuser="";//帐号Stringpassword="";//密码Connectionconn=DriverManager.getConnection(url,user,password);3.4网络学堂管理系统的设计3.4.1功能设计学生可以注册,取密码,登陆后可以选课,选老师,下载作业,课件,上传作业,留言。教师可以注册,取密码,登陆后可以排课,定时间,安排作业,课件,发表留言回复等;管理员可以进行一切的合理操作,因为直接可以操作数据库,所以,它的功能可以说是万能的。3.4.2数据库表的设计该表相当庞大,我们只说几个简单的常用的Teacher表:该表包含了教师的注册信息IDcard_No ,t_tname ,c_id ,t_dept, t_user, t_pwd ,t_birth ,t_level ,t_email, t_contact, t_intro, t_addtime, visitor_set, indegree, lastintime, isadmin, crightStudent表:该表包含了教师的注册信息s_id, s_user, s_pwd, pw_question, pw_answer, s_tname, sex s_intro, stu_No, s_email, teacher_id ,c_id ,s_addtime, stateadmin:管理员表shortinfo:公告信息表3.4.2.1数据库访问权限设置建立用户一般系统默认的用户都是SA,你也可以通过新建用户自己建立新的帐号密码选择好你的默认访问数据库选择访问的方式:WINDOWS访问还是SQL访问,我用的是SQL访问,输入密码建立成功后,便可以在JSP页面里对其进行访问了!JSP页面对数据库的访问我们给出以下一段事例:<%@pageimport="Bean.j6_01"%><%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="java.sql.*"%><%j6_01girl=newj6_01();Stringpassword=girl.getPassword();Stringuser=girl.getUser();Stringurl=girl.getUrl();try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();Connectionconn=DriverManager.getConnection(url,user,password);Statementstmt=conn.createStatement(); ResultSetrs=stmt.executeQuery("select*fromstudent"); while(rs.next()){ out.print("姓名:"+rs.getString(1));out.print("代号:"+rs.getString(2)); out.print("密码:"+rs.getString(3));out.print("任务:"+rs.getString(4));out.print("行动小组:"+rs.getString(5)); out.print("<BR>"); }}catch(Exceptione){ e.printStackTrace();}该程序必须要有一个叫J6_01.class的类支持该类的JAVA源程序如下://J6_01.JAVA//packageBean;importjava.io.*;publicclassj6_01{ intradius; Stringurl; Stringuser; Stringpassword; publicj6_01(){ radius=1; url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jsp";user="sa";password="123456"; }publicStringgetUrl(){ returnurl; } publicStringgetUser(){ returnuser; } publicStringgetPassword(){ returnpassword; }}该类将对数据库访问的密码,帐号,地址,以及数据库名称进行封装,使一般用户无法看到,从而保证了数据库的安全。封装后生成以下文件:该文件直接打开后是乱码,从而更加安全的保证了数据库的安全。3.4.3教育管理系统的实现流程和演示主页面其上很简明的给出了帐号,密码填写框,角色选填扭,以及各个具体功能按扭。学生注册1.点击学生注册会出现要求检测帐号的框,该做法是为了让学生避免填写完资料后才发现已经有相同帐号被注册,以节约时间,非常之人性化。如果有帐号被注册,则会给以提示:如图:反之则可继续注册:进行下一步,出现以下界面:正确填写相关资料后,会给出以下提示:这样,学生的注册系统算是完成了,接下来是其学生取密码系统:点击取密码:输入你的帐号如果帐号输入错误,就会给予相应提示:输入正确后就会要求输入密码提示答案:填写对答案后:会给出密码,错误则不会:教师取密码点击教师取密码:填写相关信息,正确后给出密码,错误后给出错误提示:管理员登陆点击管理员登陆,进入以下界面:正确输入帐号密码后,进入一下截面:我们以公告功能为例做介绍:点击系统公告:如图,可以列出所有公告,并可对任意一条公告进行删除,修改和添加的工作的修改:修该完公告后,提交就可:如图:修改完后,自动返回公告界面,新的公告便出来了。删除,点击任何你想删除的公告:添加公告:写完后点提交:如此,便是管理员的其中一个功能了。登陆学生和教师分别登陆,进入自己的操作界面3.4.4后台管理一切操作归根结底都是在操作数据库,我们的后台管理当然是对数据库的修改例如STUDENT表,我们就可以对其垃圾信息进行直接删除,也可直接创建我们所需要的信息,一切都是很简便的!文件上传的编写我重点做了文件上传方面的工作,具体实现:在jsp中使用smartupload组件上传文件

/doc/html/aebbbg/bgbbahaaxruhmvgihp.html在jsp中使用smartupload组件上传文件

jsp对上传文件的支持不象php中支持的那么好,直接做成了函数,也不象asp中要通过组件才能实现。jsp中可以通过javabean来实现。但是我们没有必要自己去写一个上载的bean,在网上已经有了很多成型的技术,smartupload就是其中的一个。但是smartupload是将文件先读到服务器的内存中,所以上传太大的文件(超过100兆)有可能会出问题,但是网络课堂只要求上传课件等很小的附件,不会出现超过100兆的情况,所以完全可以用它来实现网络课堂的上传

先说一下提交的页面,smartupload组件要求用字节流的方式来提交<FORMaction="upload.jsp"encType=multipart/form-datamethod=post>。下面就是个例子upload.htm:

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">

<!--savedfromurl=(0057)http://localhost:8080/jspsmartfile/jsp/uploadTemplate.jsp-->

<HTML><HEAD>

<METAcontent="text/html;charset=gb2312"http-equiv=Content-Type>

<METAcontent="MSHTML5.00.2920.0"name=GENERATOR></HEAD>

<BODYbgColor=#e6e6e6><BR>

<FORMaction="upload.jsp"encType=multipart/form-datamethod=post>

<TABLE>

<TBODY>

<TR>

<TD><FONTcolor=#000000face=helv,helveticasize=1>File

:</FONT><INPUTsize=60type=filename="file"></TD></TR>

<TR>

<TR>

<TD><FONTcolor=#000000face=helv,helveticasize=1>File

:</FONT><INPUTsize=60type=filename="file1"></TD></TR>

<TR>

<TD><FONTcolor=#000000face=helv,helveticasize=1>File

:</FONT><INPUTsize=60type=textname="text"></TD></TR>

<TR>

<TD>

align=right><INPUTtype=submitvalue=Sendname="send"></TD></TR></TBODY></TABLE></FORM></BODY></HTML>

再来看一下接收的页面,我们把文件上传到服务器以后就直接把它再存入数据库中:upload.jsp

<%@pagecontentType="text/html;charset=gb2312"%>

<%@pageimport="java.sql.*"%>

<%@pageimport="com.jspsmart.upload.*"%>

<%@pageimport="DBstep.iDBManager2021.*"%>

<%

//实例化上载bean

com.jspsmart.upload.SmartUploadmySmartUpload=newcom.jspsmart.upload.SmartUpload();

//初始化

mySmartUpload.initialize(pageContext);

//设置上载的最大值

mySmartUpload.setMaxFileSize(500*1024*1024);

//上载文件

mySmartUpload.upload();

//循环取得所有上载的文件

for(inti=0;i<mySmartUpload.getFiles().getCount();i++){

//取得上载的文件

com.jspsmart.upload.FilemyFile=mySmartUpload.getFiles().getFile(i);

if(!myFile.isMissing())

{

//取得上载的文件的文件名

StringmyFileName=myFile.getFileName();

//取得不带后缀的文件名

Stringsuffix=myFileName.substring(0,myFileName.lastIndexOf('.'));

//取得后缀名

Stringext=mySmartUpload.getFiles().getFile(0).getFileExt();

//取得文件的大小

intfileSize=myFile.getSize();

//保存路径

Stringaa=getServletContext().getRealPath("/")+"jsp\";

Stringtrace=aa+myFileName;

//取得别的参数

Stringexplain=(String)mySmartUpload.getRequest().getParameter("text");

Stringsend=(String)mySmartUpload.getRequest().getParameter("send");

//将文件保存在服务器端

myFile.saveAs(trace,mySmartUpload.SAVE_PHYSICAL);

//下面的是将上载的文件保存到数据库中

//将文件读到流中

java.io.Filefile=newjava.io.File(trace);

java.io.FileInputStreamfis=newjava.io.FileInputStream(file);

out.println(file.length());

//打开数据库

ResultSetresult=null;

StringmSql=null;

PreparedStatementprestmt=null;

DBstep.iDBManager2021DbaObj=newDBstep.iDBManager2021();

DbaObj.OpenConnection();

//将文件写到数据库中

mSql="insertintomarklist(markname,password,marksize,markdate,MarkBody)values(?,?,?,?,?)";

prestmt=DbaObj.Conn.prepareStatement(mSql);

prestmt.setString(1,"aaa1");

prestmt.setString(2,"0000");

prestmt.setInt(3,fileSize);

prestmt.setString(4,DbaObj.GetDateTime());

prestmt.setBinaryStream(5,fis,(int)file.length());

DbaObj.Conn.setAutoCommit(true);

prestmt.executeUpdate();

DbaObj.Cmit();

out.println(("上载成功!!!").toString());

}

else

{out.println(("上载失败!!!").toString());}

}//与前面的if对应

%>

再说一下下载,下载分两种情况1。从数据库直接下载2。从服务器上下载

先说从数据库直接下载的情形:就是把输入流从数据库里读出来,然后转存为文件

<%@pagecontentType="text/html;charset=gb2312"%>

<%@pageimport="java.sql.*"%>

<%@pageimport="java.io.*"%>

<%@pageimport="DBstep.iDBManager2021.*"%>

<%

intbytesum=0;

intbyteread=0;

//打开数据库

ResultSetresult=null;

StringSql=null;

PreparedStatementprestmt=null;

DBstep.iDBManager2021DbaObj=newDBstep.iDBManager2021();

DbaObj.OpenConnection();

//取得数据库中的数据

Sql="select*fromt_local_zhongzhuan";

result=DbaObj.ExecuteQuery(Sql);

result.next();

//将数据库中的数据读到流中

InputStreaminStream=result.getBinaryStream("content");

FileOutputStreamfs=newFileOutputStream("c:/dffdsafd.doc");

byte[]buffer=newbyte[1444];

intlength;

while((byteread=inStream.read(buffer))!=-1)

{

out.println("<DT><B>"+byteread+"</B></DT>");

bytesum+=byteread;

System.out.println(bytesum);

fs.write(buffer,0,byteread);

}

%>

再说从服务器上下载的情形:

<%@pagecontentType="text/html;charset=gb2312"%>

<%@pageimport="java.io.*"%>

<%

StringfileName="zsc104.swf".toString();

f//读到流中

InputStreaminStream=newFileInputStream("c:/zsc104.swf");

//设置输出的格式

response.reset();

response.setContentType("bin");

response.addHeader("Content-Disposition","attachment;filename=""+fileName+""");

//循环取出流中的数据

byte[]b=newbyte[100];

intlen;

while((len=inStream.read(b))>0)

response.getOutputStream().write(b,0,len);

inStream.close();

%>上传界面上传后返回界面第四章结束语这次毕业设计是我第一次进行网站的编程,在指导老师指点下和几个同学的通力合作下,这次设计的任务顺利完成。应该说一接到这个任务感到有些无从下手,难度很大,但经过几个月来慢慢的斟酌,学习,以及动手编程,在不断发现问题,解决问题的过程中,任务渐渐化整为零,化难为易,最终得到实现。在这一过程中,实现老师给出这一任务的初衷,不要求做出来的东西有多完美,只要求在动手的过程中能学到书本上学不到的东西。实际上,通过几个月的思考、学习和动手,在完成任务的同时,自己收获颇多,分别总结如下:1、熟悉了JSP编程环境,熟悉JSP动态网页编程的基本思想,自己的动手能力得到提高。同时在编程过程中感到JSP功能强大,以及JSP的发展前景。2、锻炼了自己现学现用的能力,许多东西以前都没有接触过,通过查阅参考书能够快速的使用。3、锻炼了自己分析问题解决问题的能力,在编程过程中,经常遇到这样那样的问题而使进度有所停顿,经过许多思考和尝试,往往能在解决问题时感到山重水复疑无路,柳暗花明又一村的感觉。当一个个的问题得到解决,系统的雏形就逐渐形成。这让知道,在以后做更大项目的时候,遇到暂时的困难一定不要气馁,只要用心思考与探索,利用一切有用的因素,一定能找到解决问题的方案。4、锻炼了团队合作能力。本次设计顺利完成很大程度上得益于分工的合理和合作的愉快。在互相不知道对方怎样实现的情况下,能够顺利对接成功,这得意于一开始有明确的分工,在编程过程中不断有交流,特别是需要接口的地方有比较严格的商定,另外,经过本次设计,提高了自己对网站开发的兴趣,为今后更进一步的学习,提供了一个良好的开端。参考文献高成等。JSP动态网站建设。第一版。国防工业出版社,2021年飞思科技产品研发中心编著。第一版。JSP应用开发详解。北京:电子工业出版社,2021年肖刚编著。第一版。JAVAWEB服务器应用程序设计。北京:电子工业出版社,2021年光军,胡波编著。第一版应用开发实例详解。北京:航空航天大学出版社,2021年翻译:原文JavaDatabaseConnectivity(JDBC)Ithasbeenestimatedthathalfofallsoftwaredevelopmentinvolvesclient/serveroperations.AgreatpromiseofJavahasbeentheabilitytobuildplatform-independentclient/serverdatabaseapplications.ThishascometofruitionwithJavaDataBaseConnectivity(JDBC).Oneofthemajorproblemswithdatabaseshasbeenthefeaturewarsbetweenthedatabasecompanies.Thereisa“standard”databaselanguage,StructuredQueryLanguage(SQL-92),butyoumustusuallyknowwhichdatabasevendoryou’reworkingwithdespitethestandard.JDBCisdesignedtobeplatform-independent,soyoudon’tneedtoworryaboutthedatabaseyou’reusingwhileyou’reprogramming.However,it’sstillpossibletomakevendor-specificcallsfromJDBCsoyouaren’trestrictedfromdoingwhatyoumust.Oneplacewhereprogrammer

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论