没有合适的资源?快使用搜索试试~ 我知道了~
基于java的arcgis开发
5星 · 超过95%的资源 需积分: 50 228 下载量 55 浏览量
2015-11-06
11:17:03
上传
评论 10
收藏 762KB PDF 举报
温馨提示
试读
88页
基于java的arcgis_server开发,带有目录,附有图文,讲解详细生动。
资源推荐
资源详情
资源评论
1
基于 java 的 arcgis server 开发
1
1、前言------为什么我们选择 JSF,而不是其它 framework 1
2、ArcGIS Server Java 开发 JSF 基础 2
3、ArcGIS Server Java ADF 开发的 JSF 知识介绍 5
4、ArcGIS Server 开发初步 -- 自定义工具 7
5、使用图片和 TrueType 字体进行标注 9
6、Server Java 讲座-----扩展 Tasks 框架 13
7、Server Java 开发实战---自定义 command 19
8、 ArcGIS Server Java 讲座--ADF 体系结构 第一部分 21
9、ArcGIS Server JAVA 讲座--实现后台 JSF Bean 和前台 Javascript 的联动 24
10、ArcGIS Server JAVA 讲座 --AJAX 基础 25
11、ArcGIS Server JAVA 开发讲座--- ADF 中的 Ajax 函数 27
12、ArcGIS Server Java 讲座--如何在用 JSF 在服务器端处理 Ajax 请求 29
13、ArcGIS Server Java 讲座----利用 Ajax 得到当前地图的比例尺(服务器端) 32
14、ArcGIS Server Java 讲座--用 Ajax 得到地图比例尺(客户端代码) 33
15、ArcGIS Server JAVA 讲座 自定义 Functionality 35
16、ArcGIS Server Java 讲座---用自定义 functionality 实现用户权限控制 37
17、Server Java 讲座-----扩展 Tasks 框架 42
18、ArcGIS Server Java 讲座--自定义 Tools 开发 48
19、ArcGIS Server Java 讲座-空间查询和高亮显示的实现 52
20、Server Java 自定义开发-Network Analysis 54
21、ArcGIS Server 开发——控制图层是否可见 59
22、航线查询问题-Server Java 的实现方法 59
23、ArcGis 航线查询完全例子 63
24、ArcGis Server 中 如何在 Task 中实现 下拉列表和 checkbox 和 radiobutton.(完整例子) 73
25、ArcGIS Server 开发——标注 74
26、ArcGIS Server Java 开发--Born for SOA 系列 前言 75
27、ArcGIS Server Java 开发--Born for SOA 系列 Web Service 基础 75
28、ArcGIS Server Java 讲座:Born For SOA--Server 对于 SOAP 的支持 81
29、Server Java 开发--Born for SOA 系列 通过代理类访问 ArcGIS Server Web Service 83
1
1
、前言
------
为什么我们选择
JSF
,而不是其它
framework
在正式开讲之前,我们来探讨一下为什么要使用 JSF 来实现 SERVER ADF,这也是很多开发商
跟我讨论时经常会问到的问题。
世界上有 300 种 Java 的 framework,这个数字是我几个月前听到的,现在可能已经不止这个数
了。我曾经用过的 framework 包括 Structs,Hibernate,Spring。这些 framework 不但能加速开发,而
且会带来全新的程序设计理念。我当时的感觉是:原来程序还可以这样写! 当然,这些 framework
都是开源免费,你不用担心自己的良心受到谴责,也不用担心比尔盖茨半夜敲门收钱。
在这 300 多种 framework 中,ESRI 为什么选择了 JSF?各个 framework 有各个 framework 的好
处。JSF 最大的优点就是:像 Swing 和 AWT 一样,JSF 是一个可以提供一组标准的、可重用的 GUI
组件的开发框架。
原因之一: 行为与表示的完全分离。
行为和表现不分离的一个典型例子是普通的 JSP 技术,这一技术很好,因为很容易在 HTML(和
类 HTML)页面中混合 Java 代码。这样我们就可以使用强大的 Java API 的功能。当然,很明显的
坏处是行为表现黏合在一起。而且代码不容易重用。这让我想起刚使用 JSP 技术时,在文本编辑器
下写 JSP 页面,读写数据库,并且在同一个页面上显示出来的痛苦回忆。
Model1 架构的出现使开发人员可以用 javabean 的方式进行开发,舒服多了。当然,还有更好的。
这就不得不提到著名的 MVC 结构,(MVC) model-view-controller 架构提供了一系列的设计模式,
这些模式让你可以轻松地应用于程序地开发,特别是有界面程序的开发。现在又有多少的程序是没
有界面的呢?
Model 包装了商业逻辑,也包含了数据持久的代码,包括存取数据库或者存取文件。Model 最
好不要跟 View 有任何关系,它最好不要知道谁将显示结果,是一个 Swing 界面,还是 JSF 界面,还
是普通的 JSP 界面。为了做到这一点,事先的规划要花一些时间,但是相信我,这些花的时间带来
的价值将超过你的想象。如果设计得当,许多用 ArcGIS Engine 开发的代码可以轻松在 Server 中使
用,不需要修改任何代码。.net 也是一样。
View 只用来显示显示逻辑,不能有任何商务逻辑。controller 是 view 和 model 的桥梁,它和 model
进行交互,并且把结果显示在 Model 中。显示页面的选择也由 controller 进行选择。我会在后面的讲
座中详细解释 JSF 中的 Controller 的实现。
Structs,Spring 都实现了 MVC 的架构。但是它们都没有像 JSF 这样,提供一个事件驱动的组
件对象模型。大家可以想一想,一个平常在 HTML 中使用的标签, <input type="text" name="q">,
在 JSF 框架中变成了一个组件,这个组件还可以有事件,而且可以对这个事件可以进行编程。这是
多么得激动人心啊! GIS 程序需要和用户进行良好地交互,选择一个事件驱动的 framework,可以
更加容易编程和实现。
2
原因之二: 事件容易捆绑到服务器端代码。
JSF 提供了多个事件驱动的 GUI 控件, 比如最最常见的 command button。这些 command button 会产
生事件,我们有机会对事件进行编程;我在以前的讲座中曾经讲过,ArcGIS Server 的 MapControl
和 command button 是兄弟,他们都继承自 javax.faces.component.UICommand;是不是感觉很奇妙啊?
继承自 UICommand 的原因是要利用 UICommand 的很多事件,对鼠标在 Map Control 上的动作,比
如放大,缩小,需要产生事件,这些事件提交到相应的监听器,监听器会对事件进行处理。有关于
MapControl 的问题先提这些,在后面的讲座中我会详细解释。
举一个简单的例子吧,一个最简单不过的 fullextent 工具,如果我自己来写,可以写成这样:
<h:commandButton id="redisplayCommand" type="submit" value="Full Extent"
actionListener="#{getMapBean.getFullMap}" />
这个按钮,用来缩放到全图,它的监听器是绑定到 getMapBean 的 getFullMap 方法,在该方法里面,
我会将地图的大小缩放到全图范围。代码我会稍后贴上来。这就是 JSF 的事件捆绑到服务器代码的
功能。普通的一个 button,点击事件可以映射到后台 Bean 的某一个方法,在后台方法里面执行商业
逻辑,进行数据存取。这个概念跟普通的 Swing 程序的事件和监听器机制十分类似,Java 程序员们
看了肯定倍感亲切。注意,刚才这个 button 没有利用任何 ADF 的类,在我们的 ADF 中,所有要建
大厦的材料都已经给您准备好,fullExtent 功能只需要三行代码即可实现。
事件容易捆绑到服务器端代码,这是 ESRI 选择 JSF 作为我们 ADF 底层的另外一个重要的原因。
2
、
ArcGIS Server Java
开发
JSF
基础
有很多开发人员问我,如果我已经有了一个 JSP 的 Application,为了使用 JSF,为了使用我
们新版的 ArcGIS Server 的 Java ADF,我需要重新修改写我的程序以让它们适应整个 JSF 框架么?这
是一个很有意思的问题,我可以想象出大家头皮发麻,左右为难的感觉,这也引出了今天的话题,
Servlet 容器是如何对 JSF 的程序进行处理的呢?
随便找一个 JSF 的 Application,可以是我们的 ArcGIS Server 的 Sample,也可以是任何您从
网上下载的 JSF 例子,打开 web.xml 文件,你就可以看到该文件里面有如下的 servlet 映射:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
3
</servlet-mapping>
这是 Java 程序员最熟悉不过的 Servlet 配置了,该 Servlet 映射是什么意思呢?将所有对后缀名
为 jsf 的请求,都交由 javax.faces.webapp.FacesServlet 来处理。哦,另外插一句,JSF 的标准是公开
的,如果你觉得这个 FacesServlet 不好,你大可以自己写一个 JSF 处理 Servlet。将所有对 jsf 的请求
自己来处理。事实上,已经有人这么做了,这就是 Myfaces,可以参考 Apache 的网站。
言归正转,如何将 JSF 的应用集成到已经有的应用程序中呢,您一定已经想到了。事实上事情
很简单,在访问某个 JSF 页面的时候,映射到某个目录即可。这个目录在 web.xml 进行了设置,比
如下面的配置就可以把所有的对 faces 的请求,让 Face Servlet 来处理:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
所以,如果你在根目录了放了一个 hello.jsp 页面,这个 jsp 页面使用了 JSF 框架,那么你在
访问这个 jsp 页面时用 http://servername/faces/hello.jsp 就可以了,你的容器会把这样的请求提交 Face
Servlet 来处理,这个时候,就轮到 Face Servlet 来大显身手了,它会忠实地执行你的请求。
JSF 的 Managed Bean 是保存在 session 中的,所以你在 JSF 页面和普通 JSP 之间切换页面的
时候,不会丢失信息,反过来也一样。JSF 自己有自己的 Page Navigation 系统,但是它仍然可以跟
普通的 JSP 页面互相切换,我们在后面的讲座中会讲到。
所以如果你已经存在的一个项目,想上我们的 ArcGIS Server,利用其基于 JSF 的 ADF 进
行开发,也是完全可以的。当然,新的应用最好用 JSF 框架开发,开始时可能需要一点时间去学习,
对于你后面会用到的强大的 JSF 的功能,这些投资是完全值得的。
欢迎大家进入美妙的 JSF 的世界。
了解了 Servlet 是如何处理你的 JSF 请求的,那么接下去我们来看看,让 JSF 程序跑起来需
要什么必要条件,一个 Servlet 容器是必需的,这个一般取决于公司给我们配什么,或者客户要求什
么。一般免费的好选择是 Tomcat,价格便宜量又足,我们大家都用它。当然如果项目大,经费充足,
IBM 的 J2EE 容器 Websphere 和 Bea 公司的 Weblogic 也是一个好选择。选用大公司 J2EE 容器有一
个好处,即使三更或者五更出了问题,你照样可以拍着桌子让他们的工程师过来帮你解决问题,如
果你用我们 ESRI 的软件,你也可以这样;而用免费的软件三更出了问题只有我们自己出马了,当然,
google 和百度在这个时候看在点击率的份上,还是可以拉我们一把的。除了一个好的容器,还需要
一个 JSF 的实现,用 SUN 的 Reference Implementation 总是不会错的,人家是标准的制定者嘛,名字
也起做“参考实现”,写来让你参考的。也可以选择功能更加强大的 Myfaces。ESRI 的 ArcGIS Server
ADF 遵循标准的 JSF,所以 ADF 可以跑在 Sun 的 JSF 实现,或者 Myfaces 上。我们这次所有的教
程都是基于 sun 的标准的 JSF 实现。还有其它的 JSF 实现,大家可以根据自己的爱好,择优选择之。
如果你觉得都不好用,大可以参考标准自己写一个实现,除了你的老板(要投入更多的开发经费)
和你的 team (要干更多的活) ,是没有人有意见的。
如果您像我一样选择了 SUN 的参考实现,那么去 SUN 的网站上去下载一个 JSF 的开发包吧,
如果不想下载,随便找一个 Server Java ADF 的例子,在 WEB-INF/lib 目录里面有 JSF 的包,名为
剩余87页未读,继续阅读
资源评论
- z90927112017-08-02楼主好人 好吧
- u0100538212018-12-13初学,看看先
- 沉默的大灰狼2017-03-16正在学习啊
- hylhaha2018-03-06感谢分享 可以使用。。。。。。。。。 正在学习
没有水勒鱼
- 粉丝: 39
- 资源: 256
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功