ImageVerifierCode 换一换
格式:DOCX , 页数:103 ,大小:409.28KB ,
资源ID:3224001      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3224001.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ArcGIS+Server+Java讲座.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

ArcGIS+Server+Java讲座.docx

1、ArcGIS+Server+Java讲座ArcGIS Server 9.2 for Java 讲座1、前言-为什么我们选择JSF,而不是其它framework 12、ArcGIS Server Java开发 JSF基础 23、ArcGIS Server Java ADF开发的JSF知识介绍 54、ArcGIS Server 开发初步 - 自定义工具 75、使用图片和TrueType字体进行标注 106、Server Java讲座-扩展Tasks框架 137、Server Java 开发实战-自定义command 198、 ArcGIS Server Java 讲座-ADF 体系结构 第一部分

2、219、ArcGIS Server JAVA讲座-实现后台JSF Bean和前台Javascript的联动 2410、ArcGIS Server JAVA讲座 -AJAX基础 2511、ArcGIS Server JAVA开发讲座- ADF中的Ajax函数 2712、ArcGIS Server Java讲座-如何在用JSF在服务器端处理Ajax请求 2913、ArcGIS Server Java讲座-利用Ajax得到当前地图的比例尺(服务器端) 3214、ArcGIS Server Java讲座-用Ajax得到地图比例尺(客户端代码) 3315、ArcGIS Server JAVA 讲座 自定

3、义Functionality 3516、ArcGIS Server Java讲座-用自定义functionality实现用户权限控制 3717、Server Java讲座-扩展Tasks框架 4218、ArcGIS Server Java讲座-自定义Tools开发 4819、ArcGIS Server Java讲座空间查询和高亮显示的实现 5220、Server Java 自定义开发Network Analysis 5421、ArcGIS Server开发控制图层是否可见 5922、航线查询问题Server Java的实现方法 5923、ArcGis 航线查询完全例子 6424、ArcGis

4、Server 中 如何在Task中实现 下拉列表和 checkbox 和 radiobutton.(完整例子) 7325、ArcGIS Server开发标注 7426、ArcGIS Server Java开发-Born for SOA系列 前言 7527、ArcGIS Server Java开发-Born for SOA系列 Web Service基础 7528、ArcGIS Server Java讲座:Born For SOA-Server对于SOAP的支持 8129、Server Java开发-Born for SOA系列 通过代理类访问ArcGIS Server Web Service

5、841、前言-为什么我们选择JSF,而不是其它framework 在正式开讲之前,我们来探讨一下为什么要使用JSF来实现SERVER ADF,这也是很多开发商跟我讨论时经常会问到的问题。 世界上有300种Java的framework,这个数字是我几个月前听到的,现在可能已经不止这个数了。我曾经用过的framework包括Structs,Hibernate,Spring。这些framework不但能加速开发,而且会带来全新的程序设计理念。我当时的感觉是:原来程序还可以这样写! 当然,这些framework都是开源免费,你不用担心自己的良心受到谴责,也不用担心比尔盖茨半夜敲门收钱。 在这300多种

6、framework中,ESRI为什么选择了JSF?各个framework有各个framework的好处。JSF最大的优点就是:像 Swing 和 AWT 一样,JSF 是一个可以提供一组标准的、可重用的 GUI 组件的开发框架。原因之一: 行为与表示的完全分离。 行为和表现不分离的一个典型例子是普通的JSP 技术,这一技术很好,因为很容易在 HTML(和类 HTML)页面中混合 Java 代码。这样我们就可以使用强大的Java API的功能。当然,很明显的坏处是行为表现黏合在一起。而且代码不容易重用。这让我想起刚使用JSP技术时,在文本编辑器下写JSP页面,读写数据库,并且在同一个页面上显示出

7、来的痛苦回忆。 Model1架构的出现使开发人员可以用javabean的方式进行开发,舒服多了。当然,还有更好的。 这就不得不提到著名的MVC结构,(MVC) model-view-controller架构提供了一系列的设计模式,这些模式让你可以轻松地应用于程序地开发,特别是有界面程序的开发。现在又有多少的程序是没有界面的呢? Model包装了商业逻辑,也包含了数据持久的代码,包括存取数据库或者存取文件。Model最好不要跟View有任何关系,它最好不要知道谁将显示结果,是一个Swing界面,还是JSF界面,还是普通的JSP界面。为了做到这一点,事先的规划要花一些时间,但是相信我,这些花的时间

8、带来的价值将超过你的想象。如果设计得当,许多用ArcGIS Engine开发的代码可以轻松在Server中使用,不需要修改任何代码。.net也是一样。 View只用来显示显示逻辑,不能有任何商务逻辑。controller是view和model的桥梁,它和model进行交互,并且把结果显示在Model中。显示页面的选择也由controller进行选择。我会在后面的讲座中详细解释JSF中的Controller的实现。 Structs,Spring都实现了MVC的架构。但是它们都没有像JSF这样,提供一个事件驱动的组件对象模型。大家可以想一想,一个平常在HTML中使用的标签, ,在JSF框架中变成了

9、一个组件,这个组件还可以有事件,而且可以对这个事件可以进行编程。这是多么得激动人心啊! GIS程序需要和用户进行良好地交互,选择一个事件驱动的framework,可以更加容易编程和实现。 原因之二: 事件容易捆绑到服务器端代码。JSF提供了多个事件驱动的GUI控件, 比如最最常见的command button。这些command button会产生事件,我们有机会对事件进行编程;我在以前的讲座中曾经讲过,ArcGIS Server的MapControl和command button是兄弟,他们都继承自ponent.UICommand;是不是感觉很奇妙啊?继承自UICommand的原因是要利用U

10、ICommand的很多事件,对鼠标在Map Control上的动作,比如放大,缩小,需要产生事件,这些事件提交到相应的监听器,监听器会对事件进行处理。有关于MapControl的问题先提这些,在后面的讲座中我会详细解释。 举一个简单的例子吧,一个最简单不过的fullextent工具,如果我自己来写,可以写成这样:这个按钮,用来缩放到全图,它的监听器是绑定到getMapBean的getFullMap方法,在该方法里面,我会将地图的大小缩放到全图范围。代码我会稍后贴上来。这就是JSF的事件捆绑到服务器代码的功能。普通的一个button,点击事件可以映射到后台Bean的某一个方法,在后台方法里面执行

11、商业逻辑,进行数据存取。这个概念跟普通的Swing程序的事件和监听器机制十分类似,Java程序员们看了肯定倍感亲切。注意,刚才这个button没有利用任何ADF的类,在我们的ADF中,所有要建大厦的材料都已经给您准备好,fullExtent功能只需要三行代码即可实现。事件容易捆绑到服务器端代码,这是ESRI选择JSF作为我们ADF底层的另外一个重要的原因。2、ArcGIS Server Java开发 JSF基础 有很多开发人员问我,如果我已经有了一个JSP的Application,为了使用JSF,为了使用我们新版的ArcGIS Server的Java ADF,我需要重新修改写我的程序以让它们适

12、应整个JSF框架么?这是一个很有意思的问题,我可以想象出大家头皮发麻,左右为难的感觉,这也引出了今天的话题,Servlet容器是如何对JSF的程序进行处理的呢? 随便找一个JSF的Application,可以是我们的ArcGIS Server的Sample,也可以是任何您从网上下载的JSF例子,打开web.xml文件,你就可以看到该文件里面有如下的servlet映射: Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.jsf 这是Java程序员最熟悉不过的Servlet配置了,该Servlet映射是什么意思呢?将所有

13、对后缀名为jsf的请求,都交由javax.faces.webapp.FacesServlet来处理。哦,另外插一句,JSF的标准是公开的,如果你觉得这个FacesServlet不好,你大可以自己写一个JSF处理Servlet。将所有对jsf的请求自己来处理。事实上,已经有人这么做了,这就是Myfaces,可以参考Apache的网站。言归正转,如何将JSF的应用集成到已经有的应用程序中呢,您一定已经想到了。事实上事情很简单,在访问某个JSF页面的时候,映射到某个目录即可。这个目录在web.xml进行了设置,比如下面的配置就可以把所有的对faces的请求,让Face Servlet来处理: Fac

14、es 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页面互相切换

15、,我们在后面的讲座中会讲到。 所以如果你已经存在的一个项目,想上我们的ArcGIS Server,利用其基于JSF的ADF进行开发,也是完全可以的。当然,新的应用最好用JSF框架开发,开始时可能需要一点时间去学习,对于你后面会用到的强大的JSF的功能,这些投资是完全值得的。 欢迎大家进入美妙的JSF的世界。 了解了Servlet是如何处理你的JSF请求的,那么接下去我们来看看,让JSF程序跑起来需要什么必要条件,一个Servlet容器是必需的,这个一般取决于公司给我们配什么,或者客户要求什么。一般免费的好选择是Tomcat,价格便宜量又足,我们大家都用它。当然如果项目大,经费充足,IBM的J2

16、EE容器Websphere和Bea公司的 Weblogic也是一个好选择。选用大公司J2EE容器有一个好处,即使三更或者五更出了问题,你照样可以拍着桌子让他们的工程师过来帮你解决问题,如果你用我们ESRI的软件,你也可以这样;而用免费的软件三更出了问题只有我们自己出马了,当然,google和XX在这个时候看在点击率的份上,还是可以拉我们一把的。除了一个好的容器,还需要一个JSF的实现,用SUN的Reference Implementation总是不会错的,人家是标准的制定者嘛,名字也起做“参考实现”,写来让你参考的。也可以选择功能更加强大的Myfaces。ESRI的ArcGIS Server

17、ADF遵循标准的JSF,所以ADF可以跑在Sun 的JSF实现,或者Myfaces上。我们这次所有的教程都是基于sun的标准的JSF实现。还有其它的JSF实现,大家可以根据自己的爱好,择优选择之。如果你觉得都不好用,大可以参考标准自己写一个实现,除了你的老板(要投入更多的开发经费)和你的team (要干更多的活) ,是没有人有意见的。如果您像我一样选择了SUN的参考实现,那么去SUN的网站上去下载一个JSF的开发包吧,如果不想下载,随便找一个Server Java ADF的例子,在WEB-INF/lib目录里面有JSF的包,名为jsf-api.jar和jsf-impl.jar的两个包就是;注意

18、那个JSP的标准标签库jstl.jar,把它跟jsf的包放在一起,你不一定用标准标签库,但是JSF用到了它。我把JSF的doc放在这里给大家下载,因为这个东西实在不好找,有人知道好的下载URL,可以在这里贴一个。把这些包放在一个web application的lib目录里面有,你的程序你可以使用JSF的强大功能了。让我也来俗气一下,写一个简单的hello world作为今天的结束吧。注意在你的web application里面的web.xml配置文件添加了Face Servlet的声明和URI映射。 欢迎来到ArcGIS Server ADF 世界 保存后访问Http:/servername:

19、port/faces/hello.jsp即可,如果页面能够出来,那么恭喜您,您已经迈入了JSF wonderland的大门。3、ArcGIS Server Java ADF开发的JSF知识介绍ArcGIS Server 的Java ADF 开发使用到了JSF的知识,下面结合ArcGIS Server的开发,介绍一下JSF的知识Struts和JSF/Tapestry都属于表现层框架,这两种分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架。首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使

20、用了Command模式,每个继承Action的子类都必须实现一个方法execute。在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为application event,application event和component event相比是一种粗粒度的事件。struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化

21、到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。而这种情况使用JSF就可以方便实现,#login.userId表示从名为login的JavaBean的getUserId获得的结果,这个功能使用struts也可以实现,name=login property=userId 关键是第二行,这里表示如果userId的值改变并且确定提交后,将触发调用类UserLoginChanged的processValueChanged(.)方法。JSF可以为组件提供两种事件:Value Changed和 Action.相当于s

22、truts中表单提交Action机制,它的JSF写法如下:从代码可以看出,这两种事件是通过Listerner这样观察者模式贴在具体组件字段上的,而Struts此类事件是原始的一种表单提交Submit触发机制。如果说前者比较语言化(编程语言习惯做法类似Swing编程);后者是属于WEB化,因为它是来自Html表单。基本配置Struts和JSF都是一种框架,JSF必须需要两种包JSF核心包、JSTL包(标签库),此外,JSF还将使用到Apache项目的一些commons包,这些Apache包只要部署在你的服务器中既可。JSF包下载地址: Implementation。JSTL包下载在http:/j

23、akarta.apache.org/site/downloads/downloads_taglibs-standard.cgi所以,从JSF的驱动包组成看,其开源基因也占据很大的比重,JSF是一个SUN伙伴们工业标准和开源之间的一个混血儿。上述两个地址下载的jar合并在一起就是JSF所需要的全部驱动包了。在ArcGIS Server的项目下的lib目录下有相关的库文件如下:commons-beanutils.jar commons-collections.jar commons-digester.jar commons-lang-2.0.jar commons-logging.jar jsf-

24、api.jar jsf-impl.jar jstl.jar standard.jar与Struts的驱动包一样,这些驱动包必须位于Web项目的WEB-INF/lib,和Struts一样的是也必须在web.xml中有如下配置:Faces Servletjavax.faces.webapp.FacesServlet1 Faces Servlet*.faces 这里和Struts的web.xml配置相似,简直一模一样。正如Struts的struts-config.xml一样,JSF也有类似的faces-config.xml配置文件:/index.jsplogin/welcome.jsp usercom.corejsf.UserBean session 在Struts-config.xml中有ActionForm Action以及Jsp之间的流程关系,在faces-config.xml中,也有这样的流程,我们具体解释一下Navigation:举例:如果在mapviewer.jsp中有一个事件:action的值必须匹配form-outcome值,上述Navigation配置表示:如果在index.jsp中有一个login事件,那么事件触发后下一个页面将是welcome.jspJSF有一个独立的事件发生和页面导航的流程安排,这个思路比struts要非常清晰。UI界面JSF和Struts一样,

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2