您的当前位置:首页正文

ADF入门知识

2022-01-17 来源:爱站旅游
导读ADF入门知识
 ADF入门知识

创建Web地图应用工程

1. 创建一个新的ArcGIS Server工程. 从Eclipse主菜单选择File>New>Project,导航到ESRI Templates>Server,选择ArcGIS Server Project. 点击Next.

2. 输入AgsSimple作为工程名,从target runtime选择一个Web容器.

3. 输入正确的GIS server服务器名,用户名,密码和域. 点击Connect按钮就可以看到server objects出现在左下列表中。点击选择前面创建的usa服务。点击Finish就生成了一个地图Web应用。

Eclipse IDE利用模版为我们生成了一个相对复杂的地图Web应用。对于这个例子,我们并不需要太复杂的功能,所以只要两个文件:WEB-INF目录下的faces-config.xml和Web应用根目录下的map.jsp。faces-config.xml文件是用来连接Web ADF框架框架的业务对象,暴露这些对象给视图/Web层,为应用指定适当的GIS servers,以及提供鉴权信息. Map.jsp包含用于渲染地图应用的JSP标签, 如地图、目录(TOC)、以及地图工具. 而用于创建这些视图的数据又反过来绑定在faces-config.xml指定的数据源中。

Web控件和Managed-bean

在Web ADF应用中使用了好几种Web控件,有些是可见的如map和tools Web控件,有些不可见比如context control。在使用这些控件之前必须在Web ADF应用中配置好。Web控件配置涉及几个文件:

•context-attributes.xml

•ags-functionalities.xml

•face-config.xml

context-attributes.xml: 在context-attributes.xml中, 创建了一个名为map\" 的 managed-bean,它是你在同一个应用中看到的地图Web控件的逻辑表示。这个managed-bean创建后,你还需要为它设置一些属性。比如你可以设置一个地图managed-bean的\"imageFormat\" 属性为 \"PNG\"。

context-attributes.xml:

map

com.esri.adf.web.data.WebMap

none

imageFormat

PNG

这个简单的应用只有一个map控件,所以只有一个map控件的managed-bean需要创建。如果你需要加像\"Toc\" 和 \"overview\" 的控件,你还要创建这些anaged-beans于context-attributes.xml中。

ags-functionalities.xml: 在ags-functionalities.xml中,创建了ArcGIS Server的不同功能的managed-beans:

agsMap: 代表map控件的地图功能的managed-bean

agsToc: 代表toc控件的toc功能的managed-bean

agsOverview: 代表overview控件的overview功能的managed-bean

ags-functionalities.xml:

agsMap

com.esri.adf.web.ags.data.AGSMapFunctionalitynaged-bean-class>

none

agsToc

com.esri.adf.web.ags.data.AGSTocFunctionality

none

agsOverview

com.esri.adf.web.ags.data.AGSOverviewFunctionality

none

一旦一个functionality managed-bean创建并添加到resource managed-bean的属性,该就可以在Web ADF应用中使用了。在本例子中,只有添加了map functionality作为map resource的属性。更多的functionalitie,像query, geocode, 和history可以创建并添加到map resource中。

faces-config.xml: 在faces-config.xml中,定义了四个managed bean: \"esriWebApplication\

\"ags1\" 代表你在Web应用中欲发布的GIS数据源。在这个例子中就是ArcGIS Server。定义在ags-functionalities.xml的functionality添加到map resource的属性列表中。

\"esriWebApplication\" 在ADF web应用中总被设置成application级别的managed-bean。

\"esriWebSession\" 该managed-bean持有\"esriWebApplication\"作为属性。

\"mapContext\" 该managed-bean是\"context\" 控件的逻辑代表并且持有\"esriWebSession\" 和\"map\" 作为它的属性.

对任何Web ADF应用,后三个managed-bean是必要的,特别是 \"mapContext\",它像hub一样连接和协调其他ADF组件。这也是把一个\"map\" 作为它的属性和\"ags1\" 作为它的resource。

faces-config.xml:

esriWebApplication

com.esri.adf.web.data.WebApplication

application

esriWebSession

com.esri.adf.web.data.WebSession

session

webApplication

#{esriWebApplication}

mapContext

com.esri.adf.web.data.WebContext

session

webSession

#{esriWebSession}

attributes

map

#{map}

resources

ags1

#{ags1}

ags1

com.esri.adf.web.ags.data.AGSMapResource

none

user

#{agsUser1}

serverObjectName

usa

hosts

YourServer

functionalities

map

#{agsMap}

overview

#{agsOverview}

一旦这些managed-bean在context-attribute.xml,ags-functionalities.xml 和faces-config.xml适当配置好了,你可以容易地在ADF Web应用的JSP页面中以JSP标签方式添加Web控件。

编写JSP页面

本例子只有一个页面map.jsp。 该页面相对简单:它只显示一张地图,允许用户放大、缩小、放大到全部。

命令和工具

标签为应用的工具和命令提供容器。工具栏只在JSP页面指定,faces-config.xml中没有工具栏的声明。你必须用控件的ID关联工具栏和地图,你可以可选地设置当前工具。

命令是一个触发服务端动作而不需要进一步地客户端交互地JSP页面元素。命令的一个例子是\"放大到全部\" 按钮。用户一点击该按钮,服务端就执行一个方法。工具在执行一个服务端方法前需要进一步的客户端交互。工具的一个例子是\"框选放大\"。用户一点击按钮,还要在地图上拖拽一个方框表示欲放大的区域,然后服务端的方法才执行。地图和工具的交互是工具栏比促指定它的关联地图的原因。

工具栏的前两个元素是放大和缩小。这两个标签有两个重要属性:clientAction和serverAction。clientAction属性指定了哪个javascript 函数和工具关联,serverAction属性指定了服务端哪个类被调用当客户端动作结束.。对于第一个工具。当用户点击放大放大按钮,浏览器执行一个叫MapDragRectangle的javascript函数。用户在地图Map0上画一个方框后,表单提交到服务器,服务器调用ZoomInToolAction类。 这个类的执行方法会被调用,javascript的输出将作为该方法的MapEvent参数。

下一个标签是命令标签,用于纯服务端处理。本例子使用一个ZoomFullExtentListener使地图放大到全部。命令标签是JSF命令标签的扩展。当用户点击命令的按钮后,服务端调用ZoomFullExtentListener类的processAction方法。

最后一个 Web ADF 标签是地图标签,该标签在页面上渲染一张地图,它的ID用来在页面里标识该地图,比如和工具栏的关联。你可以通过标签属性控制一些地图的属性,比如尺寸,工具拉框颜色,边框以及使用哪个XSL。

小结

ADF的managed-bean之间的关系图:

mapContext(WebContext)

|

+esriWebSession(WebSession)

| |

| +esriWebApplication(WebApplication)

|

+attributes

| |

| +map(WebMap)

| +toc(WebToc)

| +...

|

+resources

|

+ags1(AGSMapResource)

|

+agsUser1

|

+serverObjectName

|

+hosts

|

+functionalities

|

+agsMap(AGSMapFunctionality)

+agsToc(AGSTocFunctionality)

+agsOverview(AGSOverviewFunctionality)

+...

创建地图Web应用的步骤:

1. 声明ArcGIS Server的MapServer object作为GISResource

2. 关联AGSMapFunctionality和GISResource

3. 声明WebMap来使用functionality

4. 关联WebMap和context,确保它参与Web ADF框架

5. 在jsp页面写适当的jsp标签

因篇幅问题不能全部显示,请点此查看更多更全内容