上篇文章中介绍了MapXtreme Java Edition 4.8.2安装,这里介绍如何创建web gis应用。

(1)MyEclipse中tomcat配置

可以使用安装目录中已有的tomcat,也可以自己重新安装一个,这里使用新的tomcat。菜单-->Window-->Preferences-->MyEclipse-->Servers-->Tomcat

将安装目录下的\MapInfo\MapXtreme-4.8.2\apache-tomcat-5.5\webapps\mapxtreme482复制到Tomcat发布目录下,mapxtreme482应该是地图服务应用。启动tomcat,通过访问服务器地址http://127.0.0.1:8080/mapxtreme482/servlet/mapxtreme来查看是否部署成功。若显示为一空白页面则表明已部署成功。

 (2)创建gis应用

1、配置User Library

菜单-->Window-->Preferences-->Java-->Build Path-->User Libraries

将安装目录\MapInfo\MapXtreme-4.8.2\lib下,common、client、server下的jar包都添加进去。

 

2、创建web项目

File-->new-->Web Project 这里创建MapXServlet项目

添加gis应用需要的jar包,项目-->Build Path-->Add Library-->User Library 将1中配置的jar包添加进去

3、编写servlet

 

 
  
  1. package com.mapinfo.myservlets;  
  2.  
  3. import java.awt.Color;  
  4. import java.io.IOException;  
  5. import java.io.PrintWriter;  
  6.  
  7. import javax.servlet.ServletException;  
  8. import javax.servlet.ServletOutputStream;  
  9. import javax.servlet.http.HttpServlet;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12.  
  13. import com.mapinfo.mapj.MapJ;  
  14. import com.mapinfo.mapxtreme.client.MapXtremeImageRenderer;  
  15. import com.mapinfo.util.DoubleRect;  
  16. import com.mapinfo.xmlprot.mxtj.ImageRequestComposer;  
  17.  
  18. public class SimpleServletMap extends HttpServlet {  
  19.     private static String mimeType = "p_w_picpath/gif";  
  20.     private static String m_mapPath = "E:\\paper Material\\my.mdf";  
  21.     private static String m_mxtURL = "http://localhost:8086/mapxtreme482/servlet/mapxtreme";  
  22.     /**  
  23.      * Constructor of the object.  
  24.      */ 
  25.     public SimpleServletMap() {  
  26.         super();  
  27.     }  
  28.  
  29.     /**  
  30.      * Destruction of the servlet. <br>  
  31.      */ 
  32.     public void destroy() {  
  33.         super.destroy(); // Just puts "destroy" string in log  
  34.         // Put your code here  
  35.     }  
  36.  
  37.     /**  
  38.      * The doGet method of the servlet. <br>  
  39.      *  
  40.      * This method is called when a form has its tag value method equals to get.  
  41.      *   
  42.      * @param request the request send by the client to the server  
  43.      * @param response the response send by the server to the client  
  44.      * @throws ServletException if an error occurred  
  45.      * @throws IOException if an error occurred  
  46.      */ 
  47.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  48.             throws ServletException, IOException {  
  49.  
  50.         response.setContentType(mimeType);  
  51.         ServletOutputStream sos = response.getOutputStream();  
  52.         MapJ m_mapj = new MapJ();  
  53.         m_mapj.loadMapDefinition(m_mapPath);  
  54.         m_mapj.setDeviceBounds(new DoubleRect(0,0,800,600));  
  55.         try{  
  56.             ImageRequestComposer irc = ImageRequestComposer.create(m_mapj, ImageRequestComposer.MAX_COLORS_TRUECOLOR,Color.white,mimeType);  
  57.             MapXtremeImageRenderer renderer = new MapXtremeImageRenderer(m_mxtURL);  
  58.             renderer.render(irc);  
  59.             renderer.toStream(sos);  
  60.         }catch(Exception e){  
  61.             System.out.println("Error");  
  62.             //e.printStackTrace();  
  63.         }  
  64.           
  65.     }  
  66.  
  67.     /**  
  68.      * The doPost method of the servlet. <br>  
  69.      *  
  70.      * This method is called when a form has its tag value method equals to post.  
  71.      *   
  72.      * @param request the request send by the client to the server  
  73.      * @param response the response send by the server to the client  
  74.      * @throws ServletException if an error occurred  
  75.      * @throws IOException if an error occurred  
  76.      */ 
  77.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  78.             throws ServletException, IOException {  
  79.  
  80.         response.setContentType("text/html");  
  81.         PrintWriter out = response.getWriter();  
  82.         out  
  83.                 .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");  
  84.         out.println("<HTML>");  
  85.         out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");  
  86.         out.println("  <BODY>");  
  87.         out.print("    This is ");  
  88.         out.print(this.getClass());  
  89.         out.println(", using the POST method");  
  90.         out.println("  </BODY>");  
  91.         out.println("</HTML>");  
  92.         out.flush();  
  93.         out.close();  
  94.     }  
  95.  
  96.     /**  
  97.      * Initialization of the servlet. <br>  
  98.      *  
  99.      * @throws ServletException if an error occurs  
  100.      */ 
  101.     public void init() throws ServletException {  
  102.         // Put your code here  
  103.     }  
  104.  
  105. }  

MyEclipse默认情况,添加完servlet后会自动修改web.xml,如果没有修改web.xml记得自行修改。

4、发布

访问http://127.0.0.1:8086/MapXServlet/servlet/SimpleServletMap即可看到运行结果。此时只需启动tomcat,不需要启动MapXtreme Java Edition 4.8.2,已经将地图服务mapxtreme482复制到tomcat中。

可参考:(1)http://blog.csdn.net/tmri_vio/article/details/2683672,若只添加common和server中的jar包,会报错,需要在web应用\WEB-INF\classes下添加encoding-map.xml、layerxmlhandlers.xml、querybuilderxmlhandlers.xml(这三个文件在client文件夹下)。

(2)http://wenku.baidu.com/view/adb023fb770bf78a65295491.html