文章目录
是否包含论文文档
否
详细描述
毕 业 设 计(论 文)
摘 要
通过操作系统教学网站的建设,完成了对于操作系统课程的远程化授课。可以使学生不受时间空间的限制,通过网络对于这门课程进行学习。建立起了基于B/C的网络化教学系统。本网站采用当前最流行的JSP网络编程技术,可以实现数据的高效、动态、交互访问,具有强大的Server/Client交互能力。本文中所做的主要工作:介绍Win2000 +JSP(J2DK+TOMCAT)系统并且嵌入 JAVABEAN的一般原理;阐述整个操作系统教学网站的概要设计,系统结构及工作原理;分析了系统实现中的特殊性、难点和重点;详细设计实现学院介绍、教学资源、课程表、课堂教学、在线答疑、其他课程、课件下载、留言反馈、站内搜索、公告专栏、友情链接、校园风景、新闻中心、栏目导航等程序模块; 各个模块的具体实现,且分析并解决实现中的若干技术问题;建立完整的实验网站,进行测试并分析结果。
关键字 : JAVABEAN JSP 网络教学 JAVASCRIPT JDBC
Abstract
Through the operating system teaching website construction, completed long-distance has taught regarding the operating system curriculum, was allowed to cause the student without the time space limit, and carried on the study through the network regarding this curriculum. Established based on the B/C network teaching system. This website uses the current most popular JSP network programming technology, may realize the data to be highly effective, dynamically, alternately visits, and has the formidable Server/Client interactive ability. In this article does main work: Introduced Win2000 +JSP (J2DK+TOMCAT) the system and to insert JAVABEAN the general principle; Elaborates the entire operating system teaching website outline design, the system structure and the principle of work; Has analyzed in the system realization particularity, the difficulty and key; The detailed design realization institute introduced, in the teaching resources, the class schedule, the classroom instruction, the on-line Q/A, other curricula, class downloading, the message feedback, the station search, program module and so on announcement column, friendship link, campus scenery, news center, column navigation; Each module concrete realization, also in analysis and solution realization certain technical questions; The establishment integrity experimental website, carries on the test and the analysis result.
Key words: JAVABEAN JSP Network teaching JAVASCRIPT JDBC
目 录
引 言
Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。我们的教学也有了很大得发展与改革。现代信息技术是网络教学的技术标志,而教学活动,对人才的培养则是网络教学的根本。网络教学的问题不仅仅是技术问题,其本质问题仍是教学问题,是培养人的问题。是现代信息技术条件或环境下培养人的问题。对这些带有根本性问题的把握,就必须以科学的思想为指导,在分析研究学生实际情况本着实事求是得精神,对网络教学做探索、借鉴、创新等工作。尤其要把创新放在主要地位。认真学习国外的经验,并要结合本学校、本课程、学生的实际,加以改造应用。坚持技术标准的统一与教学思想和风格的多样化相结合。而不是技术标准的多样化,教学思想和模式的单一化。要克服那种机械的、形而上学地看待网络教学的认识,把网络教学仅看成脱离课堂、学校、教师,一切依靠网络所进行的学习(教学)“E—Learning”。其实,这是网络教学的一种方式,或是说网络教学应用的领域之一。“E—Learning”作为课堂教学活动得有效补充,应该受到大家得重视[4]。
网络教学在教学中所扮演得角色越来越明确:一方面,计算机网络为学习者提供学习资料、工具和创设学习情景,让他们操作、探索,为提高学习者的兴趣,调动他们的积极性和主动性,培养其创造能力营造了良好的信息化环境。另一方面,计算机网络有丰富的教学信息资源,它既可以做到在不割裂学科系统知识的情况下,以多媒体的方式表现知识和经验;又可以对学科的系统知识进行延伸性链接,对不同学科所涉及的同一对象给予多角度、多层面的反映。为学习者掌握系统知识提供了书本无法比拟的信息化环境。计算机网络既能提升学习者主体地位,提高其学习兴趣,培养其主动探索问题、解决问题的能力和技能;又能使他们学习和掌握系统的科学知识。既可以使学习者学习系统知识,又可以使他们在学习过程中学会学习。既调动学习者的主动性,又充分发挥了教师的主导作用。
网络在教学中的应用必然受多种教学理论的影响,也必然要形成多元化或多种风格的发展格局。在现代科学技术的飞速发展的时代,单一的教学观,单一的教学模式显然已不适应社会发展的需要。自上个世纪50年代以来,“各种教学改革探索,风起云涌。产生了许多新的教学体系。但是,谁也包打不了天下,只有大家联合起来,才能迎接时代的挑战。”其实,国外的学者也清楚地认识到这个问题:“把建构主义这种培养学习者处理‘问题’能力和技能的模式,推广至一切教学领域是不适宜的。”(Walter Dick 1991)。 如果网络教学仅推崇某一个教学思想或模式,并认为它适用于一切类型的教学,那就是一种误解。
“资源学习观”关注的是非学校课堂时空间的学习现象,聚焦于借助网络进行的灵活的、多样化的学习活动;“建构主义观”关注的是特定教学任务的完成,聚焦于学习者借助网络完成分析问题、取得资料、解决问题等活动;“传递信息观”关注的是学校课堂教学中的教学问题,聚焦于辅助教师的工作;“信息支持观”关注的是计算机网络与各种教学思想和模式的结合等等[4]。
现存的几种网络教学模式,如“问题”解决学习模式、探究学习模式、协作学习模式、讲授——发现教学模式和自学模式等都有各自不同的教学任务、目标、内容甚至教学对象,它们都有自己突出的特点和擅长发挥作用的领域。但哪一个模式都不能包打天下。因此网络化教学要走多元化发展道路。
作为体会比较深刻的大学学习,我深深地感觉到大学生有更位自由的成长空间。主要的课程一定要学进去,学透,否则对于以后自己主动地学习打下一个非常扎实地基础。大学的每一门课程都是很紧张的,无论是课时还是课后地练习与实践。所以我在学习地过程中迫切地希望能够有这样一个更加灵活,更加方便的空间,来供我们进行自主学习。它可以是多方面地,全方位地,从课件下载,在线答疑,课堂教学到留言反馈,自我测试,再到相关网站的友情链接,以及新闻中心的设置。不仅加深了我们对于本门课程的学习理解,而且也开阔了我们的眼界,很好的培养了我们自主学习的精神。也位很多学有余力的同学提供了很好的进一步发展钻研的空间。作为老师课堂教学的有力补充,该系统具备了很多的特点。它是实时实地的,学生可以登陆这个覆盖全球的互联网,随时随地进行学习。同时系统还为学生提供了许多自我检测的功能,可以及时查漏补缺,对于以后的学习打下一个坚实的基础。学生还可以通过搜索查询关于本学科的最新动态,紧跟学科发展的步伐。与老师进行不受时间地点的限制的交流。
操作系统是计算机科学与技术专业一门十分重要的专业基础课,建设一个操作系统的教学网站是十分必要的。
第1章 JSP简介
1.1 JSP与本系统的开发
JSP是由Sun Microsystems公司倡导,许多公司参与一起建立的一种动态网页技术标准。是结合markup(HTML或XML)和JAVA代码来处理的一种动态页面。第一页第一次被调用的时候,通过JSP引擎自动编译成Servlet。然后执行,以后每次调用时,执行编译过的Servlet。Web应用的功能可以分为多个明确定义公共接口的组件,通过JSP将它们结合再一起。在选择本系统的开发语言时,作了非常全面的思考[2]。
1 JSP的应用前景
一般企业采用JSP建设大型的分布系统;PHP快速简洁,而且同JSP一样具有跨平台的特性;ASP和.NET只能在windows上运行,ASP与PHP比起来差不多,不过没有PHP那么多的函数,所以遇到复杂疑点的就要做组件,此外也不如PHP安全高效,而且最重要的是:ASP已经被微软抛弃,停止技术更新了,属于是正在死亡的技术,而PHP正日新月异的发展着,前途很广。.NET基本上有着与JSP相同的功能和目的。将来,统帅网络编程的肯定时JSP和.NET。而PHP则时两者最有力的竞争对手和黑马。
2 JSP技术
(1)将内容的生成和显示进行分离
用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面,并使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求变化的,例如请求账户信息或者特定的一瓶酒的价格等)。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在脚本中,所有的脚本在服务器端运行。由于核心逻辑被封装在标识和JavaBeans中,所以Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBC技术访问数据库或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这既有助于作者保护自己的代码,又能保证任何基于HTML的Web浏览器的完全可用性[10]。
(2)可重用组件
绝大多数JSP页面依赖于可重用的、跨平台的组件(JavaBeans或者Enterprise JavaBeans组件)来执行应用程序所要求的复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者和客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
(3)采用标识
Web页面开发人员不会都是熟悉脚本语言的编程人员。JSP技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。
(4)适应平台
几乎所有平台都支持Java,JSP+JavaBeans几乎可以在所有平台下通行无阻。从一个平台移植到另外一个平台,JSP和JavaBeans甚至不用重新编译,因为Java字节码都是标准的与平台无关的。
(5)数据库连接
Java中连接数据库的技术是JDBC,Java程序通过JDBC驱动程序与数据库相连,执行查询、提取数据等操作。Sun公司还开发了JDBC-ODBC bridge,利用此技术Java程序可以访问带有ODBC驱动程序的数据库,目前大多数数据库系统都带有ODBC驱动程序,所以Java程序能访问诸如Oracle、Sybase、MS SQL Server和MS Access等数据库。
(6)JSP的扩展性
通过开发标识库,JSP技术可以进一步扩展。第三方开发人员和其他员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工和如同标识一样的执行特定功能的构件来进行工作。
(7) JSP技术的整合性
JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧并且能扩展到支持企业级的分布式应用中。作为采用Java技术家族的一部分,以及Java 2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。由于JSP页面的内置脚本语言是基于Java的,而且所有的JSP页面都被编译成为Java Servlets,所以JSP页面具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。
(8)JSP的应用模型
利用JSP技术,动态信息由JSP页面来表现,JSP页面由安装在Web服务器或者使用JSP的应用服务器上的JSP引擎执行。JSP引擎接受客户端对JSP页面的请求,并且生成JSP页面作为对客户端的响应。
(9)JAVA的扩展
JSP页面通常被编译成为JAVA SERVLET,这是一个标准的Java扩展。页面开发人员能够访问全部的Java应用环境,以利用Java技术的扩展性和可移植性。当JSP页面第一次被调用时,如果它还不存在,就会被编译成为一个JAVA SERVLET 类,并且存储在服务器的内存中。这就使得在接下来的对该页面的调用中,服务器会有非常快的响应(这避免了CGI-BIN为每个HTTP请求生成一个新的进程的问题)。
(10)JSP的灵活性
JSP页面可以包含在多种不同的应用体系结构或者模型中,可以用于由于同协议、组件和格式所组成的联合体中。基于JSP的动态信息发布技术是一个开放的、可扩展的建立动态Web页面的标准。不论采用什么创建工具,开发人员都可以使用JSP页面来创建可移植的Web应用,在不同的Web应用服务器上运行[10]。
1.2 对于ASP,PHP,JSP进行比较
ASP(Active Server Pages)是一个WEB服务器端的开发环境, 利用它可以产生和运行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VB Script(Java script)作为自己的开发语言。
PHP是一种跨平台的服务器端的嵌入式脚本语言。 它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面.它支持目前绝大多数数据库。还有一点,PHP是完全免费的,可以从PHP官方站点(http://www.php.net)自由下载。而且可以不受限制地获得源码,甚至可以从中加进自己需要的特色。
JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病--脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行)。Sun 公司借助自己在Java 上的不凡造诣,将Java 从Java 应用程序 和 Java Applet 之外,又有新的硕果,就是Jsp--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序[8]。
三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。在 ASP 、PHP、JSP 环境下, HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 、PHP、JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP 、PHP、 JSP三者都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java 2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。 由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。之所以没有选择时下比较流行的PHP或是ASP,主要是因为作为一个毕业设计最重要的是学会开发的方法,而不是单纯的学会某一门语言,简单的说就是用什么语言开发最简单,最能达到锻炼的目的就用什么语言。
1.3 利用JDBC访问数据库
JDBC()是一种操作SUN所支持的数据库的新技术。在JSP中,JDBC可以看作是一个服务器组件(Server Component),更简单点说,是一系列的对象,应用这些功能强大的对象,即可轻松完成对数据库复杂的操作。本文中个性化页面的实现便大量地用到了JDBC技术。具体的操作步骤可以归纳为以下几步,安装J2SDK:
第一步:到SUN官方站点下载J2SDK的安装文件
j2sdk-1_4_2_04-windows-i586-p.exe,下载之后安装好J2SDK;安装完之后,设置环境变量:我的电脑---属性---高级---环境变量;选择---系统变量(S):设置JAVA_HOME环境变量:单击---新建,在变量名中输入:JAVA_HOME在变量值中输入:D:\Java(假设J2SDK安装在目录D:\Java下,反正就是J2SDK的安装目录。)然后---确定,到此已经设置好JAVA_HOME环境变量。设置CLASSPATH环境变量:单击---新建,在变量名中输入:CLASSPATH在变量值中输入:D:\Java\bin;.;D:\Java\lib; D:\Java\lib
\dt.jar;D:\Java\lib\tools.jar(中间的点号“.”和分号“;”必不可少。)然后---确定,到此已经设置好CLASSPATH环境变量。所以设置PATH的环境变量:单击---新建,在变量名中输入:PATH在变量值中输入:D:\Java;.;D:\Java\bin(中间的点号“.”和分号“;”必不可少。)然后---确定,到此已经设置好JAVA_HOME环境变量。三个环境变量设置好后,写一个简单的java程序来测试J2SDK是否已安装成功:在D:\下新建一个目录test[7];然后写如下程序:
Public class Test {
public static void main(String args[]) {
System.out.println ("This is a test program.");
}
}
将上面的这段程序保存为文件名为Test.java的文件,保存在目录D:\test下。然后打开命令提示符窗口,转到用户的test目录,然后键入下面的命令:
javac Test.java
java Test
此时如果看到打印出来This is a test program.的话说明安装成功了,如果上面的J2SDK安装成功的话,接下来继续安装Tomcat 。
第二步:安装Tomcat
到tomcat官方站点(http://www.apache.org/dist/jakarta/tomcat-4/)下载tomcat:jakarta-tomcat-4.1.30.exe,下载之后安装。(比如安装在D:\Tomcat下。)安装完之后,设置环境变量:我的电脑---属性---高级---环境变量;选择---系统变量(S):设置CATALINA_HOME环境变量:单击---新建,在变量名中输入:CATALINA_HOME在变量值中输入:D:\Tomcat然后---确定,到此已经设置好CATALINA_HOME环境变量。设置CATALINA_BASE环境变量:单击---新建,在变量名中输入:CATALINA_BASE在变量值中输入:D:\Tomcat然后---确定,到此已经设置好CATALINA_BASE环境变量。然后修改环境变量中的CLASSPATH,把Tomat安装目录下的common\lib下的servlet.jar追加到CLASSPATH中去,修改后的CLASSPATH如下:CLASSPATH =D:\Java\bin;.; D:\Java\lib; D:\Java\lib\dt.jar;D:\Java\lib\tools.jar; D:\Tomcat\common\lib\servlet.jar接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。如果上面的tomcat安装成功的话,接下来继续安装JSP访问SQL Server 2000的驱动程序。
第三步:安装JSP访问SQL Server 2000的驱动程序
从网站上下载驱动程序:SQL Server 2000 For JDBC 驱动程序,可在Google中搜索。然后将它安装。(比如安装目录是D:\SQLDriverForJDBC。)然后必须将安装目录中的lib目录下三个jar文件:msbase.jar,mssqlserver.jar,msutil.jar 拷贝到Tomcat目录下common\lib目录下,之后,修改环境变量中的CLASSPATH,把SQL Server 2000 For JDBC 驱动程序安装目录下的D:\SQLDriverForJDBC\lib\msbase.jar; D:\ SQLDriverForJDBC\lib\mssqlserver.jar; D:\SQLDriverForJDBC\msutil.jar; 追加到CLASSPATH中去,修改后的CLASSPATH如下:CLASSPATH=D:\Java\bin;.; D:\Java\lib; D:\Java\lib\dt.jar; _D:\Java\lib\ tools.jar;D:\LubeeTomcat\ common\lib\ servlet.jar; _D:\SQLDriverForJDBC \lib \msbase.jar;D:\SQLDriverForJDBC\lib \mssqlserver.jar; D:\SQLDriverForJDBC \ msutil.jar必须重新启动Tomcat!这样做的目的是,jsp页面在编译过程中不会出现找不到sql server driver类库的问题写一个简单的用来测试连接SQL Server 2000的JSP代码:
<%@pageimport="java.lang.*,java.io.*,java.sql.*,java.util.*" contentType="text/html;charset=gb2312" %>
<html>
<body>
<% Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs 为用户的数据库
String user="sa";
String password="sa";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UP DATABLE);
String sql="select job_id,job_desc from jobs";
esultSet rs=stmt.executeQuery(sql);
while(rs.next()) { %>
您的第一个字段内容为:<%=rs.getString(1)%><br>
您的第二个字段内容为:<%=rs.getString(2)%><br>
<% } %>
<% out.print("数据库操作成功,恭喜你"); %>
<% rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
将上面的JSP代码保存为sql_test.jsp,放在/Root目录下。在地址中输入:http://localhost:8080/sql_test.jsp,如果全部配置成功的话,将显示如下:
您的第一个字段内容为:1
您的第二个字段内容为:New Hire - Job not specified
您的第一个字段内容为:2
您的第二个字段内容为:Chief Executive Officer
您的第一个字段内容为:3
您的第二个字段内容为:Business Operations Manager
您的第一个字段内容为:4
您的第二个字段内容为:Chief Financial Officier
您的第一个字段内容为:5
您的第二个字段内容为:Publisher
您的第一个字段内容为:6
您的第二个字段内容为:Managing Editor
您的第一个字段内容为:7
您的第二个字段内容为:Marketing Manager
您的第一个字段内容为:8
您的第二个字段内容为:Public Relations Manager
您的第一个字段内容为:9
您的第二个字段内容为:Acquisitions Manager
您的第一个字段内容为:10
您的第二个字段内容为:Productions Manager
您的第一个字段内容为:11
您的第二个字段内容为:Operations Manager
您的第一个字段内容为:12
您的第二个字段内容为:Editor
您的第一个字段内容为:13
您的第二个字段内容为:Sales Representative
您的第一个字段内容为:14
您的第二个字段内容为:Designer
数据库操作成功,恭喜你
第2章 网站需求分析
2.1与传统教学的比较
操作系统的教学网站目前的针对对象是教师和学生。以前,我们的教学主要是通过面对面的讲授。这样,有很多优势:教师可以与学生直接交流。但是也有许多不尽人意的地方:课堂教学很大程度上受到时间和空间的限制。浪费了教学资源同时对于学生的进一步的学习具有一定的局限性[2]。
远程教育是以开放的、灵活的、终身的教育发展为目标,它是传统教育的延续发展,同时,也是对传统教育的巨大变革,打破了传统教育的局限,具有传统教育所不可比拟的优点:
1 开放性
所谓开放,是指目标开放-即学校向学习的对象开放;教育资源-即教学课程开放;教育方式-即管理的方式开放;教育场所和时间开放。
2 灵活性
远程教育的灵活性表现在:
(1)能满足受教育者个性化的要求,给受教育者以更大的自主权受教育者可以根据自己选择的方式去学习以提高学习效率从而使被动的学习变成主动的接受。在远程教育中,受教育者对个人的学习进度负责,学习评价着眼于学习的进度而不是论其考试成绩的成败,受教育者的学习要求受教育者、教师的配合,以便学习的内容符合工作的要求。受教育者的学习以自学为主,学校更多的是提供学习的条件和服务,传统教学?以教师为中心"、"以课堂为中心"逐步为"以学生为中心","以自主学习为中心"所替代。
(2)程教育覆盖面广、传播手段灵活多样,教育资源和学习不受时空限制,可以随时、随地为受教育者提供教育服务。
(3)远程教育可以实现多家高等教育单位的多种形式的合作,实现优势互补,充分发挥高等教育的作用。
3 大众普及性
这个优点是建立在前两个优点的基础上的:正是因为远程教育的开放性,才有可能为不同基础、不同经历的受教育者提供受教育的机会;同时,亦是由于远程教育的灵活性,才能为不同背景、不同职业的受教育者接受继续教育提供了可能。因此远程教育具有大众普及性的特点。
4 学习的终身性
知识本身是需要即时更新的,掌握知识的人的知识也是需要即时更新的,从而使学习成为一个贯穿终身的持续性的活动。在当今社会,为适应市场经济的运行要求,在职人员必须适应资源社会化、配置市场化和使用价值化的要求,"创新人才是资本"成为一种基本的观念,新知识、新技术在当今社会环境中扩散速度很快,快速的扩散必然导致对知识、技术的更新要求也加快,从而又促使新的东西产生。由于知识的更新速度的加快、半衰期的缩短,在职人员必须不断的为自己补充新的知识,接受新的信息,才能赶上职业要求的变化,西方学者Dhanarajan认为,现代化的教育必须训练人们的创造力,能够适应迅速变化的工作环境,教育机构将根据社会的需要、学习者的要求和本地的实际情况提供灵活多样的课程。远程教育利用网络实现了这方面的要求。
5 社会资源共享性
教育部长陈至立在《面向21世纪教育振兴计划》一文中指出:"现代远程教育工程",是在我国的教育资源短缺的条件下办好大教育的战略措施。
2.2网站的流程
通过浏览网站,在获取网站上提供的信息资源,并且利用网站提供的各项辅助学习的服务。使用该网站,使学习十分方便。比较网站教学与课堂实际教学相比较。整个网站功能很多, 大体的流程如图2-1与图2-2所示[4]。
操作系统教学网站的建设成功的实现了作为课堂教学有力补充的功能。有效的吸引了学生的学习热情。为学生的学习提供了有利的条件。节省了大量的时间,因为它是一个操作系统学习资源的集合,随着不断的更新,使学生有了更多的学习的空间与兴趣。节省了金钱,计算机的书本是相当贵的,有了网上课件下载,使得许多学生有了一个廉价而有效的学习空间。还有在线答疑使学生只要有一台电脑,可以上网,就可以随时随地向老师进行提问,没有任何的限制[2]。
总体来说:操作系统教学网站主要实现的功能模块有如下几个:课程介绍、教学资源、课程表、课堂教学、在线答疑、其他课程、课件下载、留言反馈、自我测试、成绩管理、站内搜索、公告专栏、友情链接、校园风景、新闻中心、烂目导航等程序模块。 上述功能为最基本的功能,必须实现。
操作系统的教学网站的实现必须吸引学生的眼球,使学生有兴趣有耐心自主地进行学习,使得学生在课堂之余将课堂上遗留的问题解决掉,消化掉。同时也与老师之间建立起一种探讨学习的关系。老师也可以更加进一步的达到传道,受业,解惑的目的[2]。这对于我们大学生相对宽松的学习时间是一个很好的利用。相信对于大家都是不无裨益的。
3.1综合管理系统结构
根据网站的需求分析说明,对操作系统教学网站进行模块化设计。其中包括一些静态的页面主要通过超链接实现包括:学院介绍,教学资源,课程表,其他课程等。使学生对于学校的概况以及网站的教学资源有一个比较完全的了解[2]。
设计了课堂教学这一模块,使学生可以像在课堂上一样,浏览幻灯片,接受学习知指导,进行课程学习,并且可以进行课堂练习,进行自我检测学习效果,查漏补缺。
课件下载是一个非常有用的版块,有条件的学生可以将其下载在电脑上,用于自己平时的学习。成为老师课上教学的有效补充。
留言反馈是了解学生的意见与建议的一个非常有效的途径。同时也是教师与学生交流的平台,学生可以向老师提出关于学习方面的问题,老师也可以对于这些问题进行解答。使教师和学生有了更多交流的机会与空间。
自我测试是学生检测自己学习成果的模块。
成绩管理是一个非常复杂的模块,分为多级管理员与用户。有登陆检测,取回密码,注销帐户。对于不同权限的用户进入不同的界面,进行成绩的管理。
其他的版块是网站中最常见的功能,如:友情链接,校园风景,栏目导航等。
网站前台结构图如图3-1所示。
3.2后台管理系统结构
针对网站的多种资源,需要及时进行更新,才可以保持网站的有用性。所以需要后台管理员进行资源的更新。由于新闻中心的新闻采取的方法是超链接,所以只要及时更新链接就可以了。对于其他模块的信息进行后台的更新。以及在线答疑模块,对多余的时间过长的疑问与解答,进行整理删除。
后台具体结构图如图3-2所示。
C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件[5]。
B/S是 Brower/Server的缩写,客户机上只要安装一个浏览(Browser)如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个:只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。对客户端的操作系统一般也会有限制。可能适应于Win98, 但不能用于win2000或Windows XP。或者不适用于微软新的操作系统等等,更不用说Linux、Unix等。B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。以对于我们网站建设无法完采用C/S模式来实现管理[5]。只有通过采用B/S,从而为网站管理提供更大的管理余地,系统结构如图3-3所示。
4.1数据库分析
作为一个具有一定应用价值的教学网站系统,从本质上说其操作的对象为数据库中存储的具体记录。因此不仅要求所使用的数据库具有比较高的稳定性,安全性及高负载下保持足够响应的能力,还要求作出科学的数据库逻辑结构设计,以提高数据库的利用效率和减少数据冗余。
以这种思想作为设计策略,分析系统应满足以下几项需求:
(1) 系统用户包括教师,学生与管理员用户;
(2) 附件上传及管理功能;
(3) 不同权限管理员的权限验证;
(4) 留言版块的表结构;
(5) 在线答疑的表结构;
(6) 成绩管理的表结构。
4.2数据库实体关系设计
通过上面的简单的分析,我们可以设计出数据库的逻辑结构----E-R图[7],即实体-关系图,从而建立数据库的物理结构即表结构.所谓实体反映到数据库中即为数据表,它存储着具体的记录信息;所谓关系,即表与表的关系,这种联系大多是通过外键(FK:Foregin Key)实现的.根据需求,设计了四个表网站数据库(feedback):留言模块表(feed),在线答疑模块表(feedback),成绩管理模块数据库(score_gd):注册登陆表(gzmy_manage_user), 成绩管理表(gzmy_mili_info),如图4-1和图4-2所示。
4.3系统数据字典
确定了数据库的逻辑结构之后,接下来需要作的就是将这些概念性的,逻辑性的东西转化为数据库中能够存放信息的数据表。数据库系统的选用需要根据系统的需求而定。本设计以大中型数据库系统MS SQL Server 2000作为系统使用的数据库系统平台。
网站数据库(feedback)中的留言模块表(feed),记录留言的各项信息,例如:信息序号用来在数据库中唯一标识该条留言记录;留言种类用来区分留言的类别;主题与内容是此条留言的主要内容;其他字段用于记录该留言者的相关信息[7],如表4-1所示。
表4-1 feed留言模块表
序号 |
字段的英文名称 |
中文含义 |
字段类型及其精度 |
数据说明 |
是否主码 |
1 |
idd |
信息序号 |
自动增加int(4) |
NOTNULL |
P |
2 |
idea |
留言种类 |
VARCHAR(20) |
|
|
3 |
subject |
主题 |
VARCHAR(20) |
|
|
4 |
liuyan |
内容 |
VARCHAR(300) |
|
|
5 |
name |
名称 |
VARCHAR(20) |
|
|
6 |
|
邮件地址 |
VARCHAR(30) |
|
|
7 |
tel |
电话 |
VARCHAR(20) |
|
|
8 |
fox |
传真 |
VARCHAR(20) |
|
|
网站数据库(feedback)中的在线答疑模块表(feedback),记录在线答疑的各项信息:表示用来唯一标记用户;同时用户可以选择是提问还是解答;内容就是记录用户留言的具体内容,如表4-2所示。
表4-2 feedback在线答疑模块表
序号 |
字段的英文名称 |
中文含义 |
字段类型及其精度 |
数据说明 |
是否主码 |
1 |
id |
标识 |
自动增加int(4) |
NOTNULL |
P |
2 |
type |
答疑种类 |
VARCHAR(20) |
|
|
3 |
content |
内容 |
VARCHAR(300) |
|
|
成绩管理模块数据库(score_gd)中的注册登陆表(gzmy_manage_user),记录用户,管理员注册登陆的相关信息。Id用于唯一的标识用户;通过输入管理员帐号,名字,密码来进行登陆的身份验证,在数据库表中会存储相关的信息;一旦忘记密码或丢失密码,用户可以通过密码提示问题,并且输入问题答案进行验证,返回密码,如表4-3所示。
表4-3 gzmy_manage_user注册登陆表
序号 |
字段的英文名称 |
中文含义 |
字段类型及其精度 |
数据说明 |
是否主码 |
1 |
Manager_user_id |
标识 |
自动增加int(4) |
NOTNULL |
P |
2 |
Manager_user_nick |
管理员帐号 |
VARCHAR(20) |
|
|
3 |
Manager_user_name |
管理员名字 |
VARCHAR(20) |
|
|
4 |
Manager_user_pwd |
管理员密码 |
VARCHAR(20) |
|
|
5 |
Manager_user_quet |
密码提示问题 |
VARCHAR(100) |
|
|
6 |
Manager_user_answ |
问题答案 |
VARCHAR(100) |
|
|
7 |
Manager_user_sign |
文章所属焦点 |
INT(4) |
|
|
成绩管理模块数据库(score_gd)中的成绩管理表(gzmy_mili_info),如表4-4所示。记录学生的成绩具体情况。Msgid具体标识学生,作为该表的主键;学号,成绩一一对应;姓名记录学生的姓名;修改日期用来记录修改成绩的时间;排序进行成绩的排序。
表4-4 gzmy_mili_info成绩管理表
序号 |
字段的英文名称 |
中文含义 |
字段类型及其精度 |
数据说明 |
是否主码 |
1 |
Msgid |
标识 |
自动增(BIGINT) |
NOTNULL |
P |
2 |
Xuehao |
学号 |
VARCHAR(10) |
|
|
3 |
Content |
成绩 |
VARCHAR(10) |
|
|
4 |
Name |
姓名 |
VARCHAR(50) |
|
|
5 |
Usedate |
修改日期 |
DATETIME(8) |
NOTNULL |
|
6 |
Seq |
排序 |
INT(4) |
|
|
第5章 网站详细设计
5.1登陆模块的设计
保证网站的安全,网站浏览之前会有登陆界面,来区分用户及管理员的权限。可以说登陆系统就是网站的大门,没有钥匙就无法进入[6]。该网站主要针对本门课程的学生以及教师,因此在数据库中直接录入学生或教师的用户名,系统设置一个初始密码,学生或教师可以自行修改密码,达到保密的效果,如图5-1所示。
图5-1 登陆页面
5.2课堂教学模块的设计
课堂教学无疑是教学网站的重点,在这一模块中我们通过询问任课老师了解到。在这一模块之中应该有所学课程的简介,学习指导,课程练习等功能。因此我们网站的课堂教学模块的结构,网站的课堂教学模块的结构,如图5-2所示。
test/selftest1.jsp用于进行自我测试版块。 introduction.jsp用于课程简介。using.jsp用于课程简介。index.jsp用于课堂教学主体。以下为Java script语言的一些风格设置函数。
图5-2 课堂教学模块结构图
<link rel="stylesheet" href="style.css" rel="external nofollow" type="text/css">
<script language="JavaScript" type="text/JavaScript">
<!--
MM_reloadPage(true);
function MM_findObj(n, d) { //v4.01
var p,i,x;
if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n];
for (i=0;!x&&i<d.forms.length;i++)
x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n);
return x;
}
function MM_showHideLayers() { //v6.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3)
if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style;
v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
obj.visibility=v; }
}
//-->
</script>
自我测试是课堂教学版块设计过程中一个非常重要的部分,对于每次提交的答案,根据程序,对其进行比较判断。在JSP中有一个非常重要对象session网页是一种无状态的程序,从服务器端无法了解客户端的浏览状态。要记录用户的相关信息,维持会话状态,JavaServlet提供了一个在多个请求之间持续有效的会话对象。session支持这个功能,与application对象不同的是session保存个人信息,application保存公共信息[5]。因此可以取得session的数据来计算作题的时间。本系统实现的只是对于用户多作题的判断,输出结果。以下为学生提交自测题后,用于评判的程序:
for ( var i=0 ; i< document.forms.length ; i++ )
{var obj=document.forms[i];
if ( obj.elements.length > 0 && obj.elements[0].type=="radio" )
{
for(var j=0 ; j<obj.elements.length ; j++)
{var element=obj.elements[j];
if(element.type=="radio" && element.checked)
ssanswer[sn]=element.value;
}
if ( !ssanswer[sn] )ssanswer[sn]="未答";
if ( ssanswer[sn] == obj.id )
{totalscore+=ssscore;
message+="<tr align=center bgcolor='#CCFFCC' valign=center>}
else
{flag=0;
message+="<tr align=center bgcolor='#CCFFCC'
}
sn++;
}
else if ( obj.elements.length > 0 && obj.elements[0].type=="checkbox" )
{for(var j=0 ; j<obj.elements.length ; j++)
{element=obj.elements[j];
if(element.type=="checkbox" && element.checked)
{if (!msanswer[mn])
msanswer[mn]=element.value;
else msanswer[mn]+=element.value;
}
if(!msanswer[mn])
msanswer[mn]="未答";
if ( msanswer[mn] == obj.id )
{totalscore+=msscore;}
else
{flag=0;}
mn++;
}
}
课程的简介主要介绍计算机系统的核心软件--操作系统的基本概念、基本原理、主要功能及实现技术。重点讨论操作系统资源管理策略和方法、操作系统对并发活动的处理、操作系统的结构和用户界面。
使用说明主要说明使用本课件的方法。学习指导:对学习《操作系统原理》课程给予指导。课程学习:本课件的核心部分,包括操作系统原理的学习内容及其它必要环节。老师可以在课堂上当作课件作为课堂板书使用。学生可以当作自己学习的书本。课程练习:在线自测,通过若干组自测题进行练习,并可及时了解测试结果。左侧的目录栏可以直接作为课程学习的导航区,成树状。方便学生进行课程章节的查找。如下为分支的设计程序:
function Switch (dvn)
{var ExpandSign="";
if ( CloseOther )
{
for ( var i=0; i < document.all.tags("DIV").length ; i++ )
{
ExpandSign="none";
for ( var JudgeLength=1; JudgeLength <= dvn.id.length ; JudgeLength++ )
{var CurStr=dvn.id.substring(0,JudgeLength);
if ( document.all.tags("DIV")[i].id == CurStr )
{ExpandSign="";
break;}}
if ( ExpandSign != "" )
document.all.tags("DIV")[i].style.display="none";
}
}
if (dvn.style.display=="none")
{dvn.style.display="";}
else
{if (dvn.style.display=="")
{dvn.style.display="none";}
}
}
有两种方法进入课堂教学,点击首页的“进入课堂教学”进入 “绪论”的第一页,或者点击首页导航区的标题按钮进入相应的章节。在任一页面,都有关于本章、本节、本知识点的链接,同时相邻的知识点之间也有链接,使得跳转非常方便。对内容较多的知识点进行分页,相邻的页之间有链接。另外,每一章都安排了练习,可以点击每章的“本章练习”进入;并集中列出了本章的关键字,可以点击每章的“本章关键字”进入。在练习和关键字页面,都有到本章内容的链接;在关键字页面,点击上面框中的关键字,可以在下面框中看到该关键字的解释,解释后面还附了关键字所在页面的链接,可以点击进入。此外可以在留言版上对《操作系统原理》的教学网站的建设提出宝贵意见。
5.3留言反馈模块设计
留言反馈模块的结构如图5-3所示。
图5-3留言反馈模块结构图
本模块为JSP+Jeans+文本留言簿,进行简单说明。
style.css为CSS样式文件,统一该版块的风格,使页面看起来美观一致;
config.jsp全局变量(用户自定义参数,手动修改,包括管理密码);
index.jsp浏览留言 在本界面中留言者得输入姓名,电子邮件,主页名称,主页地址,选择性别,选择个性头像,填写留言内容;
gb_write.jsp签写留言;
gb_re.jsp回复留言,gb_del.jsp删除留言,view_ip.jsp查看留言者IP 但先得输入管理员的密码才能进行操作;
如下为回复留言的主要程序:
if(request.getParameter("remsg") != null){
remsg = new String(request.getParameter("remsg").getBytes("ISO8859-1"));
}
if(request.getParameter("html") != null){
html = request.getParameter("html");
checkData cData = new checkData(remsg);//初始化实例
if(html.equals("yes") == true){//如果使用HTML格式回复留言
remsg = cData.killHtml(false); //则屏蔽掉清除HTML代码的代码
}
else {//否则保留该代码
remsg = cData.formatHtml(false);
}
}
String s1 = "";
//调用Beans取得该ID的文件内容
redhat.setFile(file);
String s = new String(redhat.fileRead());
String[] tmp = s.split(sp1);
String[] tmps;
int i = 0;
StringBuffer sb = new StringBuffer("");
if(inpass != null){
if(inpass.equals(pass)){
for(;i<tmp.length;i++){
tmps = tmp[i].split(sp);
if(tmps[0].equals(id)){ sb.append(tmps[0]+sp+tmps[1]+sp+tmps[2]+sp+tmps[3]+sp+tmps[4]+sp+tmps[5]+sp+tmps[6]+sp+tmps[7]+sp+tmps[8]+sp+remsg);
}
else{sb.append(tmp[i]);
}
sb.append(sp1);
}
// out.println(sb);
gb_img.jsp显示头像;
text.txt存储的数据文件,由于该版块的设计规则为超过1000条留言自动删除,而且是面向学生的,用户的数量不会很大所以直接将用户的各项信息直接存入文件中,这样既节省了资源有加快了速度。checkData.jsp数据检测处理程序;程序设计中应检测e-mail,用户名,网址和一些特殊字符的判定[6]。以检测e-mail为例:
//返回值:布尔值(boolean)
public boolean checkMail(){
if(this.s.equals("")) return false;
try{
p=Pattern.compile("^[a-z_\\-0-9]+\\@[a-z_\\.\\-0-9]+$",Pattern.CASE_INSENSITIVE);
m = p.matcher(this.s);
return m.matches();
}
catch(Exception e){return false;}
}
/images头像文件夹;
/com/my/www/redhat/myfile.class操作文件的JavaBeans 。
关于查看用户的ip:直接调用request对象的方法getParameter,具体程序如下所示:
String id = request.getParameter("id");
if(id == null) id = "id";
%>
<jsp:useBean id="redhat" class="com.my.www.redhat.myfile" scope="request" />
<%
redhat.setFile(file);
String msg = new String(redhat.fileRead());
String[] tmp = msg.split(sp1);
String[] tmps;
boolean find = false;
for(int i=0;i<tmp.length;i++){
tmps = tmp[i].split(sp);
if( tmps[0].equals(id) && inpass.equals(pass) ){
find = true;
out.println("ID为"+id+"的留言IP为:"+tmps[1]);
out.println("<p><button onClick=\"javascript:window.history.back(-1);\">返回</button></p>");
break;
}
}
5.4数据库的连接
由于各模块频繁地与数据库打交道,如何与数据库链接就显得十分重要。前面我们已经提到,JSP采用JDBC技术访问数据库。
1 应用程序
程序实现激活JDBC方法的数据库,发送SQL,然后获取结果功能,执行以下任务[10]:
(1) 与数据源请求建立连接;
(2) 向数据源发送SQL请求;
(3) 为结果集定义存储应用和数据类型;
(4) 询问结果 过程处理错误;
(5) 控制传输,提交操作或卷回操作;
(6) 关闭连接。
2 驱动程序管理器
JDBC驱动程序管理器主要作用是代表用户的应用程序调入特定驱动程序:
(1) 为特定数据库定位驱动程序;
(2) 处理JDBC初始化调用;
(3) 为每个驱动程序提供JDBC功跑入口点;
(4) 为JDBC调用执行参数和结果有效性。
3 驱动程序
驱动程序处理JDBC方法激活,向特定数据源发送SQL声明,并且为应用程序获取结果。在必要时侯,驱动程序翻译与/或优化请求,这样使请求符合DBMS支持的语言,驱动程序完成以下任务:
(1) 建立与数据源的连接;
(2) 向数据源发送请求;
(3) 用户程序请求时,执行翻译;
(4) 将错误代码格式成标准的JDBC错误代码;
(5) 如果必要的话,管理游标如果是显示的话,建立传输。
4 数据源
数据源由用户应用程序想访问的数据源和自身参数组成(换句话说就是,DBMS类型和网络层)JDBC API定义了用户应用程序和驱动程序管理期间可能的交互作用,JDBC API定义了所有驱动程序和所有JDBC驱动程序和交互作用。
第6章 网站功能的实现
6.1登陆版块的实现
为了保证网站的安全性,设置一个登陆界面,输入用户名和密码。并且在整个网站的过程里都引入了config.jsp,使得用户只能通过登陆界面进行登陆,无法直接浏览网站。程序首先调用loginBean的setUsername()和setPassword()方法给Bean的实例输入用户名和密码这两个参数,接着调用Bean的excute()方法返回验证的结果,为真则认定用户为合法用户,程序设置两个session值,分别存放用户的登陆信息和用户的权限信息,再调用页面自动跳转至管理首界面,如图6-1所示。
图6-1 登陆界面
在登陆模块的设计过程中,MD5算法是一项非常有效的维护系统安全性的方法。
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,用户将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后就可以传播这个文件给其他用户,其他用户如果修改了文件中的任何内容,当对这个文件重新计算MD5时就会发现此文件已修改。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。
MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。一些黑客破获这种密码的方法是一种被称为“跑字典”的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。
即使假设密码的最大长度为8,同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P(62,2)….+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘组,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。
6.2主要信息版块的实现
6.2.1教学资源版块的实现
通过学院介绍版块中的<a href="teachersouse.jsp" rel="external nofollow" >教学资源teachersouse.jsp也可以通过超链接查看教师简介,教学设备简介,实验仪器简介,如图6-3所示。
图6-3 教学资源教师简介
6.2.2课程表版块的实现
通过学院介绍版块中的<a href="course.jsp" rel="external nofollow" >课程表course.jsp。也可以通过超链接查看操作系统,离散数学,数据结构的课程表,如图6-4所示。
图6-4 操作系统课程表
6.2.3其他课程版块的实现
通过学院介绍版块中的<a href="othercourse.jsp" rel="external nofollow" >其他课程othercourse.jsp也可以通过超链接查看java语言教学,c语言教学,离散数学,网页设计等,如图6-5所示。
图6-5 JAVA语言课程介绍
6.3课堂教学版块的实现
课堂教学是教学网站的重要组成部分通过<a href="ketang/index.jsp" target="_blank"> 单独弹出课堂教学的主页面。在index.jsp中我同样使用了框架(top.jsp ,left.jsp,prefrace.jsp)。整个页面分为上部,左部和右部。在top.jsp页面中我加了一个菜单栏,包括课程简介,使用说明,学习指导,课程学习,课程练习,等。在left.jsp页面中我用级联菜单把教师的课件按章节排好,以便于老师课堂上教学用。在prefrace.jsp页面是和left.jsp页面对应的,当教师在left.jsp页面中选择某一章节的内容,在prefrace.jsp页面中就会把课件显示出来。这样设计的目的是真实的模拟教师授课的全过程,无论从课件的浏览,到学习的指导,课程练习,以及及时发布消息的课程公告,如图6-6所示。
图6-6 课堂教学主页面
学生可以通过课程简介一栏对于课程有一个总体的把握,相当于日常生活中看到的教学大纲,如图6-7所示。
图6-7 课程简介页面
提供操作系统原理测试题是操作系统教学网站必须有的功能,该网站提供了两套操作系统原理测试题供学习使用。采用的是自己做题,系统打分的形式。不采用连接数据库的模式。题目和答案都放置在test.jsp页面之中,直接通过用HTML语言中的单选框和复选框规则把学生做的答案与在页面之中的标准答案进行比较,使得系统的运行速度有了很大的提高。同时,也方便了学生,提交后学生马上就可以知道自己哪方面没有学清楚。题目前一部分是单选题,后一部分是多选题。在进行答案的匹配比较方面有了一定的难度。现在实现的每张测试卷的测试题目数量有限,管理员必须及时更新。所以可以考虑连接题库,通过一定的通路进行调用。这样可以使学生很好的检测自己的学习水平。也为学生提供了一个动态的不断更新的题库。本网站实现的功能如图6-8所示。
图6-8 课堂练习页面
点击提交后,学生可以看到自己的测试情况。正确答案,学生的答案,得分情况。点击复位后,学生可以重新进行考试。学习的过程是不断提高的过程,也是对于自己记忆力的检测的过程。所以学生在进行依次检测之后,可以进一步对于已测或未测的题目进行检测。如果可以计算出学生哪一部分知识有漏洞,可以从题库中重新随机抽取相关的题目进行检测。使学生的学习效率有了很大的提高。关于本网站所实现的功能如图6-9所示。
图6-9 查看测试结果页面
教师的课件在课堂教学中是非常重要的工具,该版块功能强大,具体实现界面如图6—10所示。
图6-10 通过菜单浏览课件
页面的左边设置了一个目录树,分层显示,相当于资源管理器的形式,使学生对于课程的章节设置一目了然。教师上课时在右边的目录中选择上课所要讲的章节,其所对应的内容会在右边页面中显示出来。同时显示页面上还设置了上一节,下一节的按钮,可以更加方便读者,进行学习。
6.4课件下载版块的实现
实现课件下载是教学网站比较基本的功能,通过学院介绍版块中的<a href="download.jsp" rel="external nofollow" >其他课程download.jsp在页面上选择需要下载的教程或工具,然后通过链接到所需要的下载页面进行下载。具体实现界面如图6—11所示。
图6-11 课件下载目录页面
选择一个书目,进行下载。页面还包括相关网站,相关评论及新闻使学生可以非常轻松的找到自己所要的东西。网站就是一个资源库,所以指引用户找到想要的信息非常重要。用户不会在一个看起来迷糊的网站上停留很久,如图6-12所示。
至此,课件下载部分完成了,实现了基本的功能,但仍然存在一些不足的地方。
图6-12 课件下载界面
6.5留言反馈版块的实现
留言是一般网站都有的功能,只有通过留言工作人员才能知道自己做的好还是坏,才能把自己的工作做好先通过<a href="liuyan/index" >进入留言的页面。用户按照界面进行留言与提交。
本页面通过jdbc与sql sevser2000 数据库进行连接,把留言的各项内容加入到数据库中的留言表中,让网站管理员进行查看。本页面的连接数据库用的方法是使用usebean 调用javabean。管理员可以对于留言进行管理。具体实现的留言薄如图6-13所
示。
图6-13 留言页面
分配给管理员回复留言的密码,管理员通过此页面回复留言,保证留言版面的时效性。在数据库中,留言与回复的记录是有区别的。这样管理起来很清晰,代码的编写也比较方便,如图6-14所示。
图6-14回复留言页面
为了保证留言版的安全,或者追究责任,管理员可以通过该页面查看留言者的IP地址。主要是通过调查用户的session就可以获得,有关于用户主机的相关信息。采用JSP提供的对象进行直接调用。
图6-15 查看留言者IP的页面
第7章 网站的安全性
网站的安全性是非常重要的,网站测试是软件开发的最后步骤,也是关键步骤。在测试过程中要全面检查程序的正确性,模块间的连接,功能的实现是否正确,开发的产品是否符合要求。
1 重复(Repetition)
最明显的且最容易理解的压力条件就是测试的重复。换句话说,测试的重复就是一遍又一遍地执行某个操作或功能,比如重复调用一个 Web 服务。功能验证测试可以用来被弄清楚一个操作能否正常执行。而压力测试将确定一个操作能否正常执行,并且能否继续在每次执行时都正常。这对于推断一个产品 是否适用于某种生产情况至关重要。客户通常会重复使用产品,因此压力测试应该在客户之前发现代码错误。许多最简单的压力系统只实现这一个条件,但简单地扩 展功能验证测试来多次重复并不能构成一个有效的压力测试。当与下面的一些原则结合起来使用时,重复就可以发现许多隐蔽的代码错误。
2 并发(Concurrency)
并发是同时执行多个操作的行为。换句话说,就是在同一时间执行多个测试,例如在同一个服务器上同时调用许多 Web 服务。这个原则不一定适用于所有产品(比如无状态服务),但是多数软件都具有某个并发行为或多线程行为元素,这一点只能通过执行多个代码示例才能测出 来。功能测试或单元测试几乎不会与任何并发设计结合。压力系统必须超越功能测试,要同时遍历多条代码路径。至于怎么做到这一点取决于具体的产品。例如,一个Web服务压力测试需要一次模拟多个客户机。Web 服务(或者任何多线程代码)通常会访问多个线程实例间的一些共享数据。因额外方面的编程而增加的复杂性通常意味着代码会具有许多因并发引起的错误。由于引 入并发性意味着一个线程中的代码有可能被其他线程中的代码中断,所以错误只在一个指令集以特定的顺序(例如以特定的定时条件)执行时才会被发现。把这个原 则与重复原则结合在一起,您可以应用许多代码路径定时条件。
3 量级(Magnitude)
压力系统应该应用于产品的另一个条件考虑到了每个操作中的负载量。压力测试可以重复执行一个操作,但是操作自身也要尽量给产品增加负担。例如,一个 Web 服务允许客户机输入一条消息,您可以通过模拟输入超长消息的客户机来使这个单独的操作进行高强度的使用。换句话说就是,您增加了这个操作的量级。这个量级 总是特定于应用的,但是可以通过查找产品的可被用户计量和修改的值来确定它 — 例如,数据的大小、延迟的长度、资金数量的转移、输入速度以及输入的变化等等。单独的高强度操作自身可能发现不了代码错误(或者仅能发现功能上的缺陷), 但与其他压力原则结合在一起时,您将可以增加发现问题的机会。
4 随机变化
最后一点,任何压力系统都多多 少少具有一些随机性。如果您随机使用前面的压力原则中介绍的无数变化形式,您就能够在每次测试运行时应用许多不同的代码路径。下面是几个关于怎样在测试生 命周期内改变测试的示例。使用重复时,在重新启动或重新连接服务之前,您可以改变重复操作间的时间间隔、重复的次数,或者也可以改变被重复的 Web 服务的顺序。使用并发,您可以改变一起执行的 Web 服务、同一时间运行的 Web 服务数目,或者也可以改变关于是运行许多不同的服务还是运行许多同样的实例的决定。量级或许是最容易更改的 — 每次重复测试时都可以更改应用程序中出现的变量(例如,发送各种大小的消息或数字输入值)。如果测试完全随机的话,因为很难一致地重现压力下的错误,所以 一些系统使用基于一个固定随机种子的随机变化。这样,用同一个种子,重现错误的机会就会更大。
测试是软件开发过程中至关重要的部分,并且一个重要的、经常被曲解或忽略的部分是压力测试。遵循上面详细说明的原则,就可以设计并实现有效的压力测试系统,用来查找一些与您代码相关的、比较隐蔽的问题。无论是利用预先写好的工具,还是创建一个完全专用的压力系统,压力测试都是用于查找 Web 服务(或其他任何程序)问题的本质方法,并能最终提高软件产品质量。
第8章 系统开发难点与技巧
在系统的开发过程中,我遇到了一些问题和难点。通过查阅书籍这些问题基本都得到解决,现将系统开发的难点与技巧总结如下:
1 中文的乱码问题的解决方法
在JSP页面中首先,在HTML的head标签内加入meta信息为<meta HTTP-EQUIV=”content-type” CONTENT=”text/html; charset=GBK” >其作用是告诉客户端浏览器,这个HTML为GBK编码文件。在JSP中加入以下的一句编译指令,定义JSP程序使用字符集为GBK<%@ page contentype=”text/html; charset= GBK”%>这样就保证了JSP服务器引擎将会把JSP的输出以GBK编码的形式输出。
2 在JSP和BEAN中加载数据驱动
加载数据驱动需要三个JAVA包 ,即msbase.jar mssqlserver.jar和msutil.jar.下载后放在Tomcat目录下的commom/lib文件夹下即可。接着使用JDBC驱动中的DriverManager类中的getconnectin()方法与数据库建立连接。Connection conn= river Manager.getConnection(url,user,password)。
3 sql_data的错误
使用Java 平台开发比较大型的系统时,经常需要在Bean之间进行相互调用,包括功能调用和参数调用。有时会出现“无法定位sql_data”的错误,使调试失败。可以在classpath环境变量中加入”d:\JSP_WEB\Iofosite\WEB-INF\classes”这个目录。
4 Java类名注意事项
建立Bean类的时候注意。Java的类名必须与类的文件名称相同,否则编译会出错。
5 JSP大小写敏感
在编写一个JSP程序时一定注意不要将大小写混淆。另外,在浏览器的地址栏中输入地址也是区分大小写的。
6 判断两个字符串是否相同
在JSP中判断两个字符串是否相同,要使用compareTo或者equals()方法,不要用“=”号,因为在JAVA中String变量不是一个简单的变量而是一个类实例。
7 代码进的块化处理
对代码进行模块化处理,可以提高代码的复用性及提高开发速度。代码的模块化处理,包括将需要的进行复用的代码编写成一个子程序后者函数,或者一个类,以便使用时进行调用。将代码太长饿函数按功能分解为几个函数的调用,这些会大大提高程序的可读性和维护性。
8 网站特点
(1) 所有管理用户可以在线修改自己的资料、密码,使得系统更安全管理用户可以在后台进行留言交流。
(2) 可以在后台进行数据库的备份、恢复,并可以执行SQL语句;可以查看服务器的变量。
(3) 后台可以方便查看学生提交的相关文档,以及课件的数量与更新情况,新闻,介绍等文章。
(4) 文件的上下载功能的实现,以及相关内容的显示。
(5) 管理员用户分级管理,权责分明。有利于网站的建设与稳定。分为超级管理员,教师,学生。
在学习了基于Windows的网络服务器体系结构和JSP等网络开发技术,我对于网络编程思想有了较深的理解。并且在建设操作系统教学网站的过程中,进一步深化了我对于网络教学的认识。本文着重讨论了Web服务器端的编程实现情况,即对整个网站的登陆,课堂教学,留言反馈等模块的实现,并建立实验网站对整个系统进行性能测试。
学习JSP的过程中,我深刻的感受到学好JSP必须注意几点内容:首先要充分理解JSP的工作原理,为网站的建设打下坚实的基础;然后在JSP中正确使用类,而且要把类当成JavaBean来用;方法应该设计成简单的功能性单元并且方法应该简明扼要;设计应该思路清晰,同时注释以及一些事例也是必须的;分析,设计,实施时要善于与别人进行交流,可以避免编程中的许多误区;JSP的调试也相当关键。网站的基本功能已经实现,但是仍然存在一些问题没有解决。比如试题库的实现,登陆界面的加密等。
JSP语言是一门非常有用和有效的语言,具有结构清晰,维护方便,保护代码比较好的优点。同时JSP相对于其他语言来说消耗空间较多,但是其全内存操作带来了效率的提升,所以可以说JSP在时间与空间的平衡中寻找到了一个黄金分割点
参考文献
[1] Bruce Eckel[美]著,《Java编程思想:第3版》 Thinking in Java, Third Edition ,北京:机械工业出版社。
[2] 高成著,《JSP动态网站建设》,北京:国防工业出版社,2002年4月。
[3] Jean-Paul Tremblay等著,《 面向对象数据结构与软件开发(Java版)》,北京:清华大学出版社2005年3月。
[4] 林春梅,“JSP在远程教育资源库开发中的主要技术问题”,《计算机应用》,2002年06期。
[5] 罗俊,“用JSP/Servlet构建的三层式产品开发过程管理系统”,《计算机工程》,2002年04期。
[6] Mark Wutka[美],《JSP和Servlet程序设计使用专辑》,北京:机械工业出版社2002年3月。
[7] 任艳,“应用JSP进行数据库信息发布” ,《计算机工程与应用》,2002年07期。
[8] Simon Brown/Sam Dalton/Dan Jepp[美]著,《JSP编程指南(第三版)》,北京:电子工业出版社2004年8月。
[9] 谭淑英著,“服务器端的动态网站开发技术”,《计算机应用研究》, 2002年05期。
[10] 肖金秀著,《JSP程序设计教程 》,北京:冶金工业出版社,2003年10月。
[11] 应宏,“基于B/S模式建立信息系统方法的比较分析”,《重庆三峡学院学报》 ,2002年03期。
[12] 殷兆麟著,《Java网络高级编程》,北京:清华大学出版社/北京交通大学出版社,2005年5月。
[13] Cay S.Horstmann & Gary Cornell.Core Java 1.2 :Volume 1-Fundamentals. Sun Microsysterms Press ,1999.
[14] Richard Monson_Hasfel.Enterprise JavaBeans.Second Edition. O ‘reilly & Associates,Inc. 2000.
[15] Patrick Chan.The Java Developers Slmanac1.4 , Volume 2.Person Edition,Inc. 2002.
附 录
附1.0 MD5的Java Bean实现(md5加密用户密码):
login.html是用来接受用户输入的表单,login.jsp用来模拟使用MD5 Bean的登录过程。
<html><head><title>Login</title></head>
<body>
<form method="POST" action="login.jsp">
<p>UserID:<input type="text" name="UserID" size="20">
Password:<input type="password" name="Password" size="20"></p>
<p><input type="submit" value="Login" name="Login"></p>
</form>
</body></html>
下面是login.jsp
<%@ page language=java %>
<jsp:useBean id="oMD5" scope="request" class="beartool.MD5" />
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>
<html><body>
<%
String userid = request.getParameter("UserID");
//获取用户输入UserID
String password = request.getParameter("Password");
//获取用户输入的Password
String pwdmd5 = oMD5.getMD5ofStr(password);
//计算MD5的值
PrintWriter rp = response.getWriter();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection
("jdbc:odbc:community", "", "");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from users
where userID='"+userid+"' and pwdmd5='"+pwdmd5+"'" );
if (rs.next()) {
rp.print("Login OK");
}else{
rp.print("Login Fail");
}
stmt.close();
con.close();
%>
</body>
</html>
谢 辞
毕业设计是大学生活的最后一课,也是相当重要的一课。在此,我非常感谢我的设计指导教师张翠军老师,在她的耐心指导和鼓励支持下,我的毕业设计得以顺利完成。感谢系领导和机房老师为我们提供了良好的设计环境。同时我也要感谢帮助过我的同学,朋友。尤其是我的同组同学刘振兴,在系统的设计过程中提出了许多建设性的意见和建议。在此,谨代表我本人向他们致以衷心的感谢,谢谢各位为本人的毕业设计所做的一切!
我将在以后的道路上再接再厉,取得更加优异的成绩!