admin管理员组

文章数量:1531793

2023年12月30日发(作者:)

石家庄铁道学院毕业设计

基于mysql的百度地图二次开发

Secondary Development of Baidu Map

Based on mysql

2014届 电气与电子工程 分院

专 业 电子信息工程

学 号 20102643

学生姓名 杨小宁

指导老师 杨明

完成日期 2014年6月1日

毕业设计成绩单

学生姓名 杨小宁 学号

20102643

班级 电1004 专业 电子信息工程

毕业论文题目

指导教师姓名

指导教师职称

基于mysql的百度地图二次开发

杨明

副教授

评 定 成 绩

指导教师

得分

得分

评阅人

答辩小组组长

成绩:

得分

院长签字:

年 月 日

毕业设计任务书

题 目

学生姓名 杨小宁

基于mysql的百度地图二次开发

学号

20102643

班级

导师

姓名

电1004

杨明

专业 电子信息工程

导师

职称

副教授 承担指导任务单位 电气与电子工程学院

一、 设计内容

基于要实现水位预警系统的远程地图显示,设计百度地图驱动mysql数据库,调用数据库里的数组,根据数据库的经纬度在地图上的相应位置显示标注,点击标注显示数据库的水深地址,以及路线查询,实现客户端手机端页面的显示等功能。

二、 基本要求

1、论文1万5千字以上;

2、外文翻译3000字以上;

3、实现java数据库驱动获取数组;

4、调用百度地图API应用程序接口实现显示查询;

5、实现远程查询数据;

6、参考文献7篇以上,外文1篇以上。

三、主要技术指标要求

1、满足Java驱动数据库准确实时的根据数据库数据的更新采集数据;

2、通过百度API应用程序接口地图数据的显示查询。

四、应收集的资料与参考文献

查阅关于mysql数据库的相关资料,熟悉数据库的建立流程;掌握java语言的语句编写;掌握javascript语言的编写;熟悉百度地图API功能的调用方法;规划地图开发所具有的功能和页面。

五、进度计划

2014年2月~3月:总体设计实现的功能,查阅语言相关资料;

2014年3月~4月:编写语言,运行测试;

2014年4月~5月:调整优化,完成论文;

2014年6月:答辩。

教研室主任签字

时 间 年 月 日

毕业论文开题报告

题 目

学生姓名 杨小宁 学号

基于mysql的百度地图二次开发

20102643

班级 电1004 专业 电子信息工程

一、课题的研究背景

近几年城市内涝现象比较严重,给人民的出行带来了困扰,严重的造成财产损失,另外信息化越来越普及的今天,手机电脑越来越成为生活中必不可少的一部分,地图作为其中的一个重要组成,给人民的生活出行带来巨大便利,具有广阔的发展前景。百度地图的二次开发具有易上手,功能强大,交互性强等优势,拥有越来越多的使用者,百度地图API为开发者免费提供的一套基于百度地图服务的应用接口,包括JavaScript API、Web服务API、Android

SDK、iOS SDK、定位SDK、车联网API、LBS云等多种开发工具与服务,提供基本地图展现、搜索、定位、逆/地理编码、路线规划、LBS云存储与检索等功能,适用于PC端、移动端、服务器等多种设备,多种操作系统下的地图应用开发。百度地图API免费对外开放,业已广泛应用互联网、移动设备、车厂等行业,主要涉及房产、电商、团购、移动手机应用、生活服务网站等。主要有搜房、糯米、去哪儿网、百姓网、12580、酷讯旅游、同程网、途牛旅游网、好大夫在线、豆角网、墨迹天气、食神摇摇等。

二、国内外的研究现状

到目前为止,学者们主要讨论了知识地图在知识管理、图书馆服务以及指导学习三个方面的应用。

(1)知识地图在知识管理方面的应用。知识地图不仅可以用于显性知识的管理,还可用于隐性知识的管理。可采用两种知识地图对隐性知识进行管理,一种用于隐性知识的表达,称为认知地图,亦称方法或过程图;另一种用于隐性知识的交流传播,被称为专家图,这两种图分别从隐性知识本身和隐性知识载体两个角度出发对隐性知识进行管理。可利用知识地图建立用户易用的智能化导航系统,用户在浏览的同时发表评论,通过知识地图平台进行隐性知识交流,能够为组织创新提供条件,利用知识地图进行知识重组,可为知识服务提供良好的服务平台。

(2)知识地图在图书馆参考咨询服务中的应用。知识地图是一种良好的工具,它可实现图书馆知识资源的可视化配置,明确知识的分布以及分布于不同空间的知识资源间的内在联系。参考咨询系统中的请求管理器根据知识地图就可以快速找到合理的知识匹配,进而将咨询请求提交给匹配度最高的知识资源所有者(图书馆和知识专家),以达到咨询服务的高质量。在此基础上,讨论了知识地图在个性化信息推荐服务中的应用。认为图书馆的个性化信息推荐系统需要随时密切关注用户信息需求,并适时把有关信息自动推送给用户,知识地图为实现这

样的服务提供了可能性。

(3)知识地图在指导学习中的应用。学生要培养自己的学习能力、实践能力和创新能力,就需要在学习的过程中学会在知识之间自主建构有意义的连接并感悟这种意义,形成知识地图,在解决问题的过程中应用并完善知识地图,总结出解决问题的各种方法和一般规律,使知识地图成为智能知识地图。

综上所述,对知识地图概念的研究,国外主要集中在20世纪末,尤其以1999年和2000年居多,而国内在这方面的研究稍晚,以2002年和2003年居多;在知识地图类型、功能以及知识地图的构建和应用方面,国内2000年以来研究颇多,且远远多于国外;此外,国内关于知识地图的应用和构建领域的文献近年来呈不断增长趋势,而国内外对知识地图特点以及评价指标的研究尚显薄弱,有待加强。

三、主要工作

1、选择性能好的数据库,进行数据存储;

2、搭建平台,编写代码运行代码;

3、导入数据库驱动,编写相应的驱动代码;

4、使用javascript的脚本语言调用百度API的函数;

5、使用tomcat发布网站。

四、采用的方法

本系统实现Zigbee终端节点进行水深数据经纬度和地址的采集,把数据通过协议栈传到协调器,协调器通过串口连接GPRS,GPRS通过因特网通过因特网实现发短信打电话的功能,通过透传把数据存在mysql数据库中,使用JDBC驱动包进行数据库的驱动,调用的数据存储在数组中。使用百度地图API的函数,通过javascript语言编写程序,实现相应功能,通过内网通软件得到一个公网IP,对tomcat进行配置,根据IP得到网址,即可实现tomcat发布网页,使得电脑手机端浏览器输入url可以访问。

五、预期的结果

实现Zigbee超声波终端节点水深数据的采集,通过协议栈实现协调器管理终端节点数据,通过GPRS数据透传数据传递给Labview上位机,同时实现GPRS实现发送短信打电话的功能,labview上位机存储数据在mysql数据库中,百度地图API获取数据库里的数据,根据经纬度把相应点标注在地图上,实现点击标注查看详细信息,包括该点的水深地址,实现地址的搜索,驾车路线的查询,实现在电脑手机浏览器输入网址查看详细信息。

指导教师签字

时 间 年 月 日

摘 要

mysql数据库具有体积小、速度快、总体拥有成本低,重点是是开放源码的特点提供简便快速的数据存储调用,百度地图Javascript API是一套由Javascript语言编写的应用程序接口,可实现在网站中构建功能丰富、交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5特性的地图开发。

本系统实现Zigbee终端节点进行水深数据经纬度和地址的采集,把数据通过协议栈传到协调器,协调器通过串口连接GPRS,GPRS通过因特网通过因特网实现发短信打电话的功能,通过数据透传把数据存在上位机labview中,labview把数据存储在mysql数据库中。

本文研究如何通过Java驱动数据库获得经纬度,水深,地址数据,通过百度地图API应用程序接口根据精度为实现标注在地图上的显示,超过设定的水深值时实现跳动报警,输入地址实现地址查询,输入起始点实现路线查询,以及输入网址实现网页和手机端的显示。

关键词:mysql数据库 百度地图API Javascript 应用程序

Abstract

mysql database has small volume, quick speed, low total cost of ownership, the key is to provide a simple quick is the characteristic of open source data storage calls,Baidu map Javascript API is a set of written by the JavaScript language application program interface,Can be realized on the site to build rich, interactive maps,Support PC and mobile terminal based on the browser's maps application development, and support HTML 5 features map development.

This system implement Zigbee terminal nodes for water depth data collection of latitude and longitude and addresses, the data through the protocol stack to the coordinator, the coordinator via a serial port connection of GPRS, GPRS can realize the function of text call via the Internet through the Internet, through data passthrough the data exist PC labview, labview data is stored in the mysql database.

In this paper, we study how to use the Java driver database for longitude and

latitude, water depth, the address data, through the baidu map API application program interface according to the precision to achieve the display of the mark on the

map, set more than the depth of the value implementation beating the police, the input address implementation query, enter the starting points to realize the route query, and input the website to realize the display on web and mobile phones.

Key words: The mysql database Baidu map Javascript API Applications

目 录

第1章 绪论 ........................................................... 1

1.1 课题研究的的意义 ............................................... 1

1.2 国内外研究现状 ................................................. 1

1.3 论文研究内容及工具 ............................................. 2

1.3.1 小巧高速的mysql数据库 ................................... 2

1.3.2 功能强大的百度地图API .................................... 2

第2章 系统方案设计 ................................................... 3

2.1 设计原则及流程 ................................................. 3

2.2 流程实现 ....................................................... 4

2.2.1 存储在mysql中的数据 ..................................... 4

2.2.2 Java驱动数据库 ........................................... 5

2.2.3 百度地图API函数调用 ..................................... 5

2.2.4 电脑手机端页面的显示 ..................................... 5

第3章 mysql数据库 .................................................... 7

3.1 mysql软件简介 ................................................. 7

3.2 建立数据库 ..................................................... 7

3.3 存储数据 ....................................................... 8

第4章 编程软件及文件 ................................................. 9

4.1 JDK简介 ....................................................... 9

4.2 tomcat简介 .................................................... 9

4.3 myeclips简介 .................................................. 9

4.4 myeclips配置tomcat ........................................... 10

4.5 建立编程文件 ........................................... 11

第5章 Mysql数据库数据调用 ........................................... 13

5.1 JDBC简介 ..................................................... 13

5.2 myeclipse添加JDBC驱动 ....................................... 13

5.3 数据库驱动 .................................................... 14

5.4 数据存储 ...................................................... 14

第6章 百度地图应用程序接口 .......................................... 16

6.1 百度地图API简介 .............................................. 16

6.2 地图控件 ...................................................... 16

6.3 标注的显示 .................................................... 17

6.3.1 数组的调用 .............................................. 17

6.3.2 添加标注 ................................................ 17

6.3.3 标注的跳动预警 .......................................... 18

6.3.4 标注图标的自定义 ........................................ 18

6.4 弹出窗口显示信息 .............................................. 20

6.4.1 监听函数介绍 ............................................ 20

6.4.2 点击窗口显示数据 ........................................ 20

6.5 地址的查询 .................................................... 22

6.5.1 搜索按钮 ................................................ 22

6.5.2 本地搜索 ................................................ 23

6.5.3 清除历史信息 ............................................ 23

6.6 驾车线路查询 .................................................. 24

6.6.1 驾车路线查询按钮 ........................................ 24

6.6.2 路线查询实现 ............................................ 25

6.7 定时更新页面信息 .............................................. 26

7.1 内网通简介 .................................................... 27

7.2 内网通提供静态IP ............................................. 27

7.3 tomcat的设置 ................................................. 28

7.4 tomcat根据IP实现页面访问 .................................... 28

7.4.1 tomcat网页访问的机制 .................................... 28

7.4.2 网页访问 ................................................ 29

致 谢 .............................................................. 32

参考文献 .............................................................. 33

附录A 外文翻译 ....................................................... 34

A.1 英文 .......................................................... 34

A.2 译文 .......................................................... 40

附录B 源程序 ......................................................... 45

石家庄铁道大学毕业设计

第1章 绪论

1.1 课题研究的的意义

随着移动平台操作系统的飞速发展和地图应用领域的不断延伸,人们对于地理信息服务的要求也越来越高,在手机端和电脑客户端拓展地图应用,尤其是可以根据特定的需求进行百度地图二次开发,开发出满足用户的需求的百度地图,本课题的目的在于市民和相关部门可以方便准确的远程实现各个地方水深,路线的查询,为人民的安全出行提供便利,同时相关部门也可以根据水深超出危险水深的地区提前做出应对措施,从而减少不必要的损失。

1.2 国内外研究现状

到目前为止,学者们主要讨论了知识地图在知识管理、图书馆服务以及指导学习三个方面的应用。

(1)知识地图在知识管理方面的应用。知识地图不仅可以用于显性知识的管理,还可用于隐性知识的管理。可采用两种知识地图对隐性知识进行管理,一种用于隐性知识的表达,称为认知地图,亦称方法或过程图;另一种用于隐性知识的交流传播,被称为专家图,这两种图分别从隐性知识本身和隐性知识载体两个角度出发对隐性知识进行管理。

(2)知识地图在图书馆参考咨询服务中的应用。知识地图是一种良好的工具,它可实现图书馆知识资源的可视化配置,明确知识的分布以及分布于不同空间的知识资源间的内在联系。参考咨询系统中的请求管理器根据知识地图就可以快速找到合理的知识匹配,进而将咨询请求提交给匹配度最高的知识资源所有者(图书馆和知识专家),以达到咨询服务的高质量。

(3)知识地图在指导学习中的应用。学生要培养自己的学习能力、实践能力和创新能力,就需要在学习的过程中学会在知识之间自主建构有意义的连接并感悟这种意义,形成知识地图,在解决问题的过程中应用并完善知识地图,总结出解决问题的各种方法和一般规律,使知识地图成为智能知识地图。

综上所述,对知识地图概念的研究,国外主要集中在20世纪末,尤其以1999年和2000年居多,而国内在这方面的研究稍晚,以2002年和2003年居多;在知识地图类型、功能以及知识地图的构建和应用方面,国内2000年以来研究颇多,且远远多于国外;此外,国内关于知识地图的应用和构建领域的文献近年来呈不断增长趋 1

石家庄铁道大学毕业设计

势,而国内外对知识地图特点以及评价指标的研究尚显薄弱,有待加强。

1.3 论文研究内容及工具

论文主要研究了从数据库里读取数据在地图上进行标注,并对标注的详细信息,点击标注实现标注信息弹出窗口,显示水深地址信息,实现发送短信的功能,根据短信链接信息实现具体信息的查看,实现地址的搜索和驾车路线的查询,根据公网IP对tomcat进行设置实现网页手机端的访问。

1.3.1 小巧高速的mysql数据库

mysql数据库用来存储本系统使用到的经度,纬度,水深,地址数据,使用mysql数据库具有一下优势[1]:

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

(2)支持多线程,充分利用CPU资源。

(3)优化的SQL查询算法,有效地提高查询速度[2]。

(4)提供TCP/IP、ODBC和JDBC等多种数据库连接途径。

(5)提供用于管理、检查、优化数据库操作的管理工具。

1.3.2 功能强大的百度地图API

百度地图API实现的是调用数据库数据,通过百度地图应用程序接口,调用百度地图API功能强大的函数类,实现功能丰富的百度地图二次开发。百度API具有免费,特制,高效,开放的特点,功能齐全,百度地图API的功能包括核心类,基础类,工具类,覆盖物类,服务类,图层类等。本系统实现的地图的功能包括标注的显示,标注跳动预警,窗口信息展示,地区搜素,驾车路线的查询,以及手机电脑端页面的查看[11]。

百度地图API具有的优势:

(1)功能丰富;

(2)交互性;

(3)功能特制;

(4)免费开放;

(5)支持PC端和移动端基于浏览器的地图应用开发;

(6)支持HTML5特性的地图开发;

2

石家庄铁道大学毕业设计

第2章 系统方案设计

2.1 设计原则及流程

总体实现Zigbee终端节点进行水深数据经纬度和地址的采集,把数据通过协议栈传到协调器,协调器通过串口连接GPRS,GPRS通过因特网通过因特网实现发短信打电话的功能,通过数据透传把数据存在上位机labview中,labview把数据存储在mysql数据库中,百度API从数据库中调取数据实现手机页面的访问,总体的流程如图2-1所示[16]。

ZigBee

百度API

GSM

线 驱

ZigBee

GPRS

ZigBee协调器

透传

LabSQL

无线

线

ZigBee

串口

单片机

串口

图2-1 总体流程图

本系统主要实现的是调用存储在mysql里的数据,通过Java驱动mysql使得数据存储在数组里,百度API读取数组里的经纬度,利用自身的的功能将标注唯一标注在地图上,通过跟经纬度对应的水深,地址数据,在地图上显示对应标注所在点的水深和地址[12]。

3

石家庄铁道大学毕业设计

本系统功能的实现流程图如图2-2所示。

图2-2 系统流程图

2.2 流程实现

在mysql数据库使用其自带的数据名为test的数据库,表名为study,表study中有五个字段,包括id,jingdu,weidu,shuishen,address,其中id是唯一索引Primary Key,jingdu,weidu是根据百度地图地理反编码得到的,我国对经纬度进行了二次加密,本系统使用百度地图API实现的二次开发,所以采取的是百度地图的地理反编码得到经纬度比较准确,水深数据是根据Zigbee超声波节点采集的水深数据,address的数据是根据经纬度得到的[3]。

2.2.1 存储在mysql中的数据

上位机labview存储数据在数据库名为test,表名为study,在mysql数据库中输入select * from ,得到如图2-3所示的数据[4]。

图2-3 MySQL数据库

4

石家庄铁道大学毕业设计

2.2.2 Java驱动数据库

Java连接mysql需要安装JDBC驱动,本系统采用的是 mysql的JDBC驱动,放在C:Program Files (x86)Apache Software FoundtionTomcat 6.0lib目录下,然后把驱动放在如图2-4所示的位置[7]。

图2-4 Mysql的JDBC驱动位置

2.2.3 百度地图API函数调用

百度地图API函数基本面向对象的技术,包含核心类,基础类,控件类,覆盖物类,右键菜单类,工具类,地图图层类,服务类。本系统使用的是基础类,控件类,覆盖物类,服务类函数,来实现了地图方法缩小,地图的拖曳,卫星地图的显示,已经通过鼠标滚轮实现地图的放大缩小;标注的显示,应用的是百度地图API的覆盖物类,实现的是根据数据库里的经纬度通过一定的标记图标在地图上显示出来;地址的搜索,路线的查询等功能,应用的是百度地图API的服务类,通过调用服务方法来实现地点的搜索以及路线的规划[11]。

2.2.4 电脑手机端页面的显示

tomcat的功能室想用HTML页面的访问请求,先配置tomact,在C:Program Files (x86)Apache Software FoundationTomcat 6.0webappsROOT目录下导入本系统的文件,如图2-5所示[5]。

5

石家庄铁道大学毕业设计

图2-5 Tomcat配置文件

使用内网通内网通,是专业的内网端口映射软件,该软件把本机IP映射到固定服务器的的IP地址,映射效果如图2-6所示。

图2-6 端口映射

映射成功后,tomcat根据映射成功的IP地址,即http://IP/文件,来实现网页访问,所以在电脑或者手机上输入网址:60.169.75.253:59975/study/即可实现页面访问。

6

石家庄铁道大学毕业设计

第3章 mysql数据库

3.1 mysql软件简介

mysql是一个开放源码的小型关联式数据库管理系统。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了mysql作为网站数据库。mysql所使用的SQL语言是用于访问数据库的最常用标准化语言。并且具有支持多线程,充分利用CPU资源,优化的SQL查询算法,有效地提高查询速度,提供用于管理、检查、优化数据库操作的管理工具等优势。本系统使用的是版本是mysql-installer-community-5.6.10.1。登陆用户名为root,密码是yangxiaoning。

3.2 建立数据库

打开软件,点击MySQLForExcelConnection,如图3-1所示。

图3-1 进入数据库

密码是mysql数据库安装软件安装的时候确定的,设定的密码是yangxiaoning,输入用户密码yangxiaoning,点击OK。

进入mysql数据库页面,建立表的前提的是在先建立一个数据库,在数据库的基础上建立表,,进入页面可以看到mysql数据库有一个自带的名为test的数据库,可以mysql数据库自带的数据库名为test数据库上右击选择Creat Table,开始建表,如图3-2所示。

7

石家庄铁道大学毕业设计

图3-2 建立表

设置表名为study,分为五个字段id,jingdu,weidu,shuishen,address,设置id为Primary key,int型,使得id为唯一索引,其他四个字段设置最大长度为255的字符型,设置好后点击Apply,表study建立完成。

3.3 存储数据

表建好后,在Quary1中输入select * from ,点击执行按钮,可以查询labview上位机存储在数据库test,表study中的数据,如图3-3所示[3]。

图3-3 mysql中存储的数据

8

石家庄铁道大学毕业设计

第4章 编程软件及文件

4.1 JDK简介

JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。

本系统使用的是jdk-7u45-windows-i586软件,用来搭建java运行平台。

4.2 tomcat简介

tomcat服务器是一个免费的开放源代码的WEB应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。

本系统使用的tomcat版本是apache-tomcat-6.0.39。注意需要先安装JDK软件,搭建一个合适的语言平台。

4.3 myeclips简介

myeclipse是一个十分优秀的用于开发Java,J2EE的Eclipse,插件集合,myeclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。myeclipse目前支持Java Servlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说myeclipse几乎囊括了目前所有主流开源产品的专属myeclipse开发工具[8]。

本系统使用的myeclips软件是myeclipse-8.5.0,用来编写程序。注意myeclips需要对tomcat进行配置。

9

石家庄铁道大学毕业设计

4.4 myeclips配置tomcat

myeclipse是Java Web企业级开发中最流行的工具,Java Web的开发离不开服务器,作为J2EE平台上最流行的服务器,tomcat发挥着巨大的作用,由于myeclipse自带的tomcat功能不够完善,而且无法更好的清除服务器缓存,不能方便的透明的查看tomcat服务器的各种运行状态,所以给myeclips配置tomcat很有必要。

在window-perference里进行设置。使用下载的tomcat6.0,按钮设置成Enable,如图4-1所示[9]。

图4-1 使用下载的tomcat

10

石家庄铁道大学毕业设计

禁止myeclips自带的tomcat,按钮设置成Disable,如图4-2所示。

图4-2 禁止使用myEclipse自带的tomcat

4.5 建立编程文件

JSP是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页Java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP网页[10]。

在myeclipse中建立.jsp文件,在WEB-INF右击,选择new,在下拉菜单里选择 11

石家庄铁道大学毕业设计

JSP(Advanced Templates),设置文件名为,其中File Path是文件的存储路径,点击Finish完成文件的建立,如图4-3所示。

图4-3 建立jsp文件

得到如图4-4所示的文件,双击文件,进入编程环境。

图4-4 文件位置

12

石家庄铁道大学毕业设计

第5章 Mysql数据库数据调用

5.1 JDBC简介

JDBC(Java Database Connectivity)称为Java数据库连接,是一种用Java编写的用于数据库访问的应用程序API。有了JDBC,就可以用统一的语法对多种关系数据库进行访问,而不必担心其数据库操作语言的差异,这充分体现了Java语言的平台无关性。

5.2 myeclipse添加JDBC驱动

在myeclipse中添加mysql的JDBC驱动,加载方法是

myeclipse中:右键单击项目名—>然后build path—>Add External Archives—>找到你下载好的JDBC驱动Jar包()—>确定—>会自动添加到这个Referenced Libraries,即可导入JDBC驱动。

加载到myeclipse的如图5-1所示[14]。

图5-1 JDBC数据源导入myeclipse中的位置

13

石家庄铁道大学毕业设计

5.3 数据库驱动

Java调用mysql中的数据需要JDBC驱动,本系统采用的是的驱动包实现mysql的JDBC驱动[5]。

//数据库驱动

e("");

//建立数据库连接三个参数:URL、用户名、密码

Connection ct=nection("jdbc:mysql://127.0.0.1:3306/test","root","yangxiaoning");

//获取Statement

Statement sm=Statement();

//获取结果集ResultSet

ResultSet rs=eQuery("select * from study");

其中e("");在应用程序中加载JDBC驱动程序,通常使用e()方法加载,是mysql的JDBC驱动。

Connection ct = nection("jdbc:mysql://127.0.0.1:3306/test",

"root","yangxiaoning");

成功加载驱动之后,要用DriverManager类的方法getConnection()来创建一个数据库连接类的实例。对于jdbc:mysql://127.0.0.1:3306/test", "root","yangxiaoning,表示jdbc连接mysql的url,mysql数据库的端口号为3306,数据库名为test,登陆数据库用户名为root,密码是yangxiaoning。

获取Connection对象之后,可以用其中的方法创建一个Statement对象的实例。Statement sm = Statement();Statement对象可以执行标准的SQL语句,用来完成对数据库的插入、删除或修改等操作。

ResultSet rs = eQuery("select * from study"); 表示通过执行语句select * from study获取表study的数据。

5.4 数据存储

Java驱动数据库成功后获取到数据库里的数据,需要把数据库的数据存储在数组里。

// ******* 数据库连接代码开始 *****

//异常处理语句

14

石家庄铁道大学毕业设计

String latis = "";

String longis = "";

String deeps = "";

String addresss = "";

while (())

{

latis += ing("jingdu") + ",";//纬度

longis += ing("weidu") + ",";//经度

deeps += ing("shuishen") + ",";//shuishen

addresss +=ing("address") + ",";

}

();

();

();

定义latis,longis,deeps,addresss定义字符串,通过while循环语句,不断的读取数据,把数据存储在字符串中。定义字符串,latis用来存储纬度数据,longis用来存储经度数据,deeps用来存储水深数据,addresss用来存储地址数据。数据库里的数据存储在读完并且存储在这四个字段之后,即完成了数据库访问,要关闭与数据库连接即(); ();();

15

石家庄铁道大学毕业设计

第6章 百度地图应用程序接口

6.1 百度地图API简介

百度地图API是一套由javascript语句编写的应用程序接口,它能够使用户在网站中构建功能丰富,交互性强的地图应用程序。通过地图服务应用接口将平台和地理信息数据绑定,将复杂的GIS底层逻辑进行封装,以一种直观的方式免费提供给用户,从地图服务和开发两个层面降低了GIS的应用门槛。百度地图API不仅包含构建地图的基本接口,还提供了诸如本地搜索,路线规划等数据服务,用户可以根据自己的需要进行选择。百度地图API函数基本面向对象的技术,包含核心类,基础类,控件类,覆盖物类,右键菜单类,工具类,地图图层类,服务类。其中核心类主要用来实现地图的表达;控件类用来添加地图的浏览工具如地图的移动,缩放工具;服务类提供用户地图的相关服务,如搜索工具,公交路线查询工具,自驾路线查询工具盒地理编码工具等。每个类都通过AJAX模式实现,开发者只需要通过其API,利用javascript脚本语言就可以将百度地图服务连接到自己的网页中。通过地图API提供的借口,满足各类B/S和C/S体系架构的基于网络地图服务应用[11]。

6.2 地图控件

百度地图上负责与地图交互的UI元素,百度地图API中提供了丰富的控件,还可以通过Control类来实现自定义控件,使用的控件:

//trol(new tionControl());//平移缩放控件

//trol(new ontrol());//比例尺控件

trol(new ewMapControl());//缩略地图控件

trol(new eControl());//地图类型控件

ScrollWheelZoom();//启用滚轮放大缩小

trol(new eControl());//地图类控件,地图卫星三维

trol(new ewMapControl());

trol(new ewMapControl({isOpen:1}));//开启鹰眼(迷你型缩略图控件)

trol(new ewMapControl({isOpen: 1, anchor: BMAP_ANCHOR_TOP_RIGHT}));//开启鹰眼,位置在右上方

16

石家庄铁道大学毕业设计

trol(new tionControl({type: BMAP_NAVIGATION_CONTROL_SMALL}));//为地图添加鱼骨(迷你型平移控件)

trol(new ontrol({offset: new (5, 40)}));//添加一个带上偏移量的比例尺

通过添加这些控件可以使得地图放大缩小平移,拖曳,卫星地图显示,比例尺,鼠标滚轮实现地图的放大缩小等地图表达功能,通过放入迷你控件可以使得页面的规划更加的合理。

6.3 标注的显示

所有叠加或覆盖到地图的内容,我们统称为地图覆盖物。如标注、矢量图形元素(包括:折线和多边形和圆)、信息窗口等。覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动。通过覆盖物可以很方便的把想要在地图上标示的内容显示出来。

标注的显示主要是通过调用数据库的经纬度来定位具体的地点并且在地图上标注出来。出于安全考虑,国家对坐标进行了二次加密,GPS坐标,百度坐标,goole坐标会有偏差,本系统的经纬度的值是通过地理反解码获取百度地图经纬度,可以保证定位的准确性。

6.3.1 数组的调用

定义数组

arrayObx='<%=latis%>'.split(",");

arrayOby='<%=longis%>'.split(",");

arrayObz='<%=deeps%>'.split(",");

arrayObm='<%=addresss%>'.split(",");

经度放在arrayObx数组里,纬度放在arrayOby数组里,水深放在arrayObz数组里,地址放在arrayObm数组里。

6.3.2 添加标注

通过rlay方法向地图添加覆盖。

根据经纬度定义marker,创建标注。

var marker= new (new (arrayObx[i], arrayOby[i]),{icon: icon},{fillColor:"blue"});//创建标注

17

石家庄铁道大学毕业设计

将标注添加到地图中

rlay(marker);//将标注添加到地图中

即可在地图上显示标注点。

效果如图6-1所示。

图6-1 标注的显示

6.3.3 标注的跳动预警

设定一个预警值,超过这个预警值就标注就跳动,程序如下:

(marker);

if (arrayObz[i]<30)

{

rlay(marker);// 将标注添加到地图中

}

else

{rlay(marker);

mation(BMAP_ANIMATION_BOUNCE);//跳动的动画

}

本系统设定的预警值是30单位是mm,超过这个值的时候通过 mation(BMAP_ANIMATION_BOUNCE);标注就开始跳动。

6.3.4 标注图标的自定义

百度地图API默认的标注图标是红色水滴状的,以后搜索功能,路线查询起始点的确定位置也是用红色水滴状的标注显示,为了便于区分两者的差别,对标注进行自 18

石家庄铁道大学毕业设计

定义,插入图片改变标注的样式。下载图片命名为,在目录C:UsersadminWorkspacesMyEclipse 8.5study下新建文件夹为debug,把图片放在该文件夹下,然后把图片导入如图6-2所示的目录。

图6-2 标注自定义图片位置

在代码里实现该图片的显示如下所示。

//自定义标注图标

var icon =new ('icon/', new (20, 32),

{

anchor: new (10, 30),

})

其中 var icon =new ('icon/', new (20, 32), 通过Icon类可实现自定义标注的图标,自定义图标名称icon。

anchor: new (10, 30),对标注大小的设置。

效果如图6-3所示。

图6-3 自定义标注的显示

19

石家庄铁道大学毕业设计

6.4 弹出窗口显示信息

6.4.1 监听函数介绍

百度地图API中的大部分对象都含有addEventListener方法,您可以通过该方法来监听对象事件。例如,包含click、dblclick等事件。在特定环境下这些事件会被触发,同时监听函数会得到相应的事件参数e,比如当用户点击地图时,e参数会包含鼠标所对应的地理位置point。addEventListener方法有两个参数:监听的事件名称和事件触发时调用的函数。

6.4.2 点击窗口显示数据

标注已经在地图显示,若要点击标注显示水深和地址的详细信息,我们需要用到infoWindow函数,此函数的功能是点击一个要素的时候,同时需要查询这个要素的属性值并在地图上显示出来,代码如下所示:

var tig;

for (var i =0; i<-1;i++)

{

(function(){

var index = i;

markers[i].addEventListener('click', function(){

var opts =

{

width: 250,//信息窗口宽度

height: 100,//信息窗口高度

title: ""//信息窗口标题

}

var infoWindow1 = new ndow('水深:'+arrayObz[index]+' mm'+'

'+'地址:'+arrayObm[index], opts);

foWindow(infoWindow1);

});

})();

}

for (var i =0; i<-1;i++)是从数据库中读取数据不断循环,循环次数为,即有多少组就循环多少次,在每次循环里, markers[i].addEve 20

石家庄铁道大学毕业设计

ntListener('click', function(),定义监听函数,addEventListener(),监听是否点击'click'。即是否有点击事件,监测到有点击事件,即触发function()方法。

var opts = {

width: 250, // 信息窗口宽度

height: 100, // 信息窗口高度

title: "" // 信息窗口标题

}

是对显示窗口大小的设置。

var infoWindow1 = new ndow('水深:'+arrayObz[index]+' mm'+'

'+'地址:'+arrayObm[index], opts);

设置窗口显示的内容包括水深和地址,先设置一个index,即索引,实现对数据组的数据进行编号,这样便于数据的调用提高内容显示的正确性。

foWindow(infoWindow1);

调用函数openInfoWindow()打开窗口,显示窗口内容。

效果如图6-4所示。

图6-4 窗口信息显示

21

石家庄铁道大学毕业设计

点击显示窗口的手机按钮,如图6-5所示。

图6-5 短信发送功能

输入发送放手机号,接收方手机号,对方手机收到的短信内容如图所示,点击连接如图6-6所示。

图6-6 手机端显示

6.5 地址的查询

位置的查询即根据输入的地址信息定位到地址所在的区域。

6.5.1 搜索按钮

在页面上输入地址百度地图自动定位到那一块区域,首先在页面上设一个查询按钮,代码如下:

请输入地址:

22

石家庄铁道大学毕业设计

定义输入的地址定义为dizhi,按钮的名字叫搜索,点击搜素那妞,触发事件,调用sousuo()方法。

6.5.2 本地搜索

本地搜索属于百度地图API的服务类,调用本地搜索LocalSearch()方法,该方法提供某一特定地区的位置搜索服务。

var num=0;

function sousuo(){

var a = mentById("dizhi").value;

var local = new earch(map, {

renderOptions:{map: map, panel:"results"}

});

(a); //范围搜索

}

function sousuo()是对定义的搜索按钮的作用的定义,起到作为对象方法的作用。

var a = mentById("dizhi").value;获取输入的地址定义为a。

var local = new earch(map, {

renderOptions:{map: map, panel:"results"}

}); 通过设置属性,可以为本地搜索对象提供一个结果列表容器,搜索结果会自动添加到容器元素中。

(a); 通过调用LocalSearch方法实现范围的搜索。

6.5.3 清除历史信息

百度地图API提供的搜素方法本身不具有历史信息覆盖的能力,及第二次搜素的结果在页面上会存在第一次搜素的结果。为了在页面上一次只显示一次的搜索结果,本系统使用的清除按钮,已清除历史数据。

首先添加清除按钮:

点击清除按钮触发verlays()方法,verlays()方法具有清除图层的作用,清除图层意味着清除掉页面上的全部的信息,包括标注和历史数据。保证只清除掉历史查询数据,必须保证不清除掉标注,程序如下所示:

for(var j=0;j

23

石家庄铁道大学毕业设计

if((arrayObx[j]==arrayObx[i])&(arrayOby[j]==arrayOby[i]))

{

Overlay(markers[j]); //保留最后一次标注

}

}

eMassClear();//清除图层时不清除标注

如图6-7所示。

图6-7 地址搜索

6.6 驾车线路查询

使用的百度API的服务类,实现的是路线的规划,根据输入的始终点的位置来实现始点到终点路线的查询。调用的方法是()方法。

6.6.1 驾车路线查询按钮

在页面上设置一个查询按钮,根据输入的起点框,终点框确定起始地址,点击查询按钮实现路线查询。代码如下:

设置dizhi1是输入的起点的地址,dizhi2是终点的地址,有点击查询按钮即触发事件chaxun()。

24

石家庄铁道大学毕业设计

6.6.2 路线查询实现

调用()提供驾车导航服务,该函数是通过输入的起始点的位置实现的驾车路线的查询。代码如下所示:

//驾车导航

function chaxun(){

var b = mentById("dizhi1").value;

var c = mentById("dizhi2").value;

function search(b,c,route){

var transit = new gRoute(map, {

renderOptions: {map: map,panel:"r-result"},

policy: route

});

(b,c);

}

}

其中

var b = mentById("dizhi1").value;

var c = mentById("dizhi2").value;

是把其实点的位置传递给b,c,定义function search(b,c,route)的函数,可以为驾车查询对象提供一个结果列表容器,搜索结果会自动添加到容器元素中。

(b,c);通过调用方法实现路线的查询。

效果如图6-8所示:

图6-8 驾车路线查询

25

石家庄铁道大学毕业设计

6.7 定时更新页面信息

数据库中的数据是实时在更新,为了保证页面的信息也在不断更新,设置一个定时器,设定一个时间,来刷新页面,调用setInterval函数,setInterval(expression,delayTime),每个DelayTime,都将执行Expression。常常可用于刷新表达式。每执行一次setInterval函数,刷新的时间间隔是1ms,代码如下:

function test(){

// = new ( ter()); // 创建标注

}

setInterval(test,3600000);

//设置超时对象 10分 刷新一次 10000=1s

//if(num<-1){

//}

(true);

//num++;

//alert(arrayObz[num]);

//imeout(tig); //注销定时器

//}else{

26

石家庄铁道大学毕业设计

第7章 网页手机端页面显示的实现

7.1 内网通简介

内网通,是专业的内网端口映射软件,可轻松访问连接内网,不需设置路由器,不需公网IP,不需固定IP,不需动态域名,成功率90%以上,适合在公司,小区宽带,出租屋,校园网,网吧,教育网,等网络结构复杂,限制严格的环境中使用。

内网通特点如下:

(1)简单易用在客户端添加映射的规则实时生效,马上就能映射出外网,无需繁琐的设置过程。

(2)穿透性强面对电信运营商的严格限制,PP内网通通过先进的技术手段,保证只要能打开网页,就能映射成功。

(3)高速稳定服务器选择最适合中国网络的线路,完美解决电信互联互通问题,随时都能获得高速连接。

(4)功能强大支持多端口映射和自定义访问端口功能。支持开机运行,自动登录,后台服务功能,保证24小时稳定不掉线。专门的服务器转发数据,达到不需要修改路由器设置,就能映射出外网的效果。

7.2 内网通提供静态IP

选择一个未占用的端口,把端口号输入到映射端口,本系统使用的是端口59975,点击映射全部,映射为公网IP为60.169.75.253:59975,映射效果如图7-1所示。

图7-1 内网通端口映射

27

石家庄铁道大学毕业设计

7.3 tomcat的设置

得到映射端口之后,为了达到整个系统的统一一致,需要更改tomcat的端口,否则会报错,网页无法查看,在C:Program Files (x86)Apache Software FoundationTomcat 6.0conf的目录下的server文件,如图7-2所示。

图7-2 tomcat端口设置文件位置

用记事本打开server文件,更改connector port后面的值为59975,如图7-3所示。

图7-3 tomcat端口设置

点击保存,此时已经设置好tomcat的端口号为59975。

7.4 tomcat根据IP实现页面访问

7.4.1 tomcat网页访问的机制

URL打上localhost:端口号//项目名字,浏览器自动到服务器找该项目的w 28

石家庄铁道大学毕业设计

ebroot下的。由它定位访问webroot文件夹下的jsp文件,如果定位的文件在web-inf文件夹下,浏览器是无法访问的。哪怕浏览器打上jsp全路径名,也无法啊访问,应为由决定。

7.4.2 网页访问

配置tomact,在C:Program Files (x86)Apache Software FoundationTomcat 6.0webappsROOT 目录下导入本系统的文件,如图7-4所示。

图7-4 文件导入

在电脑页面或者手机浏览器输入网址60.169.75.253:59975/study/,可以实现电脑手机端的访问,如图7-5,7-6所示。

29

石家庄铁道大学毕业设计

图7-5 电脑客户端显示

图7-6 手机端显示

30

石家庄铁道大学毕业设计

第8章 展望与结论

随着电子技术、信息技术、计算机技术、多媒体技术、现代通信技术等一些高科技的不断革新为空间信息获取、传输、处理、分析与表达提供了创新动力与技术升级空间,电子地图作为空间信息可视化产品之一,以不同层次的多种形式广泛应用于公众及行业领域,从而的到了迅速的发展和取得了巨大的成就。电子地图的出现,使得传统地图学认为的只是关于地图的科学或者地图只是信息表示的传统观念正逐渐被淡化,代之而起的是一种集动态性、交互探究性和超媒体等特征于一体的地图可视化工具。本文分析了电子地图的特点、电子地图的关键技术、电子地图的应用现状及发展前景。

在这次的毕业设计过程中,遇到了许多的问题,刚开始遇到的问题是各个软件的结合,选定的是用百度地图进行二次开发,用到的语言是javascript,编程软件是myeclips,myeclips带有的tomcat不满足开发需要,软件下载了需要安装tomcat,在安装的过程中发现还需要下载JDK软件,即Java的运行平台软件,都弄好之后,还是有错,然后上网查资料发现还需要进行tomcat的myeclips的配置,配置好之后还是报错,发现tomcat默认的8080端口被占用,查资料更改端口。其次遇到的困难是进行对mysql数据库的驱动,导入mysql数据库的JDBC驱动,输入驱动代码,难点在于不断的读取数据存放在数组中。再次是调用百度地图API函数实现功能,主要是调用数组实现窗口信息的显示,设置清除按钮的时候清除图层不清除标注的代码;最后是网页显示,开始用的本机的IP进行网页显示,本机IP改变不是长久之计,所以找到了内网通软件,通过端口映射到一个公IP,通过tomcat通过URL发布网页的方式,使得可以电脑端手机端页面的访问。

在这次的毕业设计中,学到了很多的知识,学会了用Java,Javascript的语句进行编程,也锻炼了遇到问题解决问题的能力,对于自学能力是个很好的锻炼,这种能力和知识在以后的工作中会很有帮助。

31

石家庄铁道大学毕业设计

致 谢

在本次毕设设计的过程中,首先感谢杨明老师对我的指导,让我在遇到困难的时候有种柳暗花明的感觉,感谢帮助我的同学,同事,知道我软件的使用以及如何建立文件,出错了怎么去调试,你们的真诚的帮助和鼓励,在我对不知道做什么到逐渐上手直至初现功能以及后期的优化的过程中感受到团队协作的力量及学到真才实学的快乐。通过这次毕设的过程,我不仅学到了知识,更学到了团队精神以及虚心向别人请教,锻炼了遇到问题解决问题的能力,最后再次致谢杨明老师的指导。

32

石家庄铁道大学毕业设计

参考文献

[1] Baron Schwartz.高性能MySQL[M].电子工业出版社.2009

[2] 唐汉明.深入浅出MySQL数据库开发、优化与管理维护[M].人民邮电出版社.2008

[3] Bell.C.高可用MySQL:构建健壮的数据中心[M].电子工业出版社.2006

[4] 杜雅杉.基于PHP及MySQL数据库的行业网站建设研究[J].电脑开发与应用,2013(7):24-26.

[5] 明日科技.Java从入门到精通[M].清华大学出版社.2009

[6] 埃史尔、陈昊鹏.Java编程思想[M].机械工业出版社.2010

[7] Cay S. 核心技术(卷1):基础知识[M].机械工业出版社.2011

[8] Zakas. Nicholas ript高级程序设计[M].人民邮电出版社.2011

[9] Tom ript基础教程[M].人民邮电出版社.2011

[10] 尼格瑞诺,史密斯.JavaScript基础教程[M].陈剑瓯,柳靖,译.人民邮电出版社.2012

[11] 百度地图API参考手册[M].人民邮电出版社.2012

[12] 涂振宇,童星等.基于百度地图API实现水库地理信息查询[J].江西教育学报.2012.12

[13] 杜传明.百度地图API 在小型地理信息系统中的应用[J]. 测绘与空间地理息,2011.(2)

[14] 杜锦华,邹峥嵘,刘平.基于MySQL空间扩展的GIS开发技术研究[J].地理信息世界,2012

(3):62-67.

[15] 白学文,杨红,杨韬.基于百度地图API发布乡镇精细化天气预报[J].云南科技管理,2012(1):

46-48.

[16] 王红崧,周海晏.基于百度地图API的旅游地理信息系统开发[J].现代计算机(专业版),2012

(23):60-63.

33

石家庄铁道大学毕业设计

附录A 外文翻译

A.1 英文

MySQL and JSP Web applications

JSP developers encounter unique problems when building web applications that

require intense database connectivity. MySQL and JSP Web Applications addresses the

challenges of building data-driven applications based on the JavaServer Pages

development model. MySQL and JSP Web Applications begins with an overview of the

core technologies required for JSP database development--JavaServer Pages, JDBC, and

the database schema. The book then outlines and presents an Internet commerce

application that demonstrates concepts such as receiving and processing user input,

designing and implementing business rules, and balancing the user load on the server.

Through the JDBC (Java DataBase Connector), the developer can communicate with most

commercial databases, such as Oracle. The solutions presented in MySQL and JSP Web

Applications center on the open source tools MySQL and Tomcat, allowing the reader an

affordable way to test applications and experiment with the book's examples.

So What Is JSP All About?

If you meet the requirements mentioned, you should already have a pretty good idea

what the answer to this question is. JSP is all about doing highly object-oriented Web sites

that can leverage all the best practices of modern software engineering. These practices

include things such as SQL databases and UML-based design. This isn't to say that JSP is a

cure-all and that using it will automatically make your Web site a paragon of engineering

art. It's just as possible to design bad Web sites in JSP as with any other technology. That's

why, as you go through the text, you will see how to incorporate the best practices and how

to avoid the pitfalls of convenience when projects get stressful. JSP itself is an evolutionary

step along the path that started with the first static Web servers, moved through

CGI-enabled servers, and finally the first generation of script-enabled servers. JSP is less a

Web server with a Java component than it is a Java engine that understands the Web.

JSP grew out of Java servlets. Servlets allow the developer to handle the incoming

Web requests using a Java program that has access to all the normal information that a

34

石家庄铁道大学毕业设计

Common Gateway Interface (CGI) program would. In addition, the servlet has access to

session-persistent objects. These are Java objects that are associated with a specific user

session and can be used to store state between requests. Servlet programming was a major

step forward in allowing developers to write well-structured modular Web applications

using an object-oriented language. It also solved the problem of state persistence, allowing

more information to reside on the server during a transaction and less to have to pass back

and forth between the user and the server. Servlets still suffered from one major problem.

Because they eventually need to spit out HTML, the HTML coding had to be embedded in

the servlet code. This led to code fragments like the one shown here:

n("nnThank you for </p><p style="text-indent: 2em;";>Registeringn");

n("

ALIGN="LEFT”>");

This kind of embedding gets very old very fast when you have to code a lot of pages.

In addition, having to escape all of the quotation marks can lead to a lot of confusing and

hard-to-find errors if you leave out a backslash. Eventually, a still-better idea emerged.

Suppose that you could combine the best of static HTML pages and with the interactive

capabilities of servlets. The result was JavaServer Pages (on the Microsoft side, the result

was Active Server Pages). As Figure I.1 shows, JSP is a complicated beast. In the next

chapter, you'll walk through this flow in detail, but for the moment, here are the major

steps:

1. A request comes in from a browser using the normal HTTP request format.

2. The Web server hands off the request to JSP. JSP looks at the filename and finds the

appropriate JSP file.

3. The .jsp file is converted into a .java file, containing Java code that will create a

class whose name is derived from the .jsp filename.

4. JSP then compiles the .java file using javac to produce a .class file. Note that the

two previous steps are skipped if a .class file already exists and is newer than the .jsp file.

5. An instance of the newly created class is instantiated and sent the _jspService

message.

6. The new instance looks to see if there is already an instance of the object

called user existing in the session object space for the currently connected user. If not, one

is instantiated.

35

SRC="" WIDTH=200 HEIGHT=100

石家庄铁道大学毕业设计

7. As part of servicing , the user instance is called with the getUserName()

method.

8. If the JSP processing requires access to information in a database, it uses JDBC to

make the connection and handle the SQL requests.

As you can see, a tremendous amount of power is available in the JSP world.

Developers are free to write Web pages that look mostly like HTML, except where callouts

to Java are required. But, at the same time, they are free to develop fully fleshed-out

object-oriented applications using all the features that Java can bring to bear. They also get

all the benefits of servlets, including session persistence.

Why Do We Need Databases?

Well, one reason is so that Larry Ellison of Oracle can afford to keep himself on

Prozac when he thinks about Bill Gates. A more serious answer is the same reason that

drove man to first press a stick against a piece of wet mud: because it's good to write things

down. Web servers are marvelous creatures, but they're a bit like idiot savants. Ask them to

serve a Web page or run a piece of Java, and they perform like a champ. But start asking

them to remember what they did five minutes ago, and they develop amnesia faster than a

character in a soap opera.

The first and most important reason that you use databases is that there's a lot in an

e-commerce transaction that you need to remember and track:

•A user's name, address, credit card, and other information previously entered on

a registration page

•hat the user might have put into a shopping cart and left from a previous

transaction

•What items are in stock, along with their price, description, and so on

•Orders that need to be fulfilled, orders that have been shipped, and items that

have been backordered .

Now, you could store all this information in a flat file on the server's hard disk, but

there are other important properties that you want to have for this data:

•You want to be able to back out a transaction if part of it fails.

•You want to be able to locate the data somewhere more secure than the Web

server, which could be in a DMZ or outside the firewall altogether.

•You want to be able to access data such as user data or products quickly, even if

there are thousands or millions of them.

36

石家庄铁道大学毕业设计

When you add these items to the shopping list, only a relational database will really

do the job effectively.

MySQL

Many sites don't need the battleship strength (and price tag) of Oracle. MySQL is an

open-source SQL database available for anyone to use, with many (although not all) of the

features of its big brothers, such as Oracle.

MySQL is available for just about any computer that has decent power—it is fairly

lightweight on the processor and easy to install (10 minutes, as opposed to multiple hours

for Oracle).

So, perhaps you are wondering, what's the catch? What are you not getting in MySQL

that makes people turn to Oracle? Well, MySQL is a neat little package, but it is missing

some things that would be nice to have in a perfect world.

A major feature that MySQL does not offer is database consistency checking. You can

use foreign key tags in your schema, but MySQL cheerfully ignores them. A lot of DB As I

know would consider this a very bad thing.

A foreign key constraint prevents you from creating inconsistent data. For example,

let's suppose that you had a scheme that looked like this:

CREATE TABLE USER (

USERID INTEGER,

FIRST_NAME VARCHAR(80),

LAST_NAME VARCHAR(80));

CREATE TABLE PURCHASE (

USERID FOREIGN KEY USER(USERID),

ITEM INTEGER,

QUANTITY INTEGER);

In a database such as Oracle's, if you created an entry in the PURCHASE table with a

user ID of 3, there would have to already be a user ID of 3 in the USER table or an error

would occur. Similarly, you couldn't delete user 3 from USER if it was referenced in

MySQL folks make a pretty impassioned argument in their

documentation that depending on foreign keys for data integrity is a bad idea anyway, but

convincing your DBA of this philosophy is likely to degrade into a religious debate.

In addition, some other features are missing, such as subselects and select into. But

probably the other major piece that you will miss is the rollback/commit functionality.

37

石家庄铁道大学毕业设计

MySQL does implement rollback and commit for certain types of tables, but not all of

them. Again, the MySQL folks offer their own spin on why this is okay, but being able to

roll back transactions is (in my opinion) important enough to make sure that you have it

available.

Rollback allows you to set a savepoint on the database before starting to do a series of

transactions with it, and be able to either roll back to the original state or commit the

changes at the end. For example, when recording a purchase, you need to record a debit

against the user's account and enter a record into the shipping table so that you'll know

later to ship the item. Let's say that the second part fails. You wouldn't want to charge the

user but not ship the item. Thus, you'd want to roll back to the state before the transaction

began.

So, MySQL isn't a full-blown production database—at least, not yet. It's still good

enough for probably 90% of the e-commerce sites in the world, however. And version 4.0,

which is in alpha as of this writing, addresses a number of these concerns, including

row-level locking and transaction control.

Putting Tomcat and MySQL Together

Combining Tomcat and MySQL provides a powerful, reliable, and free platform that

you can use to learn, develop, and deploy JSP applications. And, best of all, the code that

you develop using this platform will run nicely using iPlanet and Oracle or WebSphere and

SQL Server.

As a learning tool the two together are almost "reference implementations" of their

respective protocols (JSP and SQL). As a result, you won't pick up any nasty

vendor-proprietary bad habits while you're getting up to speed.

In addition, you can enjoy the knowledge that you are supporting the open-source

software movement. Open-source software is code that is made freely available under one

of several public licenses, frequently the GNU General Public License (GPL).

38

石家庄铁道大学毕业设计

FACTS AND FICTION ABOUT THE GPL

The GNU General Public License is probably one of the most misunderstood documents

in existence,The basics break down to this:

1. If you place a piece of software under the GPL, anyone is free to make a copy

of it in either source or executable form and give it to anyone else.

2. If you take a piece of software under the GPL and use it as a part of your

product, you can't charge for that product beyond duplication costs.

Many people interpret this to mean that they can't use GPL software for commercial

purposes. Nothing is farther from the truth. What you can't do is charge specifically for parts

of your product that are partly or largely derived from GPL products.

You are free to use GPL code in the development of a Web site because you're not selling

itself to a third party as a product. (Consulting companies fall into a weird the site

quasi-space, but no one has gone after them for using GPL software to date.)

Why is it good to support this movement? There are two sides to this answer:

one technical and one political. Technically, it's a good thing because open-source

software tends to encourage the development of open standards such as JSP and

JDBC, allowing you to choose your tools from among a larger group rather than being

locked into one vendor's proprietary solution. It's a positive thing politically because it

keeps the large companies honest. WebLogic and iPlanet have to stay competitive and

responsive because they know that there's a free solution out there if they aren't.

And when you use open-source software, you are sending a message that your

overriding concerns are features and reliability, not having a large company to sue if

something goes wrong.

39

石家庄铁道大学毕业设计

A.2 译文

MySQL和JSP的Web应用程序

JSP开发人员构建Web应用程序时遇到需要强大的数据库连接的特殊问题。

MySQL和JSP的Web应用程序解决了构建数据驱动的应用程序JavaServer页面上的发展模式为基础的挑战。 MySQL和JSP的Web应用程序开始一个对JSP数据库开发 - JavaServer页面,JDBC和数据库模式所需的核心技术概述。该书然后概述并提出了互联网商业应用演示,如接收和处理用户输入,设计和实施业务规则,并平衡服务器上的用户负载的概念。通过JDBC(Java数据库连接),开发人员能够与大多数商业数据库如Oracle进行沟通。在MySQL和JSP的Web应用中心提交了一份关于开源工具MySQL和Tomcat的解决方案,使读者一个经济实惠的方式来测试书中的例子的应用程序和试验。

那么JSP是怎么一回事呢?

如果您符合上述要求的,你对这个问题的答案应该已经有一个相当不错的理解。

JSP是所有关于做高度面向对象的网站,可以利用所有的现代软件工程最佳实践。这些做法包括诸如SQL数据库和基于UML设计的东西。这并不是说JSP是万能的而且使用它会自动将您的网站上的工程艺术的典范。这只是尽可能地用其他任何技术用JSP设计不良网站。这就是为什么,当你详细检查文本的时候,你会看到如何合并最佳方法以及项目得到的压力时候如何避免方便的陷阱。JSP它本身就是从第一个静态Web服务器开始的一个沿路径循序渐进的步骤,通过CGI移动功能的服务器,最后脚本功能的服务器的第一代。 JSP是一个比Java引擎能够熟悉网页的的少了一个Java组件的Web服务器。

JSP是由Java servlet发展演变而来的。servlet允许开发人员处理传入使用Java程序能够访问的所有正常的信息,一个共同的网关接口(CGI)程序将Web请求。此外,该servlet可以访问会话持久对象。这是Java的都与一个特定的用户会话,可用于存储请求之间的状态对象。 Servlet编程是一个允许开发人员编写结构良好的模块化的Web应用程序使用面向对象语言的重要一步。它还解决了状态持久性的问题,用户和应用程序执行的一个动作或一系列动作期间让更多的信息驻留在服务器上而且较少的反复在用户和服务器之间传递。 Servlet还遭受一大问题。因为他们最终需要输出HTML中,HTML编码必须被嵌入在servlet代码中。导致如下所示的一段代码片段:

n("nnThank you for </p><p style="text-indent: 2em;";>Registeringn");

40

本文标签: 地图知识数据库