1、这层的其他对象,例如webmap和webgeocode,包含他们所代表的control的信息。例如如果你察看webmap的javadoc,有属性关于输出图形的像素,高度和宽度,还有图形显示得很多的属性。也有很多图形操作的方法,例如,centerAt和getCurrentExtent。你可以通过这些方法得到functionality ,并且不用直接调用服务器对象。相似的属性和方法,在这个层的其他对象也具有。这些对象的javadoc可以查看包com.esri.adf.web.data。在这个包里也有model tier2的借口和基类。这些对象,诸如GISResourceMapFunctionali
2、ty,和表现层没有任何关系;而是他们和GIS数据和分析相联系。在这层有两个对于web adf至关重要的两个父对象,GISResource和GISFunctionality。GISResource是web adf将要用来显示和分析的数据来源,GISFunctionality 是对于特定的GISResource用来expose GIS/mapping functionality。例如,web adf有AGSMapResource, 他是GISResource的一个具体实现用来和ArcGIS Server Map Server数据资源协同工作。这个资源将连接服务器,并且被functionalitie
3、s所用,例如AGSMapFunctionality,调用服务器。在应用中,对于每一种不同的数据资源一定有GISResource的子类与之对应。Web adf有以下资源:1、ArcGIS Server using the Server API2、ArcGIS Server using Web services3、ArcIMS Server using the Java Connector4、ArcWeb Services using Web services5、WMS Servers6、ArcGIS Server EJBs对于和web adf框架资源,他必须和context相关联。因为conte
4、xt是其他数据对象的控制对象,他协调从适当的资源中获得信息并且更新controls。GISFunctionality 接口可以被任何为特定的GISResources 提供functionalities 的类实现。它有一些子类,象GeocodeFunctionality 为geocoders,或者TocFunctionality,为创建一个图形列表的内容表。为一种数据资源expose a functionality,必须有一个具体的类。特定的数据资源不支持特定的functionalities。比如,没有为WMS server 的geocode functionality。下面是文章的关键几点:、
5、web adf中有三层:a.The view/controller tier with the Web controlsb.第一次层提供一些业务逻辑并且扮演web层次和纯业务逻辑层的媒介物。c.第二层提供访问gis数据源并且为这些数据源提供功能。、在model tier 1中,控制对象是context,其余的对象controls要成为context的属性才能正确的工作。、在model tier 2中,对于每种数据资源,都要有GISResource的具体实现类。、对于和每种资源协同工作的controls都必须在context中注册。、在model tier 2中,对于每种数据资源的每种funct
6、ionality ,都要有GISFunctionality的具体实现类。、对于每个提供功能的model tiers,你可以使用别切不用和服务器直接交流。With this understanding of JSF and the ArcGIS Web ADF, you can move on to building your first JSF application using either the ArcGIS Server Web ADF Java Platform connecting to ArcGIS Server or the ArcIMS Web ADF Java Platfo
7、rm.通过对jsf 和arcgis web adf 的了解,你可以继续你的第一个jsf 的应用ArcGIS Server Web ADF Java Platform 或者ArcIMS Web ADFJava Platform。Simple ArcGIS Server Web ADF Java Platform Application现在你能够更加理解框架了,你将要建立一个可以让用户放大缩小和全图的一个web应用。这个例子中覆盖了ESRI Web ADF 的基础。这篇文章假设你对JSF 框架和java web应用很熟悉。这个例子应用标题为“ags_simple”,它包括ArcGIS Server
8、 for the Java Platform.。这篇文章假设有一个services 对象叫usa 运行在server 对象上, 这个文件可以在/samples/data/mxds directory 中找到。实际的例子可以使用不同的server 对象,这将有不同的user name,password,domain,和host.运行之后效果如图。在这个例子中只需要检查个文件,faces-config.xml,可以在WEB-INF 文件夹找到;map.jsp可以在web application 的根目录下找到。faces-config.xml 用来连接业务对象(business objects:w
9、eb ADF framework 一部分),将这些对象展现给view/web 层, 给应用选择最适合的GIS servers,并在适当的地方提供授权信息。Map.jsp 包含JSP 标签用来地图应用的表现,比如一张地图,一个内容表(TOC),和地图协同工作的工具集。用来显示的数据在faces-config.xml 中配置。Faces-config.xml 文件Context control当你打开faces-config.xml 文件,第一个看见的managed Bean 是WebContext(context),context是一个model tier 1 组件,context 也扮演mod
10、el tier 1 组件们的管理者。它连接data sources和controls,并且当一个action 需要一个refresh 时候,协调control。如果想使这次协调起作用,所有的model tier 1 组件们必须在context 中注册成为被管理属性。这些属性(象WebQuery)都存储在属性的HashMap 中这个属性的HashMap 也可以加一些你自己的类,如果你想context 管理,象用户名,其生命周期就和context 一致了。在这个文件中每一个model tier 1 都用JSF expression language(EL)语言取了一个名字,用来关联一个在文件后面出
11、现的managed Bean。例如,这个片段 property-nameattributesmap-entriesmap-entrykeymapvalue#map/map-entry/map-entries/managed-property存储遵照key,map,一个叫map 的managed bean因为controls 使用model tier 1 对象来访问和管理数据,所以每一个JSP 页面上的control 一定要有一个合适的model tier 1 对象注册在context 中。这些tier 1 对象在第一次使用应用的时候被加载进内存。因此,如果你让一个在属性列表(attribute
12、s list)中的tier 1 对象,不让其标签添加到页面上,它将永远不会实例化。例如,如果你写了一个单纯的地图应用,但是没有一个geocode tier 1 对象的入口,geocode 对象将永远不会被实例化。Context control 中唯一另外的信息是应用的一列资源(resources)。这将是应用中所要使用的数据的每一个数据源的入口。另外,每一个资源在语法上使用JSF-EL 来关联一个包含合适连接信息的managed bean。这个片段显示出一个managed bean,ags;在这种情况下,是一个ArcGIS erver 连接:resources#ags1声明resources和functionalities每一种和context 相关联的resource 都需要一个managed bean 来处理和特定data source 的交互。在这个例子中:你将只有一个resource,而这个resource 使用ArcGIS Server.下面是一个ArcGIS Server 的例子:managed-beanmanaged-bean-nameags1managed-bean-classcom.esri.adf.web.ags.data.AGSMapResourcemanaged-bean-scopenoneuser/property