public void init(ServletConfig config) throws ServletException {
   super.init(config);
   try {
     // 应用的相对路径前缀
     String prefix = config.getServletContext().getRealPath("/");
     if (prefix == null) prefix = "";
     // 获取配置文件的文件名称
     uploadPath = config.getInitParameter(this.UPLOAD_FILE_PATH_PARAM);
     // 文件不存在提醒信息
     alarmMessage =
         config.getInitParameter(this.FILE_UN_EXIST_ALARM) == null
             ? alarmMessage
             : config.getInitParameter(this.FILE_UN_EXIST_ALARM);
     // 是否是相对路径
     String isRelatePath =
         config.getInitParameter(this.UPLOAD_FILE_PATH_RELATE_FLAG_PARAM) == null
             ? "true"
             : config.getInitParameter(this.UPLOAD_FILE_PATH_RELATE_FLAG_PARAM);
     if (isRelatePath.equalsIgnoreCase("true"))
       uploadPath = prefix + (uploadPath.indexOf("/") == 0 ? "" : "/") + uploadPath;
     if ((uploadPath.lastIndexOf("/") + 1) != uploadPath.length()) uploadPath += "/";
     logger.info("file upload path=" + uploadPath);
   } catch (Exception e) {
     logger.error("fileDownload Servlet init Error:" + e.getMessage());
     e.printStackTrace();
   }
 }
  /*
   * (non-Javadoc)
   *
   * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,
   *      javax.servlet.http.HttpServletResponse)
   */
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    req.setCharacterEncoding("UTF-8");
    String downFileName = req.getParameter(this.DOWN_DISPLAY_FILENAME);
    String realFileName = req.getParameter(this.DOWN_REAL_FILENAME);
    String isNewWindow = null;
    try {
      isNewWindow = req.getParameter(this.DOWN_IS_NEW_WINDOW);
    } catch (Exception e) {
      logger.info("file downLoadServlet:本页面下载文件!");
      e.printStackTrace();
    }
    logger.info("下载文件为:" + uploadPath + realFileName);
    File downFile = new File(uploadPath + realFileName);

    resp.setContentType("text/html;charset=UTF-8");
    // resp.setCharacterEncoding("UTF-8");
    if (!downFile.exists()) {
      System.out.println("下载文件为=" + downFileName);
      logger.info("下载文件为:" + new String(downFileName.getBytes(), "UTF-8") + "不存在!");
      String alarm =
          StringUtil.replaceStr(alarmMessage, "{0}", new String(downFileName.getBytes(), "UTF-8"));
      resp.getWriter().print("<script type=\"text/javascript\">");
      resp.getWriter().print("alert('" + alarm + "');");
      if (isNewWindow != null) {
        resp.getWriter().print("window.close();");
      }
      resp.getWriter().print("</script>");
      return;
    }
    try {
      resp.setContentType("application/x-download");
      resp.setHeader(
          "Content-Disposition", "attachment;filename=" + URLEncoder.encode(downFileName, "UTF-8"));
      ServletOutputStream out = resp.getOutputStream();
      InputStream inStream = new FileInputStream(downFile);
      // 循环取出流中的数据
      byte[] b = new byte[1024];
      int len;
      while ((len = inStream.read(b)) > 0) out.write(b, 0, len);
      out.flush();
      out.close();
      inStream.close();
    } catch (Exception e) {
      e.printStackTrace();
      logger.error(e.getMessage());
    }
  }
 /**
  * 解压资源到web应用指定的路径下 目前不采取比较版本文件方式,采用非覆盖解压模式,对于已经存在的文件不做修改
  *
  * @param pResources
  * @param pDestPath
  * @throws Exception
  */
 private static void loadResource(ResourceFile resModel, String webHome)
     throws LoadResourcesException {
   String exportDir =
       webHome
           + (resModel.getUnzipPath().indexOf(File.separator) != 0 ? File.separator : "")
           + resModel.getUnzipPath();
   try {
     InputStream resources = ResourcesLoader.class.getResourceAsStream(resModel.getResource());
     ZipInputStream zis = new ZipInputStream(resources);
     FileUtil.unzip(zis, exportDir, false);
   } catch (Exception e) {
     final String MSG =
         "解压缩资源文件:" + resModel.getResource() + " 到 " + resModel.getUnzipPath() + "失败!";
     logger.error(MSG);
     throw new LoadResourcesException(MSG, e);
   }
 }