贴别人的东西,又整格式,还得写个“转”,感觉莫名的气愤,你大爷的,我自己写了,但有些东西还得学学人家的,毕竟自己还不行啊!
下面的都是一个初学ArcServer和java的菜鸟写的,大家学习还是看——权威牛魔王的吧! http://warrenwyf.spaces.live.com/?_c11_BlogPart_pagedir=Next&_c11_BlogPart_handle=cns!C71882196B68EEE5!628&_c11_BlogPart_BlogPart=blogview&_c=BlogPart
第一讲 前言------为什么我们选择JSF,而不是其它framework
做过Engine,用ASP做Server就感觉很类似,都是基于事件处理的,插入地图控件,JSF,类似的框架,我想ESRI是为了方便实现吧,其实真正做Java的人是很不熟悉JSF的,也很不适应针对事件变成,所以用JSF开发,Java程序员总是多用Struts处理,能不用JSF就不用JSF。
自己学习JSF,感觉就是很不好用,比ASP难用,难学。
牛魔王所说的在Google中输入JSF和Structs,确实相差不大,但在Baidu中输入,结果就差很多了,看来国人用JSF的很少。
第二讲 建立自己第一个AGS for Java工程
这个我自己写了一篇,可以看看,里面有需要的文件
第三讲 什么是ADF
牛魔王里没显示出来的就是这张图了,客户端和服务器端,还有发布服务的数据源端,“ADF主要是由一些JSF组件、实现GIS相关功能的Java类库、支持AJAX的JavaScript脚本库和一些帮助文档及例子的集合”,
第四讲 ADF的逻辑结构
以前看这张图没什么感觉,但今天看就感觉爽啊,我们在JSP页面里使用了控件#{mapContext.webMap},这个东西要在faces-config。xml里面配置的,这个叫WebContext,就相当于一个大容器,这下面的东西都装在它里面,配置文件中,它有attribute和resources两个属性,attribute里的值都对应着Jsp中的控件,value值都在context-attribute。xml中具体给值,resources中只有一个值ags1,但在ags1的属性中油一个functionalities,这定义了他的功能,这些功能在ags-functionalities。xml中具体给值了,我们自己看看也知道,attribute中的值<map-entry>
<key>
map</key>
<value>
#{agsMap}</value>
</map-entry>
这些和functionalities中的一样,对应着同样的值了,这就是上面这张图了。
第五讲 ADF怎么开始工作的
这个牛魔王讲的很好了,我自己总结下了,下面是web。xml中最简单的代码了,在少了地图就显示不出来了,“ADFServletContextListener负责创建WebApplication(老大);当有用户请求的时候,请求会经过ADFFilter过滤并试图获得该请求的WebSession(老大的小弟),如果为null则创建 WebSession并保存;在WebSession中包含了该会话使用的所有WebContext(老大的小弟的小弟)”,这就是这个过程了,
Code
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<display-name>Web Mapping Application</display-name>
<!-- Context Parameters -->
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>
/WEB-INF/functionalities/aims-functionalities.xml,
/WEB-INF/functionalities/ags-functionalities.xml,
/WEB-INF/functionalities/aws-functionalities.xml,
/WEB-INF/functionalities/wms-functionalities.xml,
/WEB-INF/functionalities/ejb-functionalities.xml,
/WEB-INF/functionalities/graphics-functionalities.xml,
/WEB-INF/ajax-renderers.xml,
/WEB-INF/context-attributes.xml
</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<param-name>com.esri.adf.LOG_LEVEL</param-name>
<param-value>SEVERE</param-value>
</context-param>
<!--<security-filter>-->
<filter>
<filter-name>SessionTimeout</filter-name>
<filter-class>
com.esri.adf.web.util.ADFSessionTimeoutFilter
</filter-class>
<init-param>
<param-name>redirectPage</param-name>
<param-value>/timeout.html</param-value>
</init-param>
<init-param>
<param-name>errorPage</param-name>
<param-value>/error.html</param-value>
</init-param>
</filter>
<filter>
<filter-name>ADFFilter</filter-name>
<filter-class>com.esri.adf.web.util.ADFFilter</filter-class>
</filter>
<!--<security-filter-mapping>-->
<filter-mapping>
<filter-name>SessionTimeout</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ADFFilter</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
<listener>
<listener-class>
com.esri.adf.web.util.ADFServletContextListener
</listener-class>
</listener>
<!-- Servlets -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>MimeData Servlet</servlet-name>
<servlet-class>com.esri.adf.web.util.ADFMimeDataServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Tile Servlet</servlet-name>
<servlet-class>com.esri.adf.web.util.ADFTileServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Upload Servlet</servlet-name>
<servlet-class>com.esri.adf.web.util.ADFUploadServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Download Servlet</servlet-name>
<servlet-class>com.esri.adf.web.util.ADFDownloadServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Servlet Mappings -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MimeData Servlet</servlet-name>
<url-pattern>/mimedata/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Tile Servlet</servlet-name>
<url-pattern>/tile/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Upload Servlet</servlet-name>
<url-pattern>/upload</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Download Servlet</servlet-name>
<url-pattern>/download</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<!--<security-constraint>-->
</web-app>
第六讲 ADF的页面结构
服务器端就是JSP页面#{mapContext.webMap}到faces-config。xml的Attribute的map到context-attributes。xml里的map。
客户端就是<a:map>通过MapRenderer生成xml,xml和map。xsl生成HTML和JS库的对象,JS库里包括了EsriMap等客户端的JS object。
下面的都是一个初学ArcServer和java的菜鸟写的,大家学习还是看——权威牛魔王的吧! http://warrenwyf.spaces.live.com/?_c11_BlogPart_pagedir=Next&_c11_BlogPart_handle=cns!C71882196B68EEE5!628&_c11_BlogPart_BlogPart=blogview&_c=BlogPart
第一讲 前言------为什么我们选择JSF,而不是其它framework
做过Engine,用ASP做Server就感觉很类似,都是基于事件处理的,插入地图控件,JSF,类似的框架,我想ESRI是为了方便实现吧,其实真正做Java的人是很不熟悉JSF的,也很不适应针对事件变成,所以用JSF开发,Java程序员总是多用Struts处理,能不用JSF就不用JSF。
自己学习JSF,感觉就是很不好用,比ASP难用,难学。
牛魔王所说的在Google中输入JSF和Structs,确实相差不大,但在Baidu中输入,结果就差很多了,看来国人用JSF的很少。
第二讲 建立自己第一个AGS for Java工程
这个我自己写了一篇,可以看看,里面有需要的文件
第三讲 什么是ADF
![](https://i-blog.csdnimg.cn/blog_migrate/75ed8f1f6aa8935445fde331109857e1.png)
牛魔王里没显示出来的就是这张图了,客户端和服务器端,还有发布服务的数据源端,“ADF主要是由一些JSF组件、实现GIS相关功能的Java类库、支持AJAX的JavaScript脚本库和一些帮助文档及例子的集合”,
第四讲 ADF的逻辑结构
![](https://i-blog.csdnimg.cn/blog_migrate/1dea58efbad41cc0a0babcb6480966fb.png)
以前看这张图没什么感觉,但今天看就感觉爽啊,我们在JSP页面里使用了控件#{mapContext.webMap},这个东西要在faces-config。xml里面配置的,这个叫WebContext,就相当于一个大容器,这下面的东西都装在它里面,配置文件中,它有attribute和resources两个属性,attribute里的值都对应着Jsp中的控件,value值都在context-attribute。xml中具体给值,resources中只有一个值ags1,但在ags1的属性中油一个functionalities,这定义了他的功能,这些功能在ags-functionalities。xml中具体给值了,我们自己看看也知道,attribute中的值<map-entry>
<key>
map</key>
<value>
#{agsMap}</value>
</map-entry>
这些和functionalities中的一样,对应着同样的值了,这就是上面这张图了。
第五讲 ADF怎么开始工作的
这个牛魔王讲的很好了,我自己总结下了,下面是web。xml中最简单的代码了,在少了地图就显示不出来了,“ADFServletContextListener负责创建WebApplication(老大);当有用户请求的时候,请求会经过ADFFilter过滤并试图获得该请求的WebSession(老大的小弟),如果为null则创建 WebSession并保存;在WebSession中包含了该会话使用的所有WebContext(老大的小弟的小弟)”,这就是这个过程了,
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<display-name>Web Mapping Application</display-name>
<!-- Context Parameters -->
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>
/WEB-INF/functionalities/aims-functionalities.xml,
/WEB-INF/functionalities/ags-functionalities.xml,
/WEB-INF/functionalities/aws-functionalities.xml,
/WEB-INF/functionalities/wms-functionalities.xml,
/WEB-INF/functionalities/ejb-functionalities.xml,
/WEB-INF/functionalities/graphics-functionalities.xml,
/WEB-INF/ajax-renderers.xml,
/WEB-INF/context-attributes.xml
</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<param-name>com.esri.adf.LOG_LEVEL</param-name>
<param-value>SEVERE</param-value>
</context-param>
<!--<security-filter>-->
<filter>
<filter-name>SessionTimeout</filter-name>
<filter-class>
com.esri.adf.web.util.ADFSessionTimeoutFilter
</filter-class>
<init-param>
<param-name>redirectPage</param-name>
<param-value>/timeout.html</param-value>
</init-param>
<init-param>
<param-name>errorPage</param-name>
<param-value>/error.html</param-value>
</init-param>
</filter>
<filter>
<filter-name>ADFFilter</filter-name>
<filter-class>com.esri.adf.web.util.ADFFilter</filter-class>
</filter>
<!--<security-filter-mapping>-->
<filter-mapping>
<filter-name>SessionTimeout</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ADFFilter</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
<listener>
<listener-class>
com.esri.adf.web.util.ADFServletContextListener
</listener-class>
</listener>
<!-- Servlets -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>MimeData Servlet</servlet-name>
<servlet-class>com.esri.adf.web.util.ADFMimeDataServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Tile Servlet</servlet-name>
<servlet-class>com.esri.adf.web.util.ADFTileServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Upload Servlet</servlet-name>
<servlet-class>com.esri.adf.web.util.ADFUploadServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Download Servlet</servlet-name>
<servlet-class>com.esri.adf.web.util.ADFDownloadServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Servlet Mappings -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MimeData Servlet</servlet-name>
<url-pattern>/mimedata/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Tile Servlet</servlet-name>
<url-pattern>/tile/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Upload Servlet</servlet-name>
<url-pattern>/upload</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Download Servlet</servlet-name>
<url-pattern>/download</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<!--<security-constraint>-->
</web-app>
第六讲 ADF的页面结构
服务器端就是JSP页面#{mapContext.webMap}到faces-config。xml的Attribute的map到context-attributes。xml里的map。
客户端就是<a:map>通过MapRenderer生成xml,xml和map。xsl生成HTML和JS库的对象,JS库里包括了EsriMap等客户端的JS object。
![](https://i-blog.csdnimg.cn/blog_migrate/6e8e681565ef327170a5a89906bfc41f.png)