private ManagerBiz managerBiz = new ManagerBiz(); // 导出来的excel文件名
private String filename; private OutputStream outputStream; private String returnString; private HttpSession session;/**
 * 导出重复的数据
 */
public ActionForward exportRepeateData(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException {
// 取得输出流
outputStream = response.getOutputStream();
response.reset(); // 清空输出流
response.setContentType("application/vnd.ms-excel"); // 定义输出类型
String time1 = request.getParameter("time1");
String time2 = request.getParameter("time2");
int type = Integer.parseInt(request.getParameter("btn_paichong"));
String filenameTitle = "";
switch (type) {
case 1:// 维护排重
filenameTitle = "维护排重";
break;
case 2:// 涣元排重
filenameTitle = "涣元排重";
break;
}
// 文件名
filename = filenameTitle + time1 + "-" + time2 + ".xls";
session = request.getSession();
response.setHeader("Content-disposition", "attachment; filename=" + new String(filename.getBytes("GB18030"), "iso8859-1"));
returnString = managerBiz.getRepeateDataExcelPath(time1, time2, type, outputStream);
if (null != returnString) {
System.setOut(new PrintStream(outputStream));
outputStream.flush();
} else {
session.setAttribute("excelWarn", "该时间段类没有" + filenameTitle + "的数据!");
return new ActionForward("/warn.jsp");
}
outputStream.close();
return null;
} /**
 * 导出用户相关的数据
 */
public ActionForward exportUserData(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException {
// 取得输出流
outputStream = response.getOutputStream();
response.reset(); // 清空输出流
response.setContentType("application/vnd.ms-excel"); // 定义输出类型
String userRole = request.getParameter("userRole");
String user = request.getParameter("user");
String industry = request.getParameter("industry");
boolean isGather = userRole.equals("gather");
// 文件名
filename = (isGather ? "采集人" : "审核人") + "_" + user + "_" + Params.industryNames[Integer.parseInt(industry) - 1] + ".xls";
response.setHeader("Content-disposition", "attachment; filename=" + new String(filename.getBytes("GB18030"), "iso8859-1"));
managerBiz.getDataByUserIndustry(user, userRole, industry, outputStream);
System.setOut(new PrintStream(outputStream));
outputStream.flush();
outputStream.close();
return null;
} /**
 * 导出数据提交电信
 */
public ActionForward exportData(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException {
// 取得输出流
outputStream = response.getOutputStream();
response.reset(); // 清空输出流
response.setContentType("application/vnd.ms-excel"); // 定义输出类型
// 数据类型 1表示涣元数据 2表示电信数据
int dataType = Integer.parseInt(request.getParameter("dataType"));
int industryCode = Integer.parseInt(request.getParameter("industryCode"));
String time1 = request.getParameter("time1");
String time2 = request.getParameter("time2");
FeiLongTime feiLongTime = new FeiLongTime();
// 文件名
filename = (dataType == 1 ? "新增提交" : "核实提交") + "-" + Params.industryNames[industryCode - 1] + "(" + feiLongTime.getYYYYMMDD() + ")" + ".xls";
response.setHeader("Content-disposition", "attachment; filename=" + new String(filename.getBytes("GB18030"), "iso8859-1"));
managerBiz.exportData(dataType, industryCode, time1, time2, outputStream);
System.setOut(new PrintStream(outputStream));
outputStream.flush();
outputStream.close();
return null;
}

解决方案 »

  1.   

    好多重复的代码,我想提取出来,但是是中间的部分不一样,java 不知道可不可以像javascript一样传递个function 进去,动态的执行
      

  2.   

    可以使用设计模式中的工厂模式或者template模式,去查查相关的资料会有收获的
      

  3.   


    因为要先
     // 取得输出流
            outputStream = response.getOutputStream();
            response.reset(); // 清空输出流