第二章 基础知识及相关设计原理
2.1 Java 相关技术简介
Java,是一门我们所熟知的编程语言,它最先由 Sun 公司推出,是一门跨多平台,具有高移植性的面向对象编程语言。使用 Java 语言进行开发最大的特点和优势在于 Java 所编辑程序的多平台运用能力,即 Java 所编辑的程序可以在多个平台上进行使用。现今生活中 PC 与手机充斥着我们的生活,而大多数的手机游戏或者手机应用程序都是使用 Java 语言编写的。Java 编辑的程序,无视所根植的操作系统,或者是硬件上的差别,Windows 系统上可以使用的程序,到了Linux 系统上照样可以使用,Java 程序可以在任何平台上运行,可以说是通用的语言之一[1].
接下来的部分,我们将对 Java 语言以及一些相关的技术做出介绍,让读者对本次研究中所涉及的基础知识有一个简单的了解。
2.1.1 Java 简介
Java 语言最初在 1995 年由美国 Sun 公司推出,是一种极富创造力和想象力的面向对象高级程序设计语言。它的设计者是有 Java 之父之称的 Sun 研究院院士,James Gosling 博士。Java 具有很强的可移植性,使用 Java 语言进行开发最大的特点和优势在于 Java 所编辑程序可以在多种系统或者平台上运行。现今生活中随处可见高科技终端设备,而人们日常生活中接触到的大多数的手机游戏或者手机应用程序都是使用 Java 语言编写的。Java 编辑的程序,无视所根植的操作系统,或者是硬件上的差别[2],Windows 系统上可以使用的程序,到了 Linux系统上照样可以使用,Java 程序可以在任何平台上运行。
Java 的编译过程类似于 C 语言,采用的是一种编译和解释相交加的过程。
Java 程序所使用的关键字或者定义的一些类文字非常贴近日常生活中的使用,开发人员很容易掌握这种语言编辑模式,也很容易进行连锁开发,同时,Java 中有着太多封装好的功能类,我们可以直接使用,为开发人员省去了许多烦恼。
Java 程序的编译过程可以通过下面这个图来理解。在一开始,程序代码在编译器中进行编译,所生成的是一系列字节码,这些字节码被送到 Java 虚拟机(JavaVisual Machine JVM),Java 虚拟机将字节码转化为机器码,然后机器码在操作系统上开始运行[3],Java 程序运行的整个过程非常类似于 C 或者 C++,但实际上在编译和回收机制处理等方面,Java 和 C 又有着显着的不同,这一特性在网络端程序编写方面体现的非常明显,图 2-1 展示了具体的编译和执行过程。
2.1.2 JSP 技术简介
JSP(Java Server Pages)技术实现了存在于 HTML语法和思维中的 Java 扩张,JSP 技术与 Servlet 一致,都是本地编写,服务器端执行,从这个角度讲,就不难理解 JSP 技术的高移植性,从使用上来讲,JSP 技术是在用 Java 语言来编写一种类 XML 的文件(包括 tags 和 scriptlets)[4],这一点与现今存在的 ASP 技术很像,众所周知,ASP 技术就是一种本地编写,服务器端执行的技术,这种技术在 JSP 出现之前广泛运用于 HTML 的语法和思维中,而 JSP 比 ASP 优秀的地方,就是它轻量化了网页编写的整个工程,省去了很多不必要的代码的编写,大量节省了开发人员的时间和精力。
JSP 编写一个非常好的地方在于,不同于其他技术所实现的,网页返回的是一个相当复杂的地址或其他信息,JSP 技术所实现的是返回一个 HTML 文本,首先从文件量级上就减轻了传送的压力,其次因为只传送一个 HTML 文本,就没有跨平台执行的压力了,所以从这个角度来说 JSP 技术更适合于当今的网络发展。
JSP 技术最伟大之处,就是脱离了认为网页编写和网页逻辑必需捆绑实现固化思维,将网页逻辑与网页的设计与显示分别开来,从模块和组件的角度分化和重组程序,支持基于组件的动态网页开发与设计,让存在在服务器端的各式各样的应用开发变得快速且简便。当一个 Web 端的服务器开始处理基于 JSP 技术的网页处理请求时,第一件事是访问该动态网页的主程序部分,包括程序模块和各种组件,然后在这个基础上,进一步实现设计与编写动态网页所需要的各种功能和技术[5].
JSP 相比于现阶段其他技术的优势在于:
(1)Java 更出色,更人性化,程序在移植过程中,除了系统之外,源代码部分不需要做出任何改变。
(2)JSP 具有强大的可伸缩性[6].从编写实现一个小小的的 Jar 文件,就可以跨平台的运行 Servlet,JSP 技术,到通过联通多台服务器一起来实现进行的集群式开发和多负载联合均衡。从一台服务器进行的事务处理,到多台服务器共同进行应用级的事务处理,甚至是消息处理,系统维护这种较为复杂的技术。
(3)JSP 汇集了无数优秀的开发人员,他们共同奋斗已经得到了一大批高效实用的开发工具,更加可贵的是这其中的许多开发工具我们免费就能得到,在JSP 实现开发的时间里,已经有许多开发工具得到测试并顺利的运行在多个环境与平台之上。
2.1.3 JDBC 简介
JDBC(Java Data Base Connectivity),是一个 Java 程序连接数据库的应用接口,使用 JDBC 技术,我们实现本地数据存储到网络端的目的,同时使用JDBC-ODBC 桥技术,我们可以用编辑好的一种访问程序访问多种关系数据库,这个特点在我们保持程序的复用性,即当不同教育机构使用同一个管理系统来连接不同数据库时,程序同样可以运行。
JDBC 中常用的类和接口有 Connection 接口,它代表所执行程序与何种关系数据库进行连接,并在连接后执行相应的 SQL 语句。Statement 接口,我们在连接数据库成功后,使用这个接口来发送 SQL 语句。PreparedStatement 接口,用于动态执行 SQL 语句。DriverManager 类,这个类属于 JDBC 的管理层,方便我们动态管理数据库。ResultSet 接口,用于临时安置和存储一些已经经过查询得到的结果集。
对于开发人员,作为 API 来讲,JDBC 可以说是为程序的开发与实现提供了一个业界认可的标准的接口,JDBC 强大的包容性使其使用了现有的 SQL 标准的同时,还仍然支持与其它类型数据库连接的标准(比如 ODBC 之间的桥接)。
JDBC 实现了以上所述的这些高效,系统的目标,使程序连接数据库进入统一的轨道,统一的模式,实现了一种高性能的接口。
2.2 B/S 模式分析
所谓的客户级别应用程序,指的是我们在系统中为了实现用户与数据直接交互所设定的一个模块。而服务器管理程序,在这里主要负责高效快速的对各方面资源进行系统的管理,打个比方,比如服务器管理程序就会实现对一个系统用户信息数据库的管理,服务器级别管理程序还有一个重要的功能,那就是当存在多个客户同时访问服务器上的一个资源时,也就是出现我们所说的死锁,或者饥饿现象时,我们的服务器管理程序可以对用户所访问的公共资源进行最大程度的优良化管理。中间组织者,它的功能是当发生应用程序与数据库的交互时,可以很好地连接客户应用程序与服务器管理程序。
而我们这里所说的 B/S 模式,是作为一种在网络互联的基础上,叠加用户层的管理,所形成的新兴的 MIS 系统平台[7].从原理的角度讲,B/S 模式是把刚才所介绍的 C/S 模式中,那种统一的服务器管理层,分成了一个或几个服务器,或者是服务器与应用程序的结合,从而形成了一种用户与服务器传送信息的三层次系统管理平台。
三层系统管理平台的第一层,指的是用户与网络所连接的接口部分,我们日常所实现的应用程序,在这里将会被集成显示在浏览器中,在这个显示过程中,HTML 文件会把单调的程序变成我们日常所见到的五光十色的网页,我们日常所浏览的信息也大多来源于此。与此同时,我们会发现日常生活中我们所接触的网页不仅仅是在显示信息,我们还通过网页在交互许多重要信息,比如在线填写一些表格,在网上传送文字交流思想等等,那么这就涉及到信息往服务器端的提交,而这个提交过程,就要使用到接下来将要介绍的第二层。
第二层中,WEB 服务器将根据用户上一层所做出的行为来提供响应,这个响应过程是这样来进行的,首先服务器会根据用户要求生成一系列的网页代码,而这个网页代码中已经包含了用户所要求的结果,将这个生成的网页代码发送至用户浏览器,用户便得到了这一次交互所需要的信息。需要注意的是,如果用户首次提出的要求中包括对数据库的访问,那么 WEB 服务器还需要与数据库合作完成用户的需求,其中涉及的技术过于复杂,我们在这里不做解释。
第三层是数据库服务器,数据库的管理过程类似于以上介绍的 C/S 模式,都是基于对并发任务的协调。通过以上的介绍,我们不难发现B/S模式相较于C/S模式有着很强的适应性,更加能够适应现今复杂的网络环境。事实也是如此,现今大多数企业都已经开始设计并研发自己的 B/S 模式下运行方案,由于学生管理系统客户量极其庞大,而且客户分级复杂,客户的差异性小,所以需要使用一种多级访问,多级控制的管理系统,便于各个级别的把关和监控。B/S 模式是我们本次研究的最佳选择,基于 B/S 模式设计的学生成绩管理系统将大大减轻管理环节的任务。
2.3 Struts 框架
通常我们所说的 Struts 框架,指的是在 2004 年由 Apache 开源软件联盟所开发的一个开软软件。Struts 框架的英文全称是 Jakarta Struts Framework.
Struts 框架的理解与 MVC 设计模式有着密不可分的关系,在基于 Struts 框架的设计与开发中,首先显而易见的是它是面向对象设计的,其次它在使用 MVC的思想时充分考虑了编写代码的弹性[8].比如在 Struts 框架中,所有代码被形象的划分为以下三个部分,Model,Controller 和 View.在 Model 部分的代码,我们可以将它们形容为是处理事务与应用范围内的相关逻辑,它们的主要作用在于对范围内的对象状态进行管理,并提供一个加以运用的模板;Controller 部分的作用是连接 Model 与 View,也就是说它将接收到来自 View部分的数据,资料和信息,经过整理和运算再发送到 Model 部分中去,完成一次信息的交互,也就是完成了一个流程控制过程;至于 View 部分,则主要负责收集并展示一部分我们收集的信息和材料,并且在与用户产生信息交互时,可以获取信息输入者的资料。View 是整个框架的信息展示部分。
Struts 是一个基于弹性控制的控制层,它将 MVC“分离显示逻辑和业务逻辑”的综合思想运用的恰到好处,体现了它动态的一面,可以说 Struts 是 MVC的一种框架展示,它符合 MVC 的多种特性,并且在和 J2EE 技术相结合后产生了多层系的扩展与提升,许多结构和特性都随着核心技术的发展有了显着地改变。图 2-2 展示了 Struts 框架的工作原理。
2.4 Servlet 技术
Servlet 指的是我们编辑运行在服务器上的一组程序,使用 servlet 程序来实现远端服务器的使用,并使用 Servlet 技术来进行数据库存储和远端数据的各种处理,这种程序往往是微型的,片段化的,每一个独立的类或者函数构成一小组程序,这一组程序可能只有一种功能,依靠这一组小程序解决一个问题,这些程序被整合成一些独立的代码文件,与网页捆绑在一起,进行编译和使用[9].Servlet的使用一般都是在打开网页的客户端上,用户打开网页,与网页捆绑在一起的Servlet 程序开始运行,进行一些数据计算,图形操作或者是定位等功能,当用户关闭网页时,Servlet 程序进行自动保存,记录一定的用户信息和操作流程,随着网页自动关闭。图 2-3 形象的反映了 Servlet 的实现过程。
Servlet 的生命周期如下,首先是实例化,即通过 Servlet 容器加载一部分组件,然后成功创造一个 Servlet 实例;其次是初始化,开始运行 init()方法,init()方法用于初始化 Servlet 实例,这个过程首先建立一个 ServletConfig 接口,通过这个接口向 Servlet 发送我们即将初始化的一些配置文件信息,是名称--数值的形式。接着 Servlet 再通过ServletConfig 接口连接到 Servlet 容器,交互信息,最终通过 getServletConfig 类来获取 ServletConfig的实现对象;然后是服务过程,通过实现 Servlet 组件中的 GenericServlet 类的 Service 方法,我们可以直接处理提交的用户请求,然后用 ServletRequest 接口和ServletResponse 接口,分别实现请求的发送和响应。最后是释放过程,执行 Destory方法,来释放掉 Servlet 创建的实例。
2.5 开发工具介绍
2.5.1 Eclipse 介绍
Eclipse 是一款开源的集成开发工具,能够处理大部分 Java 语言的 Web 程序编辑工作,Eclipse 是现今做得最好的一款多语言集成开发环境。在使用 Eclipse来开发之前,首先需要配置 JRE,并且接入 Tomcat 软件,实现虚拟服务器的连接,方便我们实现网页端的程序编辑,并对部分功能进行测试与实现。
在使用 Eclipse 作为开发环境时,JDK(Java Development Kit)的查阅为我们减轻了许多困难,许多类的使用和继承都变得一目了然,对于一些类有时候我们需要重写其中的一些功能,这就需要我们查找它的父类,而有了 JDK,这个查找过程将变得十分轻松。
2.5.2 SQL Server 2005 介绍
SQL Server 2005 的特点是适合小型数据的管理,适合条目清晰,表格连通明显的数据库表格文件,同时大多数与之相关的开发工具都是免费的。
SQL Server 2005 通过协议层传递 TDS,然后分析和执行 SQL 命令,在查询优化器和执行器的工作下将数据发送到存储引擎,并最终进行提取,SQLServer2005 具有一个数据缓冲池,方便我们暂时存储已经具有查询结果的结果集。图2-4 所体现的是 SQL Server 2005 所涉及的服务器与数据库交互流程。
2.6 本章小结
本章主要描述了本次开发的基础知识部分以及相应的开发技术与开发环境。
从 Java 语言及相关技术的介绍,再到 B/S 模式分析和相关知识浏览,再到 Struts框架简介和 Servlet 技术的介绍,最后是此次开发的工具介绍。通过这些知识的了解让我们对此次开发有了一个更加具象的认识。通过阅读本章读者会了解相关技术概念,为理解后面章节打下基础。