admin 管理员组

文章数量: 887062


2024年1月16日发(作者:去it培训机构培训有用吗)

题 目

本科毕业论文

基于Java Web技术的图片管理系统

专 业 软件工程

作者姓名

学 号

单 位 计算机学院

指导教师

年 月

目 录

第1章 引言 ....................................... 6

1.1 课题研究目的及意义 .......................................... 6

1.2 课题研究的内容 .............................................. 7

第2章 需求分析 ................................... 7

2.1 用户功能需求 ................................................ 7

2.2 性能需求 .................................................... 7

2.3 主要技术分析 ................................................ 8

第3章 概要设计 .................................... 8

3.1 系统功能分析 ................................................ 8

3.2 功能模块图 .................................................. 9

3.2 处理流程设计 ............................................... 10

3.2.1 系统操作流程.......................................... 10

3.2.2 数据增加流程.......................................... 11

3.2.3 数据修改流程.......................................... 11

3.2.4 数据删除流程.......................................... 12

3.3 系统用例图 ................................................. 13

3.4 数据库设计 ................................................. 13

3.4.1 Mysql介绍 ............................................ 13

3.4.2 数据库表结构.......................................... 15

3.4.3 数据库连接技术........................................ 16

3.5 系统E-R图 ................................................. 22

第4章 详细设计 ................................... 22

4.1 用户登录 ................................................... 22

4.2 图像类别管理 ............................................... 23

4.3 图像信息管理 ............................................... 25

4.4 图片信息查询 ............................................... 27

第5章 系统调试与测试 .............................. 29

5.1 程序调试 ................................................... 29

5.2 程序的测试 ................................................. 29

5.2.1 测试的重要性及目的.................................... 29

5.2.2 测试的步骤............................................ 31

5.2.3 测试的主要内容........................................ 31

第6章 结论 ...................................... 32

6.1 系统评价 ................................................... 32

6.2 安全性问题 ................................................. 33

参考文献 ......................................... 34

摘 要

近十几年来,网络取得了令人难以置信的发展速度。人们在世界各地都可以共享信息、进行电子商务交易、利用网络在线办公、在线办理业务等,这些都不断促进了Web应用的发展。动态网站更是以其强交互性、自动更新、形式多样的优越性迅速发展,Web2.0互联网模式的发展已经成为互联网新的发展趋势。

本系统采用了B/S(Browser/Server)体系结构,JSP(Java Server Page)作为前台开发工具,MySQL作为后台数据库进行开发。系统分为管理员和用户两个角色,其中管理员的主要功能是图片的增删改查,用户的主要功能有注册、登录、浏览图片等。本系统是一个基于JavaWeb技术的图片管理系统的设计与实现,不同分类的图片可以满足不同人群对不同风格类型图片的需求,是一个简单的JavaWeb应用,可以带给用户一个简洁、方便的新体验。

关键词:Java Web技术、JSP、MySQL、图片管理系统

Abstract

Over the past decade or so, the Internet has made incredible all over

the world can share information, conduct e-commerce transactions, use the Internet to

work online, do business online, and so of this has contributed to the

development of Web c web sites are rapidly evolving with the

advantages of strong interactivity, automatic updates, and development of

the web 2.0 Internet model has become the new trend of the Internet.

This system USES the B/S (Browser/Server) architecture, and the JSP (Java Server

Page) as the foreground development tool, and MySQL as the backend database for

is divided into two characters, administrators and users with the

administrator's main function is picture to add and delete, the main function of the

user register, login, browse pictures, system is based on a JavaWeb

technology system, the design and implementation of the images of different

classification can meet the needs of different people on different kinds of style

images,A simple JavaWeb application that gives users a clean and convenient new

experience.

Keywords: Java Web technologies ; JSP ; MySQL ; Original wallpaper system.

基于Java Web技术的图片管理系统的设计与实现

前言

Web应用是一种通过互联网访问的应用程序,使用网页语言编写,通过浏览器运行。近年来,由于静态网站交互性差等的局限性,一种能与用户进行交互并且根据用户输入的信心产生相应响应的动态网站由此产生并且快速发展,具有交互性强、自动更新、多样性等特征。

Web应用包括Web服务器端和Web和客户端应用两个部分。基于B/S(Browser/Server)架构的Web应用通常由客户端浏览器、Web服务器、数据库服务器几个部分组成,其中:Web服务器负责运行使用动态网站技术编写的Web应用程序;数据库服务器负责管理应用程序使用到的数据;浏览器负责帮助客户访问运行在Web服务器上的应用程序。Web应用程序按照“请求-处理-响应”的基本运行流程,Web浏览器发送请求;服务器端处理用户请求;最后服务区将处理将结果返回给浏览器。

Java Web应用,是用Java技术来解决相关Web互联网应用领域的技术总和。

第1章 引言

1.1 课题研究目的及意义

专用数据库的建设对于专题研究有着特殊的使用意义,本课题建立一个图片收藏数据库,并且实现对图片收藏的多种类型查询。

通过课题的研究,可以使学生将所学过的多门专业基础课和专业课知识综合运用于实际系统的开发,更深入全面地了解数据库开发技术及软件开发技术,同时系统地训练软件开发的步骤及规范。

1.2 课题研究的内容

1. 研究MYSQL存储图像数据的策略与方法;

2. 研究数据库与前端系统的连接

3.通过收集分析多媒体技术的实现以及文件的管理初步设计、制作完成多媒体作品展示系统,实现文字,图像平台展示,用css,javascript基本实现前台页面的搭建,媒体类型的分类显示,作品展示视觉界面的设计,制作,用jsp,servlet和数据库对后台文件进行管理,从而实现多媒体作品的展示。

第2章 需求分析

2.1 用户功能需求

图片收藏数据库查询系统图片收藏数据库查询系统是方便用户对建筑图片的管理,主要功能包括添加图片功能、删除图片功能、修改图片功能、查询图片功能。

2.2 性能需求

系统对环境的要求:

服务起端的最低配置是由建立站点所需要的软件来决定的,在最底配置的情况下,服务器的性能往往不进人意,现在硬件性能已经相当出色,而且价格也很便宜,因此通常应给服务器端配置高性能硬件。

本机器的配置如下:

处理器:Inter Pentium 41.6Hz或更高。

内存:512MB

硬件空间:160GB

题目主要采用的技术

数据库:MYSQL

编程语言 JSP

服务器:Tomcat5.5,jdk1.6

开发环境:WindowsXP

2.3 主要技术分析

JSP(Java Server Pages) 作为一种新的Web应用开发技术,越来越受到开发人员的关注。它为创建高度动态的Web应用提供了一个独特的开发环境,能够适应市场上绝大多数的服务器产品。JSP是由多个公司参与合作建立起来的动态网页技术标准。JSP的具体特征如下:

(1)分离内容的生成和演示。使用JSP技术,Web页面开发人员可以使用HTML标识设计和格式化最终页面。使用JSP标识或者Java片段来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBean组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。

(2)生成可用的组件。绝大多数JSP页面依赖于可重用的、跨平台的组件来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者让这些组件为更多的使用者或者客户集体所使用。

(3)采用标识简化页面开发。Web页面开发人员不一定都是熟悉脚本语言。JavaServerPage技术封装了许多功能,这些功能都是在易用的、与JSP相关的XML标识中进行动态内容生成时所需要的。标准的JSP标识能够访问和实例化JavaBean组件、设置或者检索组件属性、下载Applet以及执行用其它方法更难于编码或耗时的功能。通过开发定制标准库,JSP 技术可以进行相当的扩展,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web 页面开发人员能够使用熟悉的工具和同标识一样执行特定功能的构件来工作。

第3章 概要设计

3.1 系统功能分析

1用户请求添加图片

系统弹出添加页面,用户选择本地图片,填写图片相关信息。信息包括:地区、建筑类型(例如:桥、楼、等)、建筑时间等,主要是方便以后的查询。选择提交。图片路径存入数据库。

2用户请求查询图片

系统弹出查询图片页面,用户填写图片相关信息。(例如:中国建筑)系统在页面中显示出符合查询条件的所有图片信息。如果没有符合要求的图片则弹出提示信息。

要实现设计不同查询方式的设计及查询页面、结果页面。

3用户请求修改图片信息

修改功能的实现是在查询功能基础上完成。在查到图片下面有修改按钮。系统弹出修改图片信息页面,用户重新填写图片信息。选择保存。

4用户请求删除图片

删除功能的实现是在查询功能基础上完成。在查到图片下面有删除按钮。点击删除则把该图片从数据库中删除。

3.2 功能模块图

建筑图像数据库查询系统

管理员设置

后台登陆日志

图像类别管理

图片信息管理

图片信息录入

图片信息查询

3.2 处理流程设计

3.2.1 系统操作流程

系统主界面 错误信息

系统登录界面

系统管理

输入操作员及密码

数据库 检查

密码错误

密码正确

功能界面

功能处理

3.2.2 数据增加流程

添加信息时,编号字段由系统自动生成,且不能修改,其他信息由用户输入,之后对数据进行合法判断,合法则写入保存至数据库,不合法则重新输入数据。数据增加流程图:

开始

自动生成编号

输入数据

是否合法

写入数据库

结束

图3.2 数据增加流程图

3.2.3 数据修改流程

在修改信息时,先选中一条待修改的记录,然后直接输入数据,判断合法性,合法则保存至数据库,不合法重新输入。数据修改流程图如图3.3所示。

开始

选择需要修改记录

输入数据

是否合法

写入数据库

结束

图3.3 数据修改流程图

3.2.4 数据删除流程

当用户选定一条记录时,单击删除按钮,会提示用户是否确定删除,然后删除数据库相关内容。数据删除流程图如图3.4所示。

开始

选择需要删除记录

是否删除

更新数据库

图3.4 数据删除流程图

3.3 系统用例图

图像信息管理图像类别管理系统用户相片信息录入相片信息查询

3.4 数据库设计

3.4.1 Mysql介绍

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

mysql是一个基于关系型数据库模型建立的数据库管理系统软件(DBMS)。它帮助用户方使地得到所需信息,并提供强大的数据处理工具。它可以帮助用户组织和共享数据库信息,以便于根据数据库信息作出有效的决策。另外,仅有这

样—个数据库管理系统软件(DBMS),则只能进行一些信息系统所需要的简单数据处理,且对操作者有较高的操作技能要求。因此,信息系统的开发者都是在某种数据库管理系统软件〔DBMS〕环境下编写相应的应川程序,以形成一个能够满足应用需求且操作尽可能简单的应用型信息系统,这被称之为二次开发。

Mysql 还具有以下特点:

1.使信息更易于查找和使用

Mysql继续为简便地查找信息提供易于使用的工具。

2.支持 Web 功能的信息共享

Mysql 可以通过企业内部网络Internet 很简便地实现信息共享,而且它可以很容易地将数据库定位到浏览器中,它将桌面数据库的功能和网站的功能结合在一起。

3.用于信息管理的强大解决方案

高级用户和开发人员可以创建那些将Mysql界面(客户端)的易用性和SQL服务器的可扩展性和可靠性结合在一起的解决方案。

4.改变了数据库窗口

可在Mysql容纳并显示新的对象,增强了Mysql 数据库的易用性。

5.提供名称自动更正功能

自动解决当用户重新命名数据库对象时出现的常见负面效应。例如,当用户重命名表中的字段时,将自动在诸如查询的相关对象中进行相应的更改。

6.具有子数据表功能

子数据表在同一窗口中,提供了嵌套式的视图,这样就可以在同一窗口中专注于相关的数据并对其进行编辑。

7. 用户只需简单地将Mysql对象(表、查询等)从数据库放到ODBC数据源中,即可从 Mysql中将数据导出到其他数据库中。

8.数据访问页功能

该功能可使用户快捷方便地创建数掂 HTML页,并通过数据 HTML页,将数据库应用扩展到企业内部网络 Internet上。这将帮助用户比以往更快捷、高效的方式共享信息。

9.共享组件的集成

Mysql利用新的 Web组件和位于浏览器中的 COM 控件,为用户提供了多种查看和分析数据的方式。

10.交互性

Mysql支持OLE DB,使用户可以将Mysql 界面的易用性与诸如SQL

Server2000的后端企业数据库的可升级性相结合。

3.4.2 数据库表结构

Admin表

Field name

Id

Username

Password

Creartime

Flaf

Isuse

Logintimes

Quanxian

Pic表

Field name

Id

Titel

Type

Place

Builder

Co

Btime

Remark

Addtim

Picinfo表

Field name

Id

Pid

Title

url

Addtime

Datatype

Int

Varchar

Varchar

Varchar

Int

Int

Int

Varchar

Len

4

100

100

100

4

4

4

100

Default

Datatype

Int

Varchar

Varchar

Varchar

Varchar

Varchar

Varchar

Varchar

Varchar

Len

4

100

100

100

100

100

100

500

30

Default

Datatype

Int

Int

Varchar

Varchar

Varchar

Len

4

4

100

150

30

Default

Pictype表

Field name

Id

Name

Addtime

System表

Field name

Id

Sitename

url

Keyword

Description

Email

State

Reasons

Dir

Record

Copyright

Datatype

Int

Varchar

Varchar

Datatype

Int

Varchar

Varchar

Varchar

Varchar

Varchar

Varchar

Varchar

Varchar

Varchar

Varchar

Len

4

30

30

Len

4

100

100

500

200

200

100

100

100

100

100

Default

Default

3.4.3 数据库连接技术

JDBC技术是Java DataBase Connectivity的缩写,它是SUN公司提供的一种支持基本SQL功能的通用的应用程序接口(Application Programming Interface)。它由一组用Java语言编写的类和接口组成。通过这些类和接口,程序开发人员可以在Java语言中方便地建立与数据库的链接,通过执行相应SQL语句,完成对不同数据库的访问。因此,开发人员使用JDBC API可以不必编写一个应用程序来访问Sybase数据库,又另外编写一个应用程序去访问Oracle数据库,再写一个应用程序访问Microsoft的SQL Server。不但如此,使用Java语言编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上开发不同的应用程序。

简单地说,JDBC能完成下列三件事:

1. 同一个数据库建立连接;

2. 向数据库建立连接;

3. 处理数据库返回的结果。

JDBC是一种通用低层的应用程序编程接口,它在不同的数据库功能模块的层次上提供一个统一的用户界面。说JDBC是一处低级的API,是指它直接调用SQL命令,它比其他的一些数据库连接API要容易使用些,但它有同样可以作为更高级的,用户办面更友好的API或开发工具基础。

很多可视化的Java开发工具,如Visual Age For Java、Visual Café、J++等都提供了基于JDBC的更面向用户的类和包,直接将关系数据库的表或视图映射为Java类,程序员通过可视化工具直接对Java对象进行操作,而真正需要的SQL调用则根据程序员发出的对对象的各种属性、方法的操作来自动产生。另一种使用JDBC API 的方式为,用户程序可以提供一个界面(如菜单等)让用户选择对数据库进行的操作,选中一个任务后,提示用户输入一些必要的信息,然后根据用户的输入产生相应的SQL命令以及Java程序。通过这处方式,用户可以完成对数据库的操作,即使他并不了解SQL语法以及JDBC编程。

数据库访问的三层结构如图5.1所示,浏览器端程序要访问数据库,首先通过中间件,然后由中间件对数据库操作权限进行认证,认证通过才能对数据库进行操作。

图5.1 使用中间件的数据库访问三层结构

用户对数据库的存取权限认证是中间件中完成,对数据库的查询、插入、更新和删除操作等都封装在中间件中,该中间件位于服务器端,中间件对数据库进行操作后,再将处理结果通过Web服务器返回到浏览器端用户。这样,在用户端输入的用户名和密码,可以通过加密算法进行加密后在网络上传输,在中间件中进行解密认证,然后再进行数据库的存取操作,数据库存取权限的用户名和密码出现在位于服务器端的中间件中,这样就更加安全。本系统采用的正是这样的三层结构的数据库访问模式。

在三层模型中,命令将被发送到服务的”中间层”,而”中间层”将SQL语句发送到数据库。数据库处理SQL语句并将结果返回”中间层”,然后”中间层”将它们返回用户。其模型如图5.2所示。

图5.2 JDBC的三层模型

因为”中间层”可以进行对访问的控制并协同数据库的更新,并且可以使用一个易用的高层API,这个API可以由“中间层”进行转换,转换成低层的调用。所以在许多种情况下,三层模型可以提供更好的性能,本系统中所采用的就是此种模型。

JDBC是JAVA应用程序与数据库的沟通桥梁。它提供了三项服务功能:一、与数据库建立连接。二、将SQL语句传递给数据库。三、从数据库取得SQL语句的执行结果。当JDBC要与数据库建立连接前,首先,它必须先取得连接此数据库的JDBC驱动程序,e()即是在执行此项工作。建立数据库连接的第一步骤就是将JDBC驱动程序的类载入至JVM(Java VirtualL Machine)中,本系统中利用类内的forName()静态函数依据指定的类名称,将JDBC驱动程序载入进来。完成载入驱动程序的步骤后,必须使用Manager类所提供的getConnection()静态函数,取得与数据库间的连接对象。此连接对象的类类型为tion,必须通过它才能将SQL指令传递给数据库,而执行结果也需要通过连接对象来取得。当取得连接

对象后,还必须取得Statement对象才能对数据库执行SQL指令。Statement主要实现两个功能:执行SQL语句以及取得执行结果。在ent的sql对象中执行查询或修改命令的函数后传回的是一个ResultSet 对象,这个对象提供了一个存取SQL执行结果的管道,以便通过它将表格数据从数据库中取出。每个Statement对象只能产生一个ResultSet 对象。

数据库连接如图5.3所示:

建立JDBC--ODBC桥建立是否成功否出错处理是建立数据库连接执行SQL操作SQL是否出错是否返回错误信息返回执行结果

图5.3 数据库的连接处理

数据库的连接处理具体实现如下:

//建立JDBC——ODBC桥

bcDriver;

//桥建立不成功时的错误处理

catch(ClassNotFoundException event){}

//建立与数据库的连接,并发送SQL查询语句,将结果保存到rs对象中

Con=建立JDBC——ODBC桥

Sql=SQL查询语句

执行查询

Rs=返回结果

//SQL出错处理

有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。

Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。

Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。

JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有

applet 的网页,而该 applet 使用的信息可能来自远程数据库企业也可以用

JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。

MIS 管理员们都喜欢 Java 和 JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些catch(SQLException e1){}

信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息服务, Java

和JDBC 可为外部客户提供获取信息更新的更好方法。

简单地说,JDBC 可做三件事:与数据库建立连接、发送 SQL 语句并处理结果。下列代码段给出了以上三步的基本示例:

Connection con = nection("jdbc:odbc:wombat","login",

"password");

Statement stmt = Statement();

ResultSet rs = eQuery("SELECT a, b, c FROM Table1");

while (()) {

int x = ("a");

String s = ing("b");

float f = at("c");

}

上述代码对基于JDBC的数据库访问做了经典的总结。

3.5 系统E-R图

密码 用户名

用户

管理

信息

类别 录入 查询

管理

第4章 详细设计

4.1 用户登录

当用户登陆时,首先出现的是一个用户登陆的界面,主要是维护系统的安全性和完整性。只有输入正确的用户及密码的用户能进行相应操作,否则不能对相应的窗口进行操作。如下图所示:

主要代码如下:

package util;

import .*;

public class DBConn {

static{

try{

e("verDriver");

// e("");

// e("bcDriver");

}catch(Exception ex){

tackTrace();

}

}

public static Connection getConn(){

try{

Connection

conn=nection("jdbc:microsoft:sqlserver://localhost:1433;databasename=hshygl","sa","123");

// conn

nection("jdbc:mysql://localhost/fzshop","root","123");

// Connection conn=nection("jdbc:odbc:temp");

return conn;

}catch(Exception ex){

tackTrace();

return null;

}

}

public static void close(Connection conn,Statement st,ResultSet rs){

if(rs!=null){

try{

();

}catch(SQLException ex){

}

}

if(st!=null){

try {

();

}catch(Exception ex){

}

}

if(conn!=null){

try{

();

}catch(Exception ex){

}

=

4.2 图像类别管理

系统用户登陆成功后,可以选择该模块进行图像类别管理,包括对图像类别

的添加、修改、删除。界面如下图所示:

主要代码如下:

package util;

import ortedEncodingException;

import DateFormat;

import ;

public class Validate {

/**

* 是否为数字和英文验证

*

*/

public int getIntAndChar(String str){

char c;

int i;

}

/**

* 是否为整数验证

*

*/

public int getInt(String str){

char c;

int i;

for (i = 0; i<(); i++){

c = (i);

if(!(c>='0' && c<='9')){

break;

}

for (i = 0; i<(); i++){

c = (i);

if(!((c>='0' && c<='9') || (c>='a' && c<='z') || (c>='A' && c<='Z'))){

break;

}

}//判断字符是否在某个区间

if(i < ()){

return -1;

}else{

return 0;

}

}

}//判断字符是否在某个区间

if(i < ()){

return -1;

}else{

return 0;

}

/**

* 是否为非法字符验证

*

*/

public boolean getLawlessChar(String str){

boolean flag = false;

}

char c;

for(int i = 0;i < ();i++){

}

c = (i);

switch(c){

case '<' : flag = true; break;

case '>' : flag = true; break;

case '"' : flag = true; break;

case '&' : flag = true; break;

case ' ' : flag = true; break;

}

return flag;

4.3 图像信息管理

在该模块下可以对图像信息进行管理,包括对建筑名称、建筑地区、建筑师等信息进行添加、修改、删除的操作。界面如下图所示:

主要代码如下:

package servlet;

import ption;

import riter;

import DateFormat;

import ar;

import ;

import tDispatcher;

import tException;

import rvlet;

import rvletRequest;

import rvletResponse;

import te;

import UpdateDelBean;

public class AmountServlet extends HttpServlet {

/**

* The doPost method of the servlet.

*

/**

* Constructor of the object.

*/

public AmountServlet() {

super();

}

/**

* Destruction of the servlet.

*/

public void destroy() {

y(); // Just puts "destroy" string in log

// Put your code here

}

/**

* The doGet method of the servlet.

*

* This method is called when a form has its tag value method equals to get.

*

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doGet(HttpServletRequest request, HttpServletResponse response)

}

throws ServletException, IOException {

doPost(request, response);

* This method is called when a form has its tag value method equals to post.

*

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

}

tentType("text/html;charset=gb2312");

racterEncoding("gb2312");

String id = ameter("id");

String amount = ameter("amount");

String sql = "update users set amount=amount+"+amount+" where id="+id;

InsertUpdateDelBean ib = new InsertUpdateDelBean();

ANDupdateANDdel(sql);

sql = "insert into payment(usersid,name,price) values("+id+",' ',"+amount+")";

ANDupdateANDdel(sql);

ribute("message", "操作成功!");

RequestDispatcher rd=uestDispatcher("/admin/users_");

d(request,response);

4.4 图片信息查询

用户填写图片相关信息。(例如:中国建筑)系统在页面中显示出符合查询条件的所有图片信息。如果没有符合要求的图片则弹出提示信息。界面如下图所示:

主要代码如下:

package util;

import ortedEncodingException;

import DateFormat;

import ;

public class Validate {

/**

* 是否为数字和英文验证

*

*/

public int getIntAndChar(String str){

}

/**

* 是否为整数验证

*

*/

public int getInt(String str){

}

/**

* 是否为非法字符验证

char c;

int i;

for (i = 0; i<(); i++){

c = (i);

if(!(c>='0' && c<='9')){

char c;

int i;

for (i = 0; i<(); i++){

c = (i);

if(!((c>='0' && c<='9') || (c>='a' && c<='z') || (c>='A' && c<='Z'))){

break;

}

}//判断字符是否在某个区间

if(i < ()){

return -1;

}else{

return 0;

}

break;

}

}//判断字符是否在某个区间

if(i < ()){

return -1;

}else{

return 0;

}

*

*/

public boolean getLawlessChar(String str){

boolean flag = false;

char c;

}

for(int i = 0;i < ();i++){

c = (i);

switch(c){

case '<' : flag = true; break;

case '>' : flag = true; break;

case '"' : flag = true; break;

case '&' : flag = true; break;

case ' ' : flag = true; break;

}

}

return flag;

第5章 系统调试与测试

5.1 程序调试

在设计系统的过程中,存在一些错误是必然的。对于语句的语法错误,在程序运行时自动提示,并请求立即纠正,因此,这类错误比较容易发现和纠正。但另一类错误是在程序执行时由于不正确的操作或对某些数据的计算公式的逻辑错误导致的错误结果。这类错误隐蔽性强,有时会出现,有时又不出现,因此,对这一类动态发生的错误的排查是耗时费力的。

5.2 程序的测试

5.2.1 测试的重要性及目的

(1)测试的重要性

软件的测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的

重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。

事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。而在软件开发的总成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。

在实践中,软件测试的困难常常使人望而却步或敷衍了事,这是由于对测试仍然存在一些不正确的看法和错误的态度,这包括:

① 认为测试工作不如设计和编码那样容易取得进展难以给测试人员某种成就感;

② 以发现软件错误为目标的测试是非建设性的,甚至是破坏性的,测试中发现错位是对责任者工作的一种否定;

③ 测试工作枯燥无味,不能引起人们的兴趣;

④ 测试工作是艰苦而细致的工作;

⑤ 对自己编写的程序盲目自信,在发现错误后,顾虑别人对自己的开发能力的看法。

这些观点对软件测试工作是极为不利的,必须澄清认识、端正态度,才可能提高软件产品的质量。

(2)测试的目的

如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。

① 软件测试是为了发现错误而执行程序的过程;

② 测试是为了证明程序有错,而不是证明程序无错误;

③ 一个好的测试用例是在于它能发现至今未发现的错误;

④ 一个成功的测试是发现了至今未发现的错误的测试。

这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。

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

5.2.2 测试的步骤

与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤的继续。大型软件系统通常由若干个子系统组成,每个子系统又由若干个模块组成。因此,大型软件系统的测试基本上由下述几个步骤组成:

(1)模块测试 在这个测试步骤中所发现的往往是编码和详细设计的错误。

(2)系统测试 在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。

(3)验收测试 在这个测试步骤中发现的往往是系统需求说明书中的错误。

5.2.3 测试的主要内容

为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试、确认测试和系统测试。

(1)单元测试

单元测试集中在检查软件设计的最小单位—模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。

(2)集成测试

集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与

接口有关的问题。如一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。

(3)确认测试

确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。

(4)系统测试

软件开发完成以后,最终还要与系统中其他部分配套运行,进行系统测试。包括恢复测试、安全测试、强度测试和性能测试等。

单独对系统的测试主要从以下几方面入手:

① 功能测试:测试是否满足开发要求,是否提供设计所描述的功能,是否用户的需求都得到满足。功能测试是系统测试最常用和必须的测试,通常还会以正式的软件说明书为测试标准。

② 强度测试及性能测试:测试系统能力最高实际限度,即软件在一些超负荷情况下功能实现的情况。

③ 安全测试:验证安装在系统内的保护机构确实能够对系统进行保护,使之不受各种非常的干扰。针对本系统主要是对权限系统的测试和对无效数据、错数据、和非法数据干扰的能力的测试。

经过上述的测试过程对软件进行测试后,软件基本满足开发的要求,测试宣告结束。

第6章 结论

6.1 系统评价

本文通过本系统设计与开发,从而得出下列结论:

(1)学习一门新技术,最重要的是实践,只有多动手才能尽快掌握它。

(2)一个系统的开发,经验是最重要的,经验不足,就难免会有许多考虑不周之处。

(3)要想吸引更多的用户,系统的界面必须要美观、有特色、友好,功能要健全。不过由于经验不足,我设计的图形界面比较简单。只是对基本功能进行了开发。

(4)本次开发,我参考了很多本系统的例子,吸取了一些别的本系统的长处,对自己的毕业设计进行了完善,但是还有很多的不足之处,有待以后进一步学习。

实践证明,本系统有着很好的发展前景,经测试运行。本文所制作的系统界面友好、使用灵活、操作简单、功能齐全、表现方式独特,已基本具备了成熟的技术理论。

由于时间仓促,本次设计由我完成本系统的制作,对我这样一个JSP新手而言所制作的模块还有不完善的地方。数据库的设计也比较简单。还有很多毕业设计中用到JSP语言的知识也不够全面,还有很多地方不能够作到完全的理解和掌握。通过这次毕业论文的设计制作使本人受益匪浅。首先,由于毕业设计所用的JSP技术和其中用到JSP语言的其他部分是在课堂上没有接触过的,要用它来做设计必须通过大量自学来掌握,在这个过程中,不仅大大提高了我的自学能力而且让我对JSP的学习有了进一步的认识 。由于是独立完成在毕业设计的过程遇到了很多的困难,我求教了不少老师和同学,在这个过程中让我体会到了,一个团队的重要性。

6.2 安全性问题

Web开发中安全性是必须考虑的一个很重要的方面,特别是在诸如个信息等敏感数据的模块中更是关键,所以这也是后期开发需要引起重视的。下面就这方面的技术和解决方案加以讨论。

(1) 安装防火墙:安装防火墙并且屏蔽数据库端口能有效地阻止了来自Internet

上对数据的攻击。

(2) 输入检查和输出过滤:用户在请求中嵌入恶意HTML标记来进行攻击破坏,防止出现这种问题要靠输入检查和输出过滤,而这类检查必须在服务器端进行,一旦校验代码发现有可疑的请求信息,就将这些可疑代码替换并将其过滤掉。

致谢

在本次毕业论文过程中,得到了指导老师的指导与支持。在此特别感谢指导老师的大力帮助。指导老师的悉心指导和大力支持,在总体结构、功能的把握上给予了非常大的帮助,同时根我们提供了非常优越的设计环境,并对我在编程、数据库设计等细节工作上给予了耐心的指导,对于我顺利完成这次毕业论文起到了关键性的作用。

我还要感谢我的母校,以及在大学四年生活中给予我关心和帮助的老师和同学,是他们教会了我专业的知识和做人的道理。通过这次毕业论文我还明白了作为一名计算机专业的大学毕业生,我们要会的不仅仅是编写代码,更重要的是要有整体把握系统设计的能力。我会在以后的工作和学习中不断完善自己,为我最热爱的母校争光,为自己翻开辉煌的新篇章。

参考文献

[1] BruceEckel.《JAVA编程思想》. 机械工业出版社,2003年10月:1-378

[2]赛奎春.《JAVA工程应用与项目实践》. 机械工业出版社, 2002年8月:23-294

[3]FLANAGAN.《JAVA技术手册》. 中国电力出版社,2002年6月:1-465

[4]孙一林,彭波.《JSP数据库编程实例》. 清华大学出版社,2002年8月:30-210

[5]LEE ANNE PHILLIPS.《巧学活用 JSP》.电子工业出版社,2004年8月:1-319

[6]飞思科技产品研发中心.《JSP应用开发详解》.电子工业出版社,2003年9月:32-300

[7]耿祥义,张跃平.《JSP实用教程》. 清华大学出版社,2003年5月1日:1-354

[8]孙涌.《现代软件工程》.北京希望电子出版社,2003年8月:1-246

[9]萨师煊,王珊.《数据库系统概论》.高等教育出版社,2002年2月:3-460

[10]Brown等.《JSP编程指南(第二版)》. 电子工业出版社 ,2003年3月:1-268

[11]清宏计算机工作室.《JSP编程技巧》. 机械工业出版社, 2004年5月:1-410

[12]朱红,司光亚.《JSP编程指南》..电子工业出版


本文标签: 数据库 测试 用户 系统 进行