⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exportagxservlet.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
package com.esri.solutions.jitk.common.export.agx;

import com.esri.adf.web.data.WebContext;

import org.apache.log4j.Logger;

import java.io.IOException;

import javax.faces.FactoryFinder;
import javax.faces.context.FacesContext;
import javax.faces.context.FacesContextFactory;
import javax.faces.lifecycle.Lifecycle;
import javax.faces.lifecycle.LifecycleFactory;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Class that handles client requests to view map data
 * in ArcGIS Explorer by extending {@link HttpServlet}.  This class
 * will use the {@link AGXExporter} to export map resources to an AGX
 * document and stream it back to the client.
 */
@SuppressWarnings("serial")
public class ExportAGXServlet extends HttpServlet {
    /**
     * {@link Logger} used to log messages for this class.
     */
    private static final Logger _logger = Logger.getLogger(ExportAGXServlet.class);

    /*
     * (non-Javadoc)
     * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        AGXExporter exporter = null;
        WebContext context = null;
        String agxXml = null;
        String fileName = null;
        ServletOutputStream out = null;
        FacesContext fc = null;
        String webContextInitParamName = "WebContext";
        String webContextName = null;

        try {
            webContextName = getServletConfig()
                                 .getInitParameter(webContextInitParamName);

            if (webContextName == null) {
                response.getWriter()
                        .write(generateErrorHtml(
                        "An error has occurred exporting to ArcGIS Explorer.  Possible configuration problem."));

                _logger.debug("Missing servlet initialization parameter '" +
                    webContextInitParamName + "' for servlet: " +
                    getServletConfig().getServletName() +
                    " - cannot export to AGX");

                response.getWriter().flush();
                response.getWriter().close();

                return;
            }

            fc = getFacesContext(request, response);

            if (!(fc.getApplication().getVariableResolver()
                        .resolveVariable(fc, webContextName) instanceof WebContext)) {
                response.getWriter()
                        .write(generateErrorHtml(
                        "An error has occurred exporting to ArcGIS Explorer.  Possible configuration problem."));

                _logger.debug("WebContext bean is not of type '" +
                    WebContext.class.getName() + "' - cannot export to AGX");

                response.getWriter().flush();
                response.getWriter().close();

                return;
            }

            context = (WebContext) fc.getApplication().getVariableResolver()
                                     .resolveVariable(fc, webContextName);

            exporter = new AGXExporter(context);

            agxXml = exporter.export();

            if (agxXml != null) {
                fileName = "map.nmf";

                response.setContentType("APPLICATION/OCTET-STREAM");
                response.setContentLength(agxXml.length());
                response.addHeader("Content-Disposition",
                    "attachment;filename=" + fileName);

                out = response.getOutputStream();

                out.print(agxXml);

                out.flush();
                out.close();
            } else {
                _logger.warn(
                    "AGX xml is null, cannot export ArcGIS Explorer document.");
            }
        } catch (Exception ex) {
            _logger.warn("Exception occurred while exporting ArcGIS Explorer document.",
                ex);
        }
    }

    /**
     * Utility method to get the {@link FacesContext} object via
     * the {@link FacesContextFactory#getFacesContext(Object, Object, Object, Lifecycle)}.
     *
     * @param request Reference to the {@link HttpServletRequest} needed for getting the
     *                 {@link FacesContext}.
     * @param response Reference to the {@link HttpServletResponse} needed for getting the
     *                 {@link FacesContext}.
     * @return {@link FacesContext} reference.
     */
    private FacesContext getFacesContext(HttpServletRequest request,
        HttpServletResponse response) {
        FacesContext facesContext = FacesContext.getCurrentInstance();

        if (facesContext == null) {
            FacesContextFactory contextFactory = (FacesContextFactory) FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
            LifecycleFactory lifecycleFactory = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
            Lifecycle lifecycle = lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);

            facesContext = contextFactory.getFacesContext(getServletContext(),
                    request, response, lifecycle);
        }

        return facesContext;
    }

    /**
     * Utility method to generate an HTML message that can be
     * sent back to the client.
     *
     * @param message {@link String} message.
     * @return HTML message that can be viewed in a browser.
     */
    private String generateErrorHtml(String message) {
        StringBuilder errorHtml = null;

        errorHtml = new StringBuilder();

        errorHtml.append("<html>");
        errorHtml.append("<head>");
        errorHtml.append("<title>");
        errorHtml.append("Error Exporting to ArcGIS Explorer");
        errorHtml.append("</title>");
        errorHtml.append("</head>");
        errorHtml.append("<body>");
        errorHtml.append(message);
        errorHtml.append("</body>");
        errorHtml.append("</html>");

        return errorHtml.toString();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -