基于java的arcgis server开发(2)

2019-08-30 22:53

jsf-api.jar和jsf-impl.jar的两个包就是;注意那个JSP的标准标签库jstl.jar,把它跟jsf的包放在一起,你不一定用标准标签库,但是JSF用到了它。

我把JSF的doc放在这里给大家下载,因为这个东西实在不好找,有人知道好的下载URL,可以在这里贴一个。

把这些包放在一个web application的lib目录里面有,你的程序你可以使用JSF的强大功能了。让我也来俗气一下,写一个简单的hello world作为今天的结束吧。注意在你的web application里面的web.xml配置文件添加了Face Servlet的声明和URI映射。

<%@ taglib uri=\<%@ taglib uri=\ </p><p> 欢迎来到ArcGIS Server ADF 世界

4

保存后访问Http://servername: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来接受浏览器表单提交的事件,这里使用了Command模式,每个继承Action的子类都必须实现一个方法execute。 在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为application event,application event和component event相比是一种粗粒度的事件。

struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。 而这种情况使用JSF就可以方便实现,

#{login.userId}表示从名为login的JavaBean的getUserId获得的结果,这个功能使用struts也可以实现,name=\ 关键是第二行,这里表示如果userId的值改变并且确定提交后,将触发调用类UserLoginChanged的processValueChanged(...)方法。

JSF可以为组件提供两种事件:Value Changed和 Action.相当于struts中表单提交Action机制,它的JSF写法如下:

从代码可以看出,这两种事件是通过Listerner这样观察者模式贴在具体组件字段上的,而Struts此类事件是原始的一种表单提交Submit触发机制。如果说前者比较语言化(编程语言习惯做法类似Swing编程);后者是属于WEB化,因为它是来自Html表单。 基本配置

5

Struts和JSF都是一种框架,JSF必须需要两种包JSF核心包、JSTL包(标签库),此外,JSF还将使用到Apache项目的一些commons包,这些Apache包只要部署在你的服务器中既可。 JSF包下载地址:http://java.sun.com/j2ee/javaserverfaces/download.html选择其中Reference Implementation。

JSTL包下载在http://jakarta.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-api.jar jsf-impl.jar jstl.jar standard.jar

与Struts的驱动包一样,这些驱动包必须位于Web项目的WEB-INF/lib,和Struts一样的是也必须在web.xml中有如下配置:

Faces Servlet

javax.faces.webapp.FacesServlet 1

Faces Servlet *.faces

这里和Struts的web.xml配置相似,简直一模一样。

正如Struts的struts-config.xml一样,JSF也有类似的faces-config.xml配置文件:

/index.jsp

login /welcome.jsp

user

com.corejsf.UserBean session

在Struts-config.xml中有ActionForm Action以及Jsp之间的流程关系,在faces-config.xml中,

6

也有这样的流程,我们具体解释一下Navigation: 举例:如果在mapviewer.jsp中有一个事件:

JSF有一个独立的事件发生和页面导航的流程安排,这个思路比struts要非常清晰。 UI界面

JSF和Struts一样,除了JavaBeans类之外,还有页面表现元素,都是是使用标签完成的,Struts也提供了struts-faces.tld标签库向JSF过渡。

使用Struts标签库编程复杂页面时,一个最大问题是会大量使用logic标签,这个logic如同if语句,一旦写起来,搞的JSP页面象俄罗斯方块一样,但是使用JSF标签就简洁优美:

disabled=\如果authenticationBean中inboxAuthorized返回是假,那么这一行标签就不用显示,多干净利索! 缺点:

JSF这类框架面临的最大问题,它大量的使用了标签库,目前流行的网页制作工具(如

deamweaver)又没有提供足够的支持,所以只能依靠挖掘dataTable标签的各个属性,并且大量依赖css才能实现页面的美化。如果java世界能有一个强大的JSF IDE,能够提供vs.net一样的能力,那么JSF也许会更容易流行。

4、ArcGIS Server 开发初步 -- 自定义工具

在Server生成的Web App中,页面的工具按钮可以分为两类:

l命令(Command):A command is an element on a JSP page that triggers a server side action without any further interaction on the client. An example of a command in the sample application is the \full extent\。不与用户通过界面交互。

l工具(Tool):A tool has further client side interaction before calling a method on the server. An example of a tool in this application is \

rectangle over the map indicating the area they want to zoom to, and then a method is called on the server。与用户通过界面交互。

一、继承接口

public Interface com.esri.adf.web.faces.event.MapToolAction{ void execute(MapEvent event); }

lMapToolAction 接口代表由MapControl控件事件所激活的服务器端工具,系统已预设继承此接口的类:

7

PanToolAction(平移), ZoomInToolAction(放大), ZoomOutToolAction(缩小)

lMapControl 创建MapEvent 事件并将其传给继承接口的工具类的 execute(MapEvent) 函数,The business logic for the tool should be implemented in this method according to the event。

二、工具在JSP页面上的tag表达如下:

serverAction=\ clientAction=\ clientPostBack=\/>

三、注册managed-bean将所写的类作为一个managed-bean注册到faces-config.xml,并用WebContext实例作为其初始化参数:

ToolClass

com.brsc.MyToolClass request

webContext #{mapContext} 四、注释:

1. JSP的Tag中serverAction写入继承MapToolAction接口的类(全称),代表对于此工具服务器端要进行的操作[ execute(MapEvent event)]

用户也可以使用任何Managed Bean的函数作为工具对应的方法,只要这个函数使用如下声明: public void anyMethodName(MapEvent event) JSP标签使用serverMethod ,如下:

8


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

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

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

马上注册会员

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