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

📄 exportqbqueryservlet.java

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

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;
import org.apache.log4j.Logger;
import com.esri.adf.web.data.WebContext;
import com.esri.solutions.jitk.web.tasks.query.querybuilder.QueryBuilderTask;


@SuppressWarnings("serial")
public class ExportQbQueryServlet extends HttpServlet {
    /**
     * {@link Logger} used to log messages for this class.
     */
    private static final Logger LOG = Logger.getLogger(ExportQbQueryServlet.class);

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
        FacesContext fc = null;
        String taskBeanName = null;
        String webContextName = null;
        QueryBuilderTask taskBean = null;
        WebContext webContext = null;
        String taskBeanInitParamName = "TaskBeanName";
        String webContextInitParamName = "WebContext";
        String xmlQuery = null;
        ServletOutputStream out = null;

        taskBeanName = getServletConfig().getInitParameter(taskBeanInitParamName);
        webContextName = getServletConfig().getInitParameter(webContextInitParamName);

        if(taskBeanName == null) {
            resp.getWriter().write(generateErrorHtml("An error has occurred exporting QueryBuilder Query.  Possible configuration problem."));

            LOG.debug("Missing servlet initialization parameter '" + taskBeanInitParamName + "' for servlet: " + getServletConfig().getServletName() + " - cannot export query");

            resp.getWriter().flush();
            resp.getWriter().close();

            return;
        }

        if(webContextName == null) {
            resp.getWriter().write(generateErrorHtml("An error has occurred exporting QueryBuilder Query.  Possible configuration problem."));

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

            resp.getWriter().flush();
            resp.getWriter().close();

            return;
        }

        fc = getFacesContext(req, resp);

        if(!(fc.getApplication().getVariableResolver().resolveVariable(fc, taskBeanName) instanceof QueryBuilderTask)) {
            resp.getWriter().write(generateErrorHtml("An error has occurred exporting QueryBuilder Query.  Possible configuration problem."));

            LOG.debug("QueryBuilder task bean is not of type '" + QueryBuilderTask.class.getName() + "' - cannot export query");

            resp.getWriter().flush();
            resp.getWriter().close();

            return;
        }

        if(!(fc.getApplication().getVariableResolver().resolveVariable(fc, webContextName) instanceof WebContext)) {
            resp.getWriter().write(generateErrorHtml("An error has occurred exporting QueryBuilder Query.  Possible configuration problem."));

            LOG.debug("WebContext bean is not of type '" + WebContext.class.getName() + "' - cannot export query");

            resp.getWriter().flush();
            resp.getWriter().close();

            return;
        }

        taskBean = (QueryBuilderTask) fc.getApplication().getVariableResolver().resolveVariable(fc, taskBeanName);
        webContext = (WebContext) fc.getApplication().getVariableResolver().resolveVariable(fc, webContextName);
        xmlQuery = taskBean.saveQueryToString(webContext);

        if(xmlQuery == null) {
            resp.getWriter().write(generateErrorHtml("An error has occurred exporting query to XML."));

            LOG.debug("XML serialization string is null");

            resp.getWriter().flush();
            resp.getWriter().close();

            return;
        }
        
        resp.setContentType("text/xml; charset=UTF-8");
        resp.setContentLength(xmlQuery.length());
        resp.setHeader("Content-Disposition", "attachment; filename=" + taskBean.getSaveQueryName() + ".xml");
		resp.setHeader("Expires", "0");
	    resp.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
	    resp.setHeader("Pragma", "public");
	    
        out = resp.getOutputStream();
        out.print(xmlQuery);
        out.flush();
        out.close();
    }

    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;
    }

    private String generateErrorHtml(String message) {
        StringBuilder errorHtml = null;

        errorHtml = new StringBuilder();

        errorHtml.append("<html>");
        errorHtml.append("<head>");
        errorHtml.append("<title>");
        errorHtml.append("Error Exporting QueryBuilder Query");
        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 + -