基于JAVAEE的法律咨询系统

基于JAVAEE的法律咨询系统

摘  要

        随着计算机技术的发展和进步,计算机应用已涉及人们生活的方方面面。法律是通过调整社会关系来达到人们对社会施加影响的目的。法律调整的对象和规制的基础是各种真实的社会关系。法律咨询体系是论坛的形式的问答系统。它采用MVC模式,基于JSP的法律咨询系统,数据库使用MySQL5.0。在系统设计过程中,尽可能使用易于阅读和易于阅读的人机界面,简单的操作和清晰的引导步骤可以使用户在最短的时间内熟悉系统过程。在软件开发过程中首先是系统的正确性数据的完整性和处理的正确性为系统的正常运行提供了强有力的支持。在此基础上对程序代码进行优化以加速系统的运行同时最小化系统资源占用。

        论文里说明了法律咨询系统的总体设计方案,包括了系统涉及到的技术应用与原理,数据库设计逻辑,以及各个功能模块的详细设计与实现。该系统集合了普通用户,管理员用户,通过管理员用户的统一分类调度,实现普通用户最大程度上清晰明确的提出问题或者帮助其他用户解决问题。在该系统中,普通用户不需要因为不懂法律,不懂行业情况,导致知法懂法用法这一美好的愿望难以实现。这样不仅方便了普通用户,给予他们更多的帮助,也给法律专业的学者提供了更多的实践机会。系统要求用户使用论坛需要注册会员,管理员通过用户注册后,用户可凭注册的会员信息登录论坛,登录后可以浏览各个模块内帖子,可以进行发帖,回帖以及留言操作。删除用户,管理版面,添加、修改、删除页面信息,并管理帖子的权限。

关键词:法律咨询;MVC;JSP;MySQL

第一章 概述

1.1 开发背景

        随着信息技术的发展与广泛应用,互联网已经进入虚拟社区时代。根据第二十五年度中国互联网发展统计报告,2010年1月,中国3.84亿互联网用户中38.8%使用论坛,法律和其他形式的虚拟社区,用户数达9822万,用于排名第九,排名前十的网络应用[1]。校园论坛系统的发展非常迅速。

        互联网的不断普及和大规模商业使用,极大地影响了社会的发展,促进了人们的生活。其大量信息和综合多媒体功能,提高了人们传播知识和交流信息的能力,降低了人们获取信息和商业交易的成本。另一方面,互联网的有效管理也成为各国面临的一项亟待解决的任务。

        随着互联网广泛应用于人们的生活中,大量的社交应用程序带来了大量的数据,据报道,世界上的数据量正在迅速增长,全球20%的数据来自近些年,这可以说是爆炸性的增长。以最大的在线社交网络Facebook为例,该公司自成立以为已经收到300PB的用户数据,这是自200年前以来国会图书馆数百倍以上。公司或者组织收集越来越多的数据进行服务,优化公司决策流程,并预测未来趋势。越来越多的应用程序需要高并发访问和处理海量数据处理[1]。这些应用程序都需要运行在安全、可扩展且可用的平台。因此,要求底层数据库在性能和成本效益方面有良好的表现,并且能够为全球范围内的同时访问进行服务。

扫描二维码关注公众号,回复: 16492428 查看本文章

        JavaEE信息管理系统主要由客户层、表示层、业务逻辑层和企业信息系统层组成。JavaEE程序可以在Web的基础上运行,也可以在传统方法的基础上运行。在实际操作中,Web中的JavaEE通常为客户端浏览器提供操作条件,以确保客户端浏览器可以运行在客户端级别。通过这种方式,客户端可以通过客户端的Web浏览器实现Web层的静态或动态页面下载[2]。在这种情况下,Web页面的动态内容是在呈现级别上生成的。生成后,呈现层通过客户端将Web请求数据打包,以用户输入的信息的形式直接发送给业务逻辑层,然后通过可重用组件处理信息,以获得有效的信息。业务逻辑层是过程管理和数据管理功能的集合模块。一般来说,它是基于Java可重用的组件。这些组件不仅可以实现EJB接口规范,而且可以在不同的方面直接封装相应的系统工程。Java中的可重用的组件,不同的逻辑的任务是基于可重用的组件分析。以降低系统杀死系统能力,从而最终扩展,改变系统功能并增加系统的灵活性。在实际应用过程中,JavaEE标准化了三种类型的EJB:会话、实体和消息驱动,并通过规范实现JavaEE功能。会话EJB以不同的状态存储客户端信息,主要是服务器和客户端之间的交互形式。虽然这些信息是临时信息,但它仍然可以在服务器中保护,为客户提供必要的服务。当客户机和服务器断开或终止时,对应于实体EJB数据库中的永久记录的信息自动消失[3]。实体EJB信息将被发送到物理磁盘并永久保存相应的信息。兴趣驱动的EJB是一组会话EJB,JMS监控功能是EJB,实际应用过程可以接受JMS中相应的业务层组件,企业信息系统层由JavaEE完成的企业资源组成,以便完成业务逻辑,可以更好的保证相应的企业信息系统的实现件的运行。一般情况下,企业信息系统主要包括企业资源计划系统,大规模交易处理,数据库系统和遗留信息系统。

        论坛开发从CGI,ASP到PHP逐渐发展,逐渐成熟,功能更加丰富。作为公告板系统,当用户使用计算机上的终端程序通过调制解调器或因特网拨号时,可以执行诸如下载数据或程序、上传数据、阅读新闻和与其他用户交换消息等多种功能。论坛开发技术继承了Java技术和JSP技术的优势。能够实现“一次写入,到处执行”而受到更多的关注。

        根据法律爱好者的需要,充分沟通这一法律咨询设计的需要。法律咨询系统的总体设计包括系统使用的关键技术、数据库的设计、功能模块的详细设计和系统的实现。该系统实现了会员注册,会员登录,登录后检查各个模块帖子的功能。会员还可以回复邮件,发布信息,管理员有能力更改用户权限,删除用户,管理页面,可以添加、删除、修改页面信息。负责帖子的高质量管理。

1.2 国内外研究现状

        曾经有一首诗取名《生活》,全诗只写了一字“网”。北岛诗人用这一个字形容现代社会,不可不说真是绝妙[4]。曾经人们对网的理解包含着束缚和禁锢,但是,充满活力和自由的互联网的诞生完全改变了人们对网的认识。整个世界变成一张大网,人们在这张网上体会着思想的碰撞,路途遥远不再是阻碍人们前进的脚步,人们可以畅游在这张“网”中。

        一方面,互联网作为一个全球信息系统,人与人之间的距离缩短,使人们的生活息息相关。另一方面,互联网对人类生活的影响力不仅仅局限于文化或者科学,也影响了政治经济等领域,使这一时代的文明被重新定义。

        曾几何时,互联网因其架构和代码的开放性,它是一个不可触及的“净土”,人们可以自由地“冲浪”,很少有法律可以调节它。然而,当人们对互联网的快速发展感到惊讶并享受各种便利时,他们受到越来越多地网络欺诈,诽谤和假冒现象的困扰。其他人披露个人信息和侵犯他人知识产权是司空见惯,法律对互联网的监管是不可避免的。尤其是在互联网,电信网络和广播网络,物联网云技术已经无情地抵达了。网络法律问题变得更加复杂,对网络法的需求更加迫切。

        技术的发展需要法律的调整,但法律的滞后性导致必然经历从网络自律到法律规制的时期。互联网诞生之初,行业内通过技术法规调整发展中出现的各种问题,本着技术开放共享的精神,即使有法律缺位的情况,也能通过行业共识得到一定的解决。然而,当互联网发展到了一定的阶段,其自治机制还没有得到有效解决时,就需要法律开始强行介入。首先是涉及国家安全,信息安全,金融安全和交易安全等安全问题,其次是隐私权,知名权,知识产权和信息获取等基本权利的保护。正如传统社会依靠经济贡献,网络社会也走在了赢得行业的道路上[5]。因此,网络法制的任务不仅仅是监督和保护,而且也是行业促进和发展的目标。

        JavaEE是一个基于Java编程服务器开发平台。开发过程是基于Java企业级标准和行业发展的具体实际需要。它基于原始系统,增加了可扩展性,安全性和完整性。性能和企业级应用程序在一定程度上可以更好地促进企业的发展。目前,JavaEE具有丰富的功能和性能系统,加上易用性的平台,已被广泛应用于不同的平台行业。为了满足日益增长的具有高可用性,健壮性和可伸缩性的应用程序的需求。JavaEE体系结构提供了一个中等级别的集成框架[6]。JavaEE架构由EIS层,业务层,Web层和底层客户端组成。这样,JavaEE提供统一的开发平台,降低了Java的多层应用程序的复杂性和现有应用系统的集成提供了有力的支持。总之,JavaEE体系结构通过基于组件的特性以及与平台无关的特点简化了JavaEE程序的编写。JavaEE封装了业务逻辑可以提高组件的可重用性,JavaEE服务器提供以容器形式为所有组件类型提供服务,这也减轻了开发人员的负担。

        论坛起源于二十世纪初。最初,论坛只是一个在线交流平台,人们可以在网上发布公共信息或进行在线交流。后来,随着互联网的发展,论坛的功能也愈发强大。它不仅可以发布文本,还可以使用多媒体发布图片等信息,这吸引了大量的互联网用户。因而商业网站开始重视论坛模式的应用,在自己的网站上开辟论坛供网民交流,与此同时,在线技术的支持和服务也在论坛中发展起来。

        法律通过调整社会关系来实现社会影响[7]。各种现实的社会关系是法律调整的对象,是法律调整的基础。互联网的普遍性、虚拟性、交互性和高知名度给互联网的监管带来了巨大的挑战。国家采用法律,技术,经济,管理等多种管理方式,普遍将法律规制,行业自律和用户教育。然而,在许多监管方法和方法中,法律已成为规范互联网活动的前提和依据。

1.3 本课题的研究意义

        随着互联网技术的飞速发展,互联网给人们带来了很多便利。例如,人们更容易使用互联网进行交流。电子论坛也被称为BBS。BBS是指电子公告板,它是电子公告牌系统的缩写,即因特网上的信息服务的万维网系统。它的主要服务是帮助观众互相交流,吸引用户。服务用户。

        互联网应用势不可挡地改变着人们的生活方式。在互联网快速发展的当代,法律作为人们日常生活中必不可少的一份子,起着规制的作用。因此法律与互联网的结合,一方面促进了法律的普及,让更多的人更方便、更明智。另一方面也是对互联网的挑战和新的机遇。它们的结合和符合潮流,满足了群众的需要。在网络和法律都必不可少的今天给人们带来了新的网络体验。

        作为法律咨询系统,该系统以论坛的形式,给予大众一个开放交流的平台,在“发帖”与“回复”中分享法律事例、询问法律有关问题、解决他人的问题,也可以搜索他人询问或者事例[8]。在交流中共同成长,共同进步。在作为论坛系统,“自由”“交流”成为很重要的一部分,安全问题作为另一个重要部分,也会通过管理员的权限管理,以及只能由注册用户发言的形式进行解决。人们可以在论坛里畅所欲言,管理员则尽职尽责的维护着论坛的和谐和安全。

1.4 网上论坛系统特点

网上论坛对比与其他交流方式,具有以下特点:

(1)简洁的操作界面

整个系统的操作界面清晰,人机界面美观,操作非常人性化。

(2)完备的系统功能

系统开发之根本是为最简单的操作步骤提供最完整的操作功能。乍一看,这似乎很矛盾,但经过完整的规划和布局后,系统完全实现了功能,尽可能减少了冗余和遗漏。这也达到了了该系统的人性化设计的目的。

(3)人性化的操作界面

一个网站可以吸引顾客的频繁访问,界面的可观测性也很重要。该论坛系统精心构建,使论坛系统的设计能充分体现软件的时尚性和实用性。

(4)完备的安全机制

独立的口令检查功能使用户和论坛系统具有更好的数据保护和安全性。

1.5 本人所做的主要工作

        首先,分析论坛的需求,了解论坛需要什么样的功能。论坛分为两个模块,分别分为前景界面浏览模块和后台数据管理模块。后台管理模块应具有添加、修改、删除和审核帖子、管理注册用户等功能。在前台浏览模块中,应该有浏览后、注册用户、注册用户查看帖子后的感受和评论。

        其次,系统地设计论坛,其中包括每个功能模块的具体设计和数据库结构的逻辑设计。论坛以动态服务器网页Java为开发语言,SQL Server作为后台数据库开发环境搭建。功能模块的设计分为浏览模块的设计和后台管理模块的设计。在功能模块的设计中,需要确定各子模块之间的相关性以及前景模块与后台模块之间的连接。在数据库结构设计中,考虑创建多个数据表。各种数据表之间的关系,以及如何将网页连接到数据库。

最后,这是系统的实现。根据过去所做的工作,实现更详细的论坛设计与实现。通过参考大量书籍,掌握系统的结构,利用Java语言,以及使用JDBC连接数据库。然后实现了单功能模块。

  1. 阐述整个个性化页面的系统结构和工作原理,分析了系统实现的特殊性。

难点和重点;

  1. 设计和实现了用户管理、排版后期管理、数据库管理、浏览和搜索功能等功

能;

  1. 分析并解决实际执行时的若干技术问题;
  2. 建立完整的论坛系统,进行重复测试,分析结果,并作出修改。


第二章 需求分析与可行性研究

2.1 系统需求分析

2.1.1 系统开发运行环境

鉴于系统的开发语言和数据库,采用如下的开发环境

开发环境: Windows 7  Tomcat6.0  JDK1.6

最低硬件要求: PentiumG4560  4G内存  80G硬盘

开发语言: Java

数 据 库: MySQL开发工具  MyEclipse8.5

预期成果: 一个可扩展的基于MVC模式的法律论坛

2.1.2 系统功能概述

        本系统是一套网上法律交流的系统,根据用户的需要和实际的开发条件,它应该由管理员模块、注册用户模块和前台模块组成,管理员可以管理用户和帖子。

        管理员模块中,管理员作为系统最高管理者,担负着管理系统用户,整理论坛版块,查看问题信息以及整体的系统管理。在该模块中,管理员角色从多个部分对系统进行整体管理。

        注册用户模块中,用户作为系统的使用者,一方面,作为独立的个体可以管理个人信息,对个人资料进行增删查改,另一方面,在论坛的交流中,可以对自己做出的问题及回复进行查看和修改。这样的管理模式,可以给用户带来更好的应用体验,更清晰明了的管理个人事务。

        首页模块中,论坛首页方便用户随时返回首页界面。帖子搜索以搜索的形式方便用户更快捷的寻找帖子。系统简介方便首次使用者快速了解论坛。找回密码是为曾经注册过的用户提供的帮助。在线留言是论坛中重要的一部分,为用户提供留言版块。用户注册为希望加入论坛的用户提供快速注册途径。管理后台则是管理员进入管理界面的途径。

        鉴于本系统的性质,系统应该实现的功能,不同的模块进行了划分,从用户角色到版块管理再到主题帖子的信息的管理,增删查改都进行了详细的操作。如表2-1所示,通过表格将模块和管理部分进行了详细的划分,清晰的展现了不同模块的各项管理功能。

表2-1  系统功能

管理员模块

系统用户管理

论坛版块管理

问题信息管理

系统管理

注册用户模块

个人资料管理

我的问题管理

首页模块

论坛首页

帖子搜索

系统简介

找回密码

在线留言

用户注册

管理后台

2.1.3 数据流程

该系统旨在为用户提供在线交流的平台,因此自然用户才是论坛的流程的中心。

数据流图是一种能够全面描述信息系统逻辑模型的主要工具。它可以使用多个符号来充分反映系统中信息的流动、处理和存储。数据流图具有以下两个特点:

  1. 抽象性:表现在它完全舍去了具体的物质,只留下数据的流动、加工处理与存储,并以此更清晰地表现出系统逻辑;
  2. 概括性:表现在它可以把信息中的各种不同业务通过处理过程联系起来,形成一个整体的系统逻辑。

数据流图包括四个基本要素:外部实体、数据流、处理(功能)和数据存储。数据流图中使用的符号如下。

外部实体        处理            数据流            数据存储

图2-1  数据流图

图2-2  数据流程图

2.1.4 非功能性需求

对整个系统的非功能需求进行了分析,包括系统的安全性、健壮性、可用性、可靠性、可维护性、可移植性、可重用性和可扩展性。

2.1.5 用户界面需求

用户界面作为用户进入论坛时的第一印象,需要简洁大方的凸显论坛的各个功能,作为法律论坛系统,需要有一定的严肃性,作为网络交流平台,也需要一些活泼的风格。在操作方面,布局的合理性和实用性则是用户应用体验的重要组成部分。因而,友好的界面设计和大方实用的操作界面构成了用户界面的需求。

表2-2  用户界面需求表

需求名称

详细要求

风格

界面简洁实用,布局美观合理,操作简单

颜色

淡红色系为主

分辨率

1024*768

2.1.6 软硬件环境需求

表2-3  软硬件环境需求表

需求名称

详细要求

运行速度

系统启动时间不超过5min,人机交互时间不超过5s

容量

占用内存大于15MB

操作系统性能

10/100M bit/s

网络传输率

10/100M bit/s

2.1.7 产品质量需求

主要质量属性

详细要求

正确性

经过测试达到了预期的效果

健壮性

具有一定的健壮性

可靠性

有一定的容错能力,测试使用稳定

性能,效率

性能优,效率高

易用性

跨平台操作

清晰性

安全性

安全可靠性极佳

可扩展性

优良的可靠的接口

兼容性

可作用于任何平台

可移植性

即使使用不同的设备,只要进行所需的软件配置后,就可以正常运行程序

表2-4  产品质量需求表

2.2 可行性研究

该阶段通过对系统需求的简单调查和分析,从不同的角度提出了可行性方案和论证。主要分析了经济可行性,技术可行性和操作可行性,其他方面量力而为。

2.2.1 经济可行性

系统开发所需的相关资料可以通过现有的系统进行调查和收集,其他所需的软件和硬件系统也能通过软件官网获得。因此,开发成本相对较低。与传统方式相比,该系统效率高、质量高、成本低,可以节省大量的人力、物力和财力。因此,从经济学的角度来看,完善这一制度是可行的。

2.2.2 技术可行性

技术可行性必须考虑现有技术条件能否成功完成开发工作,以及软硬件配置是否符合开发要求。本系统采用JSP开发语言,调试相对简单,目前的计算机硬件配置完全可以满足开发需求,在配置方面是绝对可行的。在软件开发方面,由于单机模式的应用和软件开发平台的成熟,在软件操作上是可行的。它们具有可靠性高、容量大、价格低、速度快等特点,能够满足系统的需要。

系统开发采用了Mis开发,模型是典型的。在开发和使用JSP编程语言时没有技术问题。

2.2.3 操作可行性

操作的可行性是基于组织结构和组织的环境适应性以及环境对系统的影响,以及人员培训和补充计划的可行性。目前,信息技术的普及越来越好。各机构组织对人员的培训也越来越重视,各运营商的水平相对平衡,因此,系统在运行方面可行。

2.2.4 时间可行性

从时间的角度来看,相关知识在以往的学习中逐步积累有了基础,近三个月内开发系统的需要更多的时间查阅基础薄弱部分以及实践应用的相关资料,时间上是没有问题的。基本上,通过两个多月自己的努力和老师的帮助,系统设计可以实现

2.2.5 法律可行性

本系统涉及到技术资料的法律运用,系统开发过程中不存在知识产权问题,不抄袭其他系统,开发过程中不涉及任何法律责任。综上所述,系统的开发从经济、技术、运行、时间和法律等方面都是完全可靠的。


第三章 相关技术分析

3.1 JSP技术简介

JSP(Java Server Page)1998年开始发展的一项技术。动态网页技术标准,是Sun公司倡导并参与的基于Java ServletJava系统的Web开发技术。将脚本片段和JSP标记添加到传统的网页HTML文件(*.HTM*.html)中,形成JSP页面(*.jsp)JSP技术提供了一种更简单的方法来创建动态生成内容的网页。作为Java家族的一个成员,JSP继承了Java的特性,即跨平台的功能,即一次编译,可以多次运行。

在国外,网络应用程序的开发越来越多的使用JSP技术。在中国,虽然JSP还没有成为一种主流的开发技术,但由于JSP的相比与其他技术更适应技术的发展,越来越多的网站将注意力转向JSP,并希望使用JSP来开发动态网站。

3.2 JSP工作原理

JSP面向服务器进行操作。JSP页面向Web服务器和JSP引擎发送请求,当与服务器相关的组件(servletEJB或JavaBean组件)接受并处理由JSP引擎发送的请求对象时。在处理过程中,可以从数据库或数据存储中检索服务器端组件,并将响应的结果返回到JSP引擎[9]。JSP页面接收JSP引擎返回的响应对象,并根据页面设计的HTML文档完成数据布局。接着,Web服务器和JSP引擎将JSP页面发送回客户端浏览器[10]。

目前网站构建大多采用上述浏览器-Web服务器-后台数据库的三层体系架构。由于所有的JSP操作都在服务器端执行,因而只有在网络上获得的结果才被传递给客户端。

3.3 MVC设计模式与Struts框架

3.3.1 MVC设计模式

在传统的Web应用程序中,逻辑处理、数据处理和页面显示的大部分功能都放在JSP页面上。具有丰富经验的开发人员将表示层数据分开,但通常并不容易。它需要仔细的计划和连续的实验。MVC设计模型从根本上迫使它们分离。虽然构建MVC应用系统的构建需要一些额外的工作,但毫无疑问,它给我们带来的更多情况下是好处[11]。MVC将应用程序划分为三个层次:模型,视图和控制器。如图3-1所示,他们扮演不同的角色并执行不同的任务。

图3-1  MVC各部分的关系和功能

3.3.2 Struts框架技术

Struts框架基于Model 2架构,它是基于MVC模式的框架技术。它是一个免费的开源Web层应用程序框架,具有高度可配置性和不断增长的特性列表。并且具有越来越多的功能[12]。前端控制组件,一系列动作映射,操作类,用于处理XML的实用类,在服务器端Java bean的自动填充,支持Web表单验证,国际化的支持,Html生成以及表示逻辑的实现。图3-2显示了Struts组件是如何一起工作的。

图3-2  Struts框架的组件结构

视图(View)是用户看到并与之交互的界面。视图中的JSP文件中没有业务逻辑,没有模型信息,只有标签,它可以是标准的JSP标签或自定义标签,例如Struts标签库的标签。

模型(Model)是应用的主要部分。该模型表示业务数据和业务逻辑。模型可以为多个视图提供数据。由于相同的模型可以被多个视图重用,因此提高了应用程序的可重用性。

控制器(Contorl)是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并将数据发送给模型。在Struts中,控制器由ActionServlet类和Action类实现ActionServlet继承了Javax.servlet.HttpServlet类,该类在MVC模型中扮演中央控制器的角色。ActionServlet主要接受HTTP请求信息[13]。根据配置文件Struts-Config.XML的配置信息,请求被发送到相应的Action对象。如果Action不存在,ActionServlet将创建一个Action对象。

所有页面跳转都集中在配置文件中,提高了程序的可读性和可维护性。使用Struts框架进行Web开发的主要优点包括:

  1. 一方面,页面显示和业务逻辑处理分离,而不是页面显示和页面业务逻辑,可以提高系统的安全性,另一方面提高程序的灵活性和可重用性;
  2. 页面跳转全部集中在配置文件中,使程序有较高的可读性与维护性;
  3. 可扩展性。该框架由几个独立的部分组成。例如,Action类主要负责页面数据和数据库数据之间的转换。Service类主要负责业务逻辑操作,Form类和Model类主要负责封装各种数据。同时,可以根据实际需要定制各种组件,如数据库的连接组件,生成各种图形;
  4. 开发效率高。使用该框架可以使我们能够集中精力发展业务逻辑。

3.4 O/R映射与Hibernate框架

对象持久性,持久性(Persistence)是将数据储存到可永久存储的存储介质和设备。持久性的主要目的是将内存数据存储在关系数据库或磁盘文件和XML数据文件中。

在当前的MVC系统设计中,MVC中的M(即模型)可以说是业务逻辑和数据逻辑中最紧密相关的部分。持久层作为模型层面的主要组成部分,它对系统的整体性能有着至关重要的影响。由于大多数的业务模型都是与关系数据库相关的,因此当使用Java作为信息系统的开发语言时,传统的Web应用程序开发方法直接与使用JDBC的数据库进行交互,但是这种工作负载很大,而且一旦业务逻辑发生变化,就需要在JDBC中更改很多SQL语句。因此开发或维护系统是不方便的。

考虑到Java的对象定位远离关系数据库的关系结构,有必要引入对象与对象之间的直接映射机制关系数据库。这个映射应该是最常用的配置。该文件尽可能地修改映射文件而不是Java源代码来应对将来改变业务逻辑的需求,因而产生了O/R映射模式。总之,对象关系映射是保持自动且透明的Java应用程序中对象到关系数据中的表,使用元数据对象映射到数据库中的表进行描述[14]。本质上,ORM的任务是将数据从一种表示(双向)转换为另一种表示。许多开源项目都使用Java来实现这种O/R映射。Hibernate是最好的实现架构之一。

3.4.1 Hibernate框架

Hibernate接口位于业务层和持久层。Hibernate核心接口的层次架构如图3-3所示。 

图3-3  Hibernate核心接口的层次架构关系

3.4.2 Hibernate的核心接口

使用Hibernate进行数据持久化操作时,至少使用以下核心接口:配置接口(Configuration)负责配置启动Hibernate并创建SessionFaclory对象,SessionFaclory接口生成Session实例的工厂类,初始化Hibernate并创建一个Session对象,Session接口是Hibernate的保存。该操作的基础相当于Connection对象在JDBC中的作用。Session提供了一系列的持久化操作,比如保存,更新,删除和查询,交易界面负责管理交易,query和Criteria接口负责执行数据库查询[12]。

Hibernate的核心接口位于net.sf.Hibernate包中,Hibernate核心接口类的关系图如图3-4所示,主要包括以下6个接口。

  1. Session接口:负责执行被持久化对象的CRUD操作;
  2. SessionFactory接口:初始化Hibernate,充当数据存储源的代理,并且创建Session对象;
  3. Configuration接口:负责配置并启动Hibernate,创建SessionFactory对象;
  4. Transaction接口:负责事务相关的操作;
  5. Query和Criteria接口:执行各种数据库查询。

Hibernate的使用主要是两个配置文件。一个是Hibernate.cfg.xml配置文件和O/R映射配置文件。Hibernate.cfg.xml的配置文件主要是数据库连接和Hibernate操作的主要属性。O/R映射配置文件主要表示持久化类和数据库表之间的映射关系。这样,数据库上的操作可以转化为持久化类的操作。持久化类和数据库表之间的转换由Hibernate完成。Hibernate框架为我们做了很多的工作:

  1. 减少繁琐的代码:Hibernate封装了数据库持久层的大部分技术细节,如事务管理,数据库连接管理和SQL语句生成。由于这些优秀的底层实现,我们可以摆脱JDBC编码,把我们的精力和创造力投入到真正有价值的工作中;
  2. 更多面向对象的设计:现在开发的思路都是面向对象的,而Hibernate的O/R映射配置文件可以对应一个数据库表和持久层对象,这样我们能够开发了只关注该对象的属性而不必与表中的字段纠缠在一起。使面向对象的开发思想延伸到系统的每个角落;
  3. 更好的性能:Hibernate提供了内置的数据库连接池支持。这些优化机制的组合使用极大地提高了系统性能。另外,这些机制都是透明的。我们不需要关心复杂的实施细节也可以享受它带来的性能改进;
  4. 更好的可移植性:Hibernate对不同的数据库有很好的支持。我们可以简单地切换Hibernate.cfg.xml的配置文件来实现切换底层数据库。

3.5 开发平台

从多方面的因素考虑选用开发平台如下表3-1所示。

表3-1搭建开发环境软件清单

用途

软件

Java虚拟机

JDK 1.6

Web应用服务器

Tomcat 6

集成开发平台工具

MyEclipse 8.5

数据库服务器

MySQL 5.0

MVC开源框架

Struts 2

ORM框架

Hibernate

3.6 MySQL数据库

MySQL是MySQL AB在瑞典的公司开发的关系数据库,它目前由Oracle拥有。MySQL是最流行的关系数据库管理系统,在Web应用程序中,MySQL是最好的关系数据库管理系统(RDBMS)应用软件之一。MySQL是一个相关的的数据库管理系统。关联的数据库把数据存储在不同的表中,而不是存储在大型仓库中的所有数据,从而提高速度且增加灵活性[15]。MySQL使用的SQL语言是最常用的访问数据库标准语言。

MySQL可以运行在多种操作系统中,例如:Windows,Linux,Unix等,用户可以根据数据库系统的数据访问量、访问响应速度要求以及不同的安全控制要求等进行选择。与此同时,还需要考虑系统维护需要的费用以及升级成本等问题,以此达到最好的性价比。

基于MySQL的应用程序开发有B/S和C/S两种模式,B/S模式程序的开发,PHP语言是最优的选择,C/S模式程序的开发可以选择面向对象的开发工具。总之,应当根据具体情况对系统平台和开发工具进行选择。在满足系统性能指标的情况下,选择技术更加成熟、开发更加便捷的系统平台和开发工具,有助于提高软件生产能力,有利于系统管理维护和降低开发成本。

MySQL软件使用双重授权政策(本词条"授权政策"),分为社区版和商业版。由于中小型网站体积小,速度快,总体拥有成本低,尤其是开源特性,因此,中小型网站的开发通常选择MySQL作为网站数据库。由于其优秀的社区版本,PHP,Linux和Apache可以形成一个良好的开发环境[16]。经过多年的网络技术发展,业界广泛使用的网络服务器解决方案之一被称为LAMP。

折叠系统特性:

  1. 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性;

(2) 支持AIXFreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统;

(3) 为多种编程语言提供了API。这些编程语言包括C、C++、PythonJavaPerl、PHP、Eiffel、Ruby和Tcl等;

(4) 支持多线程,能充分的利用CPU资源

(5) 优化SQL查询算法可以有效地提高查询速度;

(6) 既能够作为一个独立的应用程序应用在客户端服务器网络环境中,也可以作为一个库而嵌入到其他软件中;

(7) 提供多语言支持。常见的编码如中文的GB 2312,BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名称;

(8) 提供多种数据库连接途径,如TCP/IP、ODBC和JDBC等;

(9) 提供管理、检查、优化数据库操作的管理工具;

(10) 支持大型的数据库,它可以处理具有数以千万计的数据记录的大型数据库;

(11) 支持多种存储引擎。


第四章 总体设计

4.1 功能结构设计

根据需求分析,将法律咨询系统分为分为两权限:管理员和注册用户权限。

4.1.1 管理员模块

(1) 系统用户管理

修改密码:可以实现密码修改功能;

管理员用户:可以添加管理员,还可以对已有的管理员进行删除操作。

  1. 注册用户管理

个人资料管理:用户可以对个人基本信息进行修改,注册用户的基本信息,包括姓名、性别、电话、邮箱、地址等基本信息能被查询、修改、删除。

我的问题管理:用户可以对个人参与的发帖,回复以及留言等信息进行查询、修改、删除操作。保证了用户更便捷的对自己信息的管理。

  1. 论坛版块管理

论坛版块添加:通过输入名称、简介等数据进行版块的添加操作;

论坛版块查询:可以对已有的论坛版块信息实现查询、修改、删除操作。

  1. 问题信息管理

信息管理:管理论坛帖子,可以对论坛中全部的帖子进行查询,对不适当的帖子进行修改、删除操作。

  1. 系统管理

友情连接添加:通过输入网站名称以及网址,实现用户可以在论坛中进行友情连接的添加操作;

友情连接查询:可以对已有的友情连接实现查询、修改、删除操作;

系统公告设置:编辑系统公告的区域;

系统简介设置:系统简介编辑版块。

  1. 留言管理

留言处理:对用户的留言进行删除、回复操作;

数据备份:对系统数据进行备份。

图4-1  管理员模块

4.1.2 注册用户模块

(1) 个人资料管理

个人资料管理:可以修改注册用户的基本信息,包括姓名、性别、电话、电子邮箱地址等。

(2) 我的问题管理

我的问题管理:可以对用户发布的论坛帖子实现查询、修改、删除操作。

4.1.3 首页模块

(1) 论坛首页:论坛的首页界面

(2) 帖子搜索:可以搜索已发布的帖子

(3) 系统简介:主要就是系统的大概介绍

(4) 找回密码:用户可以通过用户名和邮箱信息检索用户密码;

(5) 在线留言:可以实现用户留言

(6) 用户注册:用户在此界面注册

(7) 管理后台:实现管理员的后台登陆

图4-3  首页模块

4.2 功能模块介绍

论坛系统中有两种用户:注册用户和管理员用户。论坛中管理员掌握版块创建者的权限,方便对论坛统一管理。

  1. 对于注册用户,在论坛中的操作归纳如下。
  1. 注册登录

由于论坛交流的特殊性和互联网使用中的法律缺陷,本系统使用了拒绝匿名登录模式。如果用户想要对页面进行操作,就必须进行登录。非登录用户操作页面,系统不会运行。用户必须先注册才能进行其他操作。

  1. 浏览

用户在浏览列表中选择一个部分,浏览它下面的主题版块与帖子的列表,并查看帖子的内容。搜索感兴趣的帖子。这些行为与用户阅读论坛的章节及其帖子有关,并单独构建为浏览版块。

  1. 发帖回帖

注册用户可以发布新帖子,回复现有帖子,并撰写自己的帖子内容。这些操作涉及用户参与论坛讨论和发表自己的意见。

  1. 对于管理员来说,整个论坛的正常运行都由管理员进行调度检查,因此赋予其更大的管理权限以及相应功能。因为管理员也是论坛用户,因此管理员也具有注册用户的所有功能,可以参与论坛中的讨论。

因此,用户每一次新注册时必不可少的信息是用户名和密码,用户名需要确定是否有效,若是特殊字符会判定无效。密码需要二次确认,以保证密码的正确性,以免出现用户只输入一次容易出错的情况。另外,邮箱信息也是非常重要的一部分,当用户忘记密码时,可以通过在“找回密码”中准确输入用户名和邮箱信息进行检索密码的操作。

当用户信息填写完成,管理员通过用户信息后,用户可以进入主界面。用户界面只能显示,当用户完成信息填写后进

图4-4  注册流程图

用户注册进入论坛中,称作“会员”。会员在论坛中可以选择不同的版块即专区进行查看,在不同的专区可以选择自己感兴趣的主题进行浏览查看,回复他人的提问,也可以发布自己想要询问或者交流的主题。回复或是发布信息都需要在输入框填写完成后进行提交。

这些信息,会员也可以在我的问题管理部分进行查看,修改和删除操作,管理员亦可对这些信息进行管理员操作。会员操作流程,会员可以选择版块即专区,进入专区后选择发布或者浏览主题,若是浏览后有兴趣,还可以选择发布回复信息。不论是发布主题还是回复信息都能进行提交,提价后才算完成了操作。

会员对版块和主题都能进行选择,只要是有兴趣,有想法的都能积极参与,调动了用户的参与积极性。如图4-5所示。

图4-5  会员操作流程

  1. 管理帖子

管理员有权对论坛帖子进行监督,其内容是积极的,且符合当下流行的帖子进行奖励,删除不合规定的帖子,标注精华贴,置顶优秀帖子,对版块信息错误的帖子进行修改,这些操作都是针对帖子的操作,专为管理帖子模块。

  1. 管理版块

论坛中的论坛需要管理员创建和管理论坛信息。这些针对论坛的操作被设计为管理论坛模块。

  1. 管理用户

用户注册成功后,管理员需要授予使用论坛相关功能的权限。同时,管理员可以自己添加和删除用户。这些用户信息操作旨在管理用户模块。

对于论坛系统来说,用户的权限是各个模块连接的主线,用户的权限决定了用户在论坛中能够使用的功能。论坛的每一个功能都对应相关权限。例如,注册用户有权浏览、发布和回复不同模块的帖子,即用户可以使用论坛中的浏览,发贴和回帖功能。用户作为相同类型的功能模块的中心,使用各个功能将模块连接起来。此外,在相同类型的事物上操作的功能模块也是相关的。

因此,浏览模块与发帖、回帖模块,管理帖子模块,是由论坛系统流程决定的。管理部分模块和浏览模块之间的关联由帖子和部分之间的父子关系确定。该帖子附加到该部分,先有版块,后有帖子,帖子必须发表在每个版块中。

用户管理模块和注册登录模块都是由同一个对象——用户关联起来的。注册后,普通的论坛浏览者获得论坛的会员身份。与此同时,用户的信息和部分操作需要接受管理员的管理,用户登录可以在论坛中证明自己的身份。

根据系统的入口不同,系统可分为前台和后台。前台包括用户和管理员使用的注册登录模块,浏览模块,发帖回复帖模块和管理帖子模块,后台则是用户管理个人信息以及管理员统一管理论坛的时使用的用户信息管理模块以及管理版块模块。

从整体来看管理员统一调度着论坛系统的各个方面。管理员可以对专区、主题、用户进行增删查改的操作,都不同用户的和管理员的权限、不同主题和专区的置顶和类型的标注都使得系统整体看起来更完善,用户体验和论坛整体的管理也看起来更合理,使得从管理员到用户都更方便使用和管理。

图4-6  管理员操作流程图


第五章 数据库设计

5.1 数据库概念结构设计

根据系统的总体设计,论坛网站的实体主要有:管理员实体,用户实体,帖子实体。

  1. 管理员实体的E-R图,如图5-1所示

作为论坛管理员,管理员又可以分为两种不同权限,超级管理员和普通管理员。普通管理员可以进行对普通用户、模块、帖子中。通过添加,通过、修改,删除操作。以及对自己身份的管理,修改密码、更改名称的操作。

除了拥有普通管理员的管理用户及论坛的权限外,超级管理员用户还可以对普通管理员进行添加,对其信息作出修改和删除操作。

  1. 用户信息实体E-R图 如图5-2所示。

如图5-2所示,用户作为论坛系统中数量做大的群体,添加新的用户时需要添加用户名、密码、头像,也用户可以选择填写其他个人信息例如:邮箱、手机、地址、简介等。注册完成后,个人信息将由管理员审核通过,才可进行登录。

登录完成后,用户可以在论坛的不同版块中进行发帖、回复操作。管理员能够管理用户的发帖、回复等信息。

如图5-3所示,帖子作为论坛的重要组成部分,它既具有独立性,也通过不同的方式归属于不同的版块。从论坛角度看,论坛分为不同的版块,每个版块下又有不同的主题。因此,每个帖子都有自己所属的版块和主题。每个帖子的内容是不同帖子的标志。从用户角度来看,帖子在论坛中的发布者是用户。因而,每个帖子都有其所专属的发布者。

5.2 数据库逻辑结构设计

数据库的设计中,在数据库中字段不限定是否空值,是因为在代码中会进行判断,若有空值,代码会对操作者做出相应提醒,输入正确信息。在字段类型设计时,除非必要,都会规定为varchar类型,保证数据存储的完成性,其他的例如时间类型的数据,则采用timestamp类型,记录详细时间。

通过对系统的需求和功能的分析我将系统的数据结构列出如下。

表5-1  管理员表:allusers

如表5-1所示,管理员信息包括:长度不超过50字符的用户名信息、密码和权限信息,以及不可为空的添加时间。

如表5-2所示,版块信息包括:编号、名称、简介、版主(设立版块者)、不可为空的添加时间。表5-3  留言版表:liuyanban

如表5-3所示,留言板信息包括:名称、不超过两个字符的性别信息、QQ、邮箱、电话、内容以及内容信息容纳字符长度较长,使用户添加信息可以拥有更多个人特色,不可为空的添加时间

表5-4  帖子表:tiezi

如表5-4所示,帖子信息包括:版块、标题、类型、内容、发布人、不可为空的添加时间以及附件。

表5-5  用户注册表:yonghuzhuce

如表5-5所示,用户注册信息包括:用户名、密码、姓名、不超过两字符的性别、出生年月、QQ、邮箱。除性别之外,其他信息都给予了用户最大的方便实现自我发挥。

表5-6  友情连接表:youqinglianjie

如表5-6所示,友情链接信息包括:网站名称、网址、添加时间。

5.3 数据库的连接

连接数据库使用的是的可以与MySQL匹配使用的数据库,连接时通过在代码中设定连接信息,使用提前设定好的用户名和密码就可以进行连接数据库调取相关数据。

连接数据库的代码如下所示。

<bean id="dataSource"

class="org.apache.commons.dbcp.BasicDataSource">

<property name="driverClassName"

value="com.MYSQL.jdbc.Driver">

</property>

<property name="url"

value="jdbc:MySQL://localhost:3306/db_law

useUnicode=true&amp;amp;amp;amp;amp;characterEncoding=utf-8">

</property>

<property name="username" value="root"></property>

<property name="password" value="root"></property>


第六章 功能模块的设计与实现

6.1 管理员模块

(1) 系统用户管理

修改密码:可以实现密码修改功能;

管理员用户:可以添加管理员,还可以对已有的管理员进行删除操作;

注册用户管理:可以对已注册用户的基本信息,包括姓名、邮箱、性别、电话、地址等基本信息进行查询、修改、删除操作。

如图6-1所示,系统用户管理一共有三项功能,分别为“修改密码”,“管理员用户”,“注册用户管理”。这三部分分别对应了管理员用户对自身密码的修改。超级管理员用户对普通管理员用户信息的搜索浏览,修改和删除操作,或是普通管理员对管理员用户信息的查看。以及管理员用户度自注册用户的信息的注册通过、查看、修改、删除的操作。

如图6-2所示,在系统用户管理的修改密码功能中,操作者需要准确地输入原密码并且两次输入新密码。输入原密码可以在一定程度上防止他人操作,两次输入新密码则更大程度的提高了操作者对新密码输入的准确性,具有一定的容错性。输入完成后需要进行“确认”进行信息的提交才能完成修改,“重置”按钮则可以在输入错误的情况下,将该界面还原到初始状态。

如图6-3所示,管理员用户查看信息时又分为超级管理员用户以及普通管理员用户。两者都可以通过界面中的表格,填写用户名和密码进行提交得到新的管理员用户,并且可以查询已有的管理员信息。两者的区别在于,超级管理员可以对普通管理员进行删除操作,普通管理员则不能删除超级管理员。

如图6-4所示,当管理员进入注册用户管理界面时,因为论坛采用了无匿名管理,用户量非常大,因此可以通过“用户名”“姓名”“QQ”“邮箱”“电话”“身份证”中的任何一个或者几个信息对用户进行查询。用户信息列表中会完整的显示该用户所有填写完成的信息以及添加时间和操作。管理员会在操作栏中对注册用户进行审核判断是否通过注册。只有通过审核,用户才算注册成功,该账户才能够正常使用。

系统管理部分的主要代码如下。

new CommDAO().delete(request,"yonghuzhuce");

String url = "yonghuzhuce_list.jsp?1=1";

String sql =  "select * from yonghuzhuce where 1=1 ";

if(request.getParameter("yonghuming")==""

||request.getParameter("yonghuming")==null ){}else{sql=sql+" and yonghuming like '%"+request.getParameter("yonghuming").trim()+"%'";}

if(request.getParameter("xingming")=="" ||request.getParameter("xingming")==null ){}else{sql=sql+" and xingming like '%"+request.getParameter("xingming").trim()+"%'";}

if(request.getParameter("QQ")=="" ||request.getParameter("QQ")==null ){}else{sql=sql+" and QQ like '%"+request.getParameter("QQ").trim()+"%'";}

if(request.getParameter("youxiang")=="" ||request.getParameter("youxiang")==null ){}else{sql=sql+" and youxiang like '%"+request.getParameter("youxiang").trim()+"%'";}

if(request.getParameter("dianhua")=="" ||request.getParameter("dianhua")==null ){}else{sql=sql+" and dianhua like '%"+request.getParameter("dianhua").trim()+"%'";}

if(request.getParameter("shenfenzheng")=="" ||request.getParameter("shenfenzheng")==null ){}else{sql=sql+" and shenfenzheng like '%"+request.getParameter("shenfenzheng").trim()+"%'";}

sql+=" order by id desc";

(2) 论坛版块管理

论坛版块添加:通过输入名称、简介等数据进行版块的添加操作;

论坛版块查询:可以对已有的论坛版块信息实现查询、修改、删除操作。

如图6-5所示,论坛版块管理分为“论坛版块添加”和“论坛版块查询”两部分。管理员通过观察用户使用反馈,适当的添加新的版块,使论坛系统更为完善,可添加的操作则提高了系统的可发展性。论坛版块查询部分则是管理员对已有版块的查看,修改和删除。随着用户的增多,系统中对不同版块的需求呈现出不一样的状态,管理员则需要通过适时对版块信息的查询以及增删查改的操作完成系统的进步。

如图6-6所示,论坛版块的添加需要对版块进行编号、编撰名称、填写简介以及版主。填写编号可以更好的区分不同的版块,也方便查询信息。名称和简介则能帮助其他用户更好的了解和使用版块。其中,编号和名称为必填项。所有的信息填写完毕后,通过“提交”按钮,对信息进行提交,提交完成后就能够在论坛查询界面进行查看。

如图6-7所示,全部的版块信息包括添加时间都会在论坛版块查询界面显示出来,管理员可以用工编号和名称进行查询,甚至可以将论坛版块信息列表到处Excel文档。除此之外,管理员还能通过操作对版块信息进行修改或者直接删除版块。

论坛版块管理的主要代码如下所示。

function checkform(){

var bianhaoobj = document.getElementById("bianhao");

if(bianhaoobj.value==""){document.getElementById("clabelbianhao").innerHtml="  <font color=red>请输入编号</font>";return false;}else{document.getElementById("clabelbianhao").innerHtml="  "; }

var mingchengobj = document.getElementById("mingcheng");

if(mingchengobj.value==""){document.getElementById("clabelmingcheng").innerHtml="  <font color=red>请输入名称</font>";return false;}else{document.getElementById("clabelmingcheng").innerHtml="  "; }

return true;}

(3) 系统管理

友情连接添加:通过输入网站名称、网址进行友情连接的添加操作;

友情连接查询:可以对已有的友情连接实现查询、修改、删除操作;

系统公告设置:编辑系统公告的区域;

系统简介设置:系统简介编辑版块;

留言管理:对用户的留言进行删除、回复操作;

数据备份:对系统数据进行备份。

如图6-8所示系统管理由六个部分组成,其中,前两个部分是关于友情连接的操作,管理员可以根据用户需求提供更多的友情连接,还可以对已有的友情连接查询、修改、删除。接着是关于系统的简介和公告的设置,这两部分都会有文本框的出现,管理员通过在文本框中输入信息,提交后刷新会首页就能看到内容的更新。留言管理部分是对留言板的管理,管理员可以对留言进行删除或者回复的操作,已达到更好的了解需求以及管理论坛的目的。

如图6-9所示,添加友情链接只需要添加网址名称以及网址,并进行提交就能在首页看到更新过的链接。

如图6-10所示,管理员通过友情链接的查询可以对已有的链接进行查询、修改以及删除的操作。这样的模式可以在不同时期为用户及时提供用户更需要的内容。

如图6-11和图6-12所示,系统公告和系统简介的设计基本相同,都更好的满足了论坛管理者对论坛信息通知的便捷操作。区别在于,两者所呈现的内容有所差异,公告适用于管理员迫切需要用户了解到的最新更新的信息,简介则更偏向于对系统的介绍,更适合刚接触法律论坛系统的新用户。

图6-13  留言管理

如图6-13所示,管理员可以对留言进行查询、删除以及回复的操作。一方面,管理员能够更好的了解论坛用户的需求,及时回复用户的提问。另一方面,管理员也可以参与到论坛使用中,作为一名普通的用户对论坛进行使用。

图6-14  数据备份

如图6-14所示,为了更好的保存论坛信息,管理员可以在一定周期内进行数据备份,防止数据丢失或被篡改带来的严重后果。

6.2 注册用户模块

(1)个人资料管理:可以修改注册用户基本信息,包括姓名、电话、邮箱、地址等。

(2)我的问题管理:可以对用户发布的论坛帖子实现查询、修改、删除操作。

图6-15  注册用户模块

如图6-15所示,注册用户模块为用户提供了两部分个人信息的管理,一部分是对个人资料的管理,包括“姓名”“电话”等信息,用户可自行修改,另外一部分是对个人在论坛发布的信息的管理,查看、修改或删除自己曾经发布过的帖子或者回复过的留言等信息。

6.3 首页界面

首页模块

论坛首页:论坛的首页界面;

帖子搜索:可以搜索已发布的帖子;

系统简介:主要就是系统的大概介绍;

找回密码:通过用户名、邮箱可以找回用户密码;

在线留言:可以实现用户留言;

用户注册:用户在此界面注册;

管理后台:实现管理员的后台登陆。

图6-16  首页界面

如图6-16所示,论坛首页方便用户随时返回首页界面。帖子搜索以搜索的形式方便用户更快捷的寻找帖子。系统简介方便首次使用者快速了解论坛。找回密码是为曾经注册过的用户提供的帮助。在线留言为用户提供留言版块。用户注册为希望加入论坛的用户提供快速注册的方法。管理后台则为管理员提供进入管理界面的途径。


第七章 系统调试与测试

7.1 程序调试

在设计系统的过程中,有错误是不可避免的。对于语句的语法错误,程序调试并运行的过程中,软件可以自动提示并请求立即纠正它。因此,这种类型的错误更容易被发现并完成及时的纠正。然而,另一种类型的错误是由于逻辑的错误或者在执行程序时对于某些数据的计算公式不满足条件而导致的错误结果。这种错误的隐藏性高,比较难找到,有时可能会发生,但并不总是会发生。因此,对这种动态错误发生的调查是费时费力的。

7.2 程序的测试

7.2.1 测试的重要性及目的

(1) 测试的重要性

在软件生命周期中,软件测试占有重要地位。在传统的瀑布模式中,软件测试只存在于程序维护阶段前。在软件产品推广交付给大众用户之前,通过测试确保软件质量非常重要。最近,软件工程界越来越倾向于认为软件每个阶段的生命周期应该包括测试,以便如果检查阶段的结果未能接近期望的结果目标,设计人员能够尽快找到错误并纠正它,如果测试不在早期阶段进行,错误被发现时就会被延迟扩散,最后可能导致成品测试中出现很大困难。

实际上,对于软件而言,无论使用哪种方法或技术,系统中都会出现错误。采用新的开发方法,先进的语言和健全的开发流程可以最大限度地减少引入错误。但是,完全防止软件中的可能错误仍然是不可能的。这些引入的错误需要在系统中通过测试找到。错误的密度也需要通过测试来衡量。测试是所有学科最基本的工程单位,也是软件开发中非常重要的一部分。测试伴随着设计,从程序开始那天起。统计数据显示,在典型的软件开发项目中,软件测试工作量通常占软件开发总工作量的40%以上。在软件开发的总成本中,用于测试的开销占30%到50%。如果考虑到维护阶段,则在讨论整个软件生命周期时,测试的成本比率可能会降低。然而,维护过程实际上相当于二次开发甚至多次开发,这其中又包含大量的测试工作。

在实践中,测试软件的工作琐碎且困难,经常会让我们的工作敷衍了事或望而却步。这是因为对测试的工作有错误的观点和不正确的态度,包括:

(1)很难给测试的工作人员带来一定的成就感,工作人员会认为测试工作并不像编码和设计那样容易进行发展;

(2)在测试的过程中,发现错误实际上是对程序编写者工作的否定,测试的目的是以发现软件的错误,这是非建设性的,甚至还是具有破坏性的;

(3)测试的工作过程非常枯燥无味,不足以引起工作人员的兴奋或激动的情绪;

(4)测试工作需要细致而艰苦的进行,需要更多的耐心和专注;

(5)一般来说,编写人员都对自己编写出来的程序都可能抱有盲目的自信。当检查测试发现错误的时候,可能会顾虑别人对自己开发程序的能力的看法。

以上这几个观点对测试系统的工作进行是尤为不利的,我们必须要端正态度、摆正观点正确认识和完善系统检测的观点,才可能将系统产品的质量加以提高。

(2) 测试的目的

如果测试程序的目的是为了尽可能全面地找出系统中的错误,那么测试就必须直观的针对软件较为复杂的部分或者是前期出现错误比较多的位置进行重复测验。

(1)系统的测试是为了检查出错误而执行程序的过程;

(2)测试则是为了证明程序中有错误,而不是用来证明程序没有错误;

(3)每一个好的测试的用例都是因为它能检查到至今未出现的错误;

(4)一个很成功的测试就是因为检查出了至今未能发现的错误。

这个观点可以提醒人们,测试应该侧重于找出错误,而不是展示软件的正确功能。然而,从其字面意义上理解这一观点可能是误导性的。认为错误的检测是软件测试的唯一目标。没有价值就不进行测试。而实际中并不是这种情况。

首先,测试并不仅仅是为了要找出错误。此外,还要通过分析错误产生的原因和错误的分布特征,来帮助项目管理者发现当前采用的程序设计的缺陷,以便及时修补改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有检查出错误的测试也有它的价值,完整的测试是测试质量评定的一种方式。

7.2.2 测试的步骤

与系统开发过程类似,测试工作的过程也需要分阶段执行。逻辑上,每一步都是前一步的延续,逐步进行有条理的层层递进,大型系统软件一般由多个子系统组成。每个子系统又由多个小模块组成。因此,大规模系统软件的测试过程基本上包括以下步骤:

(1)模块测试:测试工作在对模块进行的,工作步骤中经常用于检测详细设计和编码的错误;

(2)系统测试:在对系统进行测试工作中,发现的更多是软件设计时出现的错误,也可能会发现需求说明中的出现错误;

(3)验收测试:在对验收进行的测试工作步骤中发现的经常是没有实现系统需求说明书中而表现出的错误。

7.2.3 测试的主要内容

测试中,我们为了保证系统的质量,在进行测试工作时,我们可以将测试工作的内容分为以下几部分:即复审代码,集成测试,单元测试,系统测试和确认测试。

(1)单元测试

由检查系统设计的最小单元(单模块)是单元测试。该测试用于检查设计中定义模块的功能的描述是否与模块的实际功能以及编码错误的问题相一致;

(2)集成测试

设计人员根据设计要求对各小模块进行组装,同时进行集成测试。集成测试的主要目的是检查与模块相关的一些相关问题。假设一个模块和另一个模块可能会由于无意的问题而造成伤害。组合子功能模块可能不会产生预期的主功能,一些看似可以接受的小错误取决于它。小错误可能累积到不可接受的程度,甚至是整个数据结构中的错误等;

(3)确认测试

确认测试的目的是向未来的用户显示系统可以按预期工作。在集成测试后,根据设计将所有模块组装成完整的软件系统,基本解决了接口错误。其次,要进一步验证系统软件的有效性,即确定测试工作的主要任务。保证了系统软件的性能和功能与用户的一致性;

(4)系统测试

软件设计和开发完成后,它将最终与系统的其他部分集成,从四个方面进行测试,分别是执行性能的测试、程序安全测试、强度测试和恢复测试的系统测试。此外对系统的单独测试主要从以下三个方面入手:

(1)功能测试:测试能否满足开发的要求,设计中所描述的功能能否满足用户的需求,这就是在系统测试中最常见的功能测试。一般来说,软件的形式化规范是通过标准进行测试;

(2)性能及强度以及恢复的测试:具有最高实际限度的测试系统能力,即软件在某些过载环境下功能是否还实现的情况;

(3)安全测试:安装在系统中的安全保护系统能真正验证保护系统,使系统不会受到各种异常干扰。因此,目前开发的系统主要是测试系统,解决了错误数据、无效数据、测试权限系统以及抗非法数据干扰的能力。

经过一系列的需求分析,设计和编码等开发工作,这个法律咨询系统的设计也将告一段落,然后需要测试一些系统的功能才能达到预期的效果。由于系统各模块在测试前存在一定的错误和缺陷,可能导致系统运行异常,有时会产生严重的后果。因此,软件测试是程序开发的一项非常重要的任务。

在这个法律咨询系统中,注册用户模块是网站的最重要功能之一,我们要保证用户可以正常使用本系统,现以会员注册功能为例,进行如表7-1的测试。

表7-1  测试会员注册测试

测试用例

用户注册

测试前提条件

能够正常打开注册页面

测试步骤

1.输入注册需求信息

2.输入密码

3.提交注册信息

测试数据

A:不输入信息
B:输入非邮箱账号

C:输入错误的密码验证

D:输入已经存在的账号

预期结果

A:显示必要信息提示框

B:显示 “邮箱格式错误!”提示框

C:显示“密码不一致!”提示框

D:显示提醒“该账号已经存在,请输入其他账号!”提示框

实际结果

均和预期结果一致

测试状态

通过

另外,其他模块需要根据软件测试的要求进行详细测试,此处不做详细说明。通过上述测试流程对软件进行测试后,软件基本满足开发要求,测试已完成。


考 文 献

[1] 蔡婷婷. 分布式数据库可协调的一致性策略的研究[D]. 大连海事大学, 2017: 70.

[2] 耿壮. 基于JavaEE的信息管理系统设计与实现[J]. 电脑知识与技

术, 2012, 8(23): 5523~5524.

  1. Zhang Li. The Research and Implementation of JavaEE in Telecom’s CRM System[M]. Springer New York, 2013-06-15.

[4] 张平. 互联网法律规制的若干问题探讨[J]. 知识产权, 2012(08): 1~15.

[5] 刘乙, 李长喜. 互联网法律规制模式的探讨[J]. 北京邮电大学学报(社会科学版), 2009, 11(02): 23~28.

[6] 郝平. 基于JavaEE的学生社团管理系统的设计与实现[J]. 信息与电脑,2018: 103~104+107.

[7] 张啸. 对新时代北京下的法律普及的思考[J]. 安徽财经大学, 2015: 1~3.

[8] 赵仲孟, 何世丽, 袁薇, 沈钧毅. 主题搜索引擎中专业网页索引集构造算法的研究[J]. 微电子学与计算机, 2005(01): 6~9.

[9] 王玉英. 基于JSP和MySQL数据库访问技术[J]. 现代计算机, 2010: 67~70.

[10] Chien-Hung Liu. Date flow analysis and testing of JSP-based Web applications[J]. Information and Software Technology, 2006:1137~1147.

[11] Rong-Hua LiMeasuring the impact of MVC attack in large complex networks[J]. Elsevier journal, 2014(03): 685~702.

[12] 王瑞矫. 基于JavaEE的实训平台的设计与实现[D]. 北京邮电大学, 2012: 70.

[13] 李海涛. MVC设计模式在JSP开发中的应用[J]. 电脑编程技巧与维护, 2011: 91~92+95.

  1.  Rong-Hua Li, Jeffrey Xu Yu,Xin Huang, Hong Cheng, Zechao Shang. Measuring the impact of MVC attack in large complex networks[J]. Information Sciences, 2014: 685~702.
  2.  蔡伟. 基于大数据时代的数据库与传统数据库的比较研究[D]. 湖北工业大学, 2017: 64.
  3.  Chien-Hung Liu. Date flow analysis and testing of JSP-based Web applications[J]. Information and Software Technology, 2006: 1137~1147.


致 谢

经过几个月的努力,已经基本完成了论坛的开发和设计。完成了用户模块,帖子模块和后台管理模块的开发,并基本实现了前期所制定的功能。

系统在不断的设计更改过程中,逐渐的成熟。在编写的最后阶段中,参考了一些设计模式,在逻辑代码和数据库连接DAO中抽象出了若干接口,并对其进行了对象的依赖注入,大大的减少了模块之间的耦合,使系统具有很高的灵活性和可维护性,这是系统最大的优点。

当然系统也存在很多不足的地方,比如用户的权限判断过于简单,安全性低,希望在今后的学习中,逐步的进行改进。

通过这次的设计, 加深了对SSH框架,以及面向对象思想的一些理解。对于软件工程方面的设计思想也有了更深一步的理解,只有在不断的实践于学习中,才会得到最丰厚的回报。

在设计的几个月中,感谢我的导师对我的帮助和悉心的指导,老师在我的设计和论文中给了我很多帮助,在此表示深深的感谢老师渊博的学识、敏锐的思维、民主而严谨的作风使学生受益非浅,并终生难忘。

感谢我的学友和朋友对我的关心和帮助。

另外在设计的过程中我实习的单位给了我莫大的支持,在此也表示衷心的感谢。

关注博主下篇更精彩

一键三连!!!

一键三连!!!

一键三连!!!
感谢一键三连!!!

猜你喜欢

转载自blog.csdn.net/m0_56073435/article/details/131545329
今日推荐