基于java的arcgis server开发

2019-08-30 22:53

1

基于java的arcgis server开发

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 航线查询完全例子 64

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 84

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中使用的标签,

1

原因之二: 事件容易捆绑到服务器端代码。

JSF提供了多个事件驱动的GUI控件, 比如最最常见的command button。这些command button会产生事件,我们有机会对事件进行编程;我在以前的讲座中曾经讲过,ArcGIS Server的MapControl和command button是兄弟,他们都继承自javax.faces.component.UICommand;是不是感觉很奇妙啊?继承自UICommand的原因是要利用UICommand的很多事件,对鼠标在Map Control上的动作,比如放大,缩小,需要产生事件,这些事件提交到相应的监听器,监听器会对事件进行处理。有关于MapControl的问题先提这些,在后面的讲座中我会详细解释。

举一个简单的例子吧,一个最简单不过的fullextent工具,如果我自己来写,可以写成这样:

这个按钮,用来缩放到全图,它的监听器是绑定到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映射:

Faces Servlet

javax.faces.webapp.FacesServlet 1

Faces Servlet *.jsf

2

这是Java程序员最熟悉不过的Servlet配置了,该Servlet映射是什么意思呢?将所有对后缀名为jsf的请求,都交由javax.faces.webapp.FacesServlet来处理。哦,另外插一句,JSF的标准是公开的,如果你觉得这个FacesServlet不好,你大可以自己写一个JSF处理Servlet。将所有对jsf的请求自己来处理。事实上,已经有人这么做了,这就是Myfaces,可以参考Apache的网站。

言归正转,如何将JSF的应用集成到已经有的应用程序中呢,您一定已经想到了。事实上事情很简单,在访问某个JSF页面的时候,映射到某个目录即可。这个目录在web.xml进行了设置,比如下面的配置就可以把所有的对faces的请求,让Face Servlet来处理:

Faces Servlet /faces/*

所以,如果你在根目录了放了一个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的包,名为

3


基于java的arcgis server开发.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:混凝土收缩徐变预测

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: