java工具類HttpUtil,支援http和https(忽略Certification)
阿新 • • 發佈:2021-09-16
前端(GET方式),如果引數有null,後端接收到的不是null而是字串“null”,可能導致SQL邏輯錯誤,可以再控制層或者服務處處理一下
window.location.href =request.baseURL+ "/IntentListExport?isExpand="+this.selectCondition.isExpand+ "&botName="+this.currentBotName+ "&intent="+this.selectCondition.intent
controller
@GetMapping("/IntentListExport")public void IntentListExport(Entity entity, HttpServletResponse response) throws IOException {
ExcelWriter writer=botExerciseSampleService.export(botExerciseSampleSelectCondition);
//out為OutputStream,需要寫出到的目標流
response.setContentType("application/vnd.ms-excel;charset=utf-8");
Date date=new Date();
DateFormat format=new SimpleDateFormat("yyyyMMdd");
String fileName = "CheckBot_Release_Sample_"+botExerciseSampleSelectCondition.getBotName()+"_"+format.format(date)+"-"+ DateUtil.currentSeconds() + ".xls";
//CheckBot_Release_Auto Test_20210518-124009
//test.xls是彈出下載對話方塊的檔名,不能為中文,中文請自行編碼
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
ServletOutputStream out = response.getOutputStream();
writer.flush(out, true);
// 關閉writer,釋放記憶體
writer.close();
//此處記得關閉輸出Servlet流
IoUtil.close(out);
}
業務實現
public ExcelWriter export(BotExerciseSampleSelectCondition botExerciseSampleSelectCondition){ ExcelWriter writer= ExcelUtil.getWriter(); List<BotExerciseSample> result=botExerciseSampleMapper.findByCondition(botExerciseSampleSelectCondition); if (result.size()>65535){ List<List<BotExerciseSample>> lists= ListUtils.partition(result,65535); for (int i=0;i<lists.size();i++){ //設定表頭 setDataSheet(writer,lists.get(i),i,botExerciseSampleSelectCondition.getBotName()); } }else { setDataSheet(writer,result,0,botExerciseSampleSelectCondition.getBotName()); } return writer; } private void setDataSheet(ExcelWriter writer,List<BotExerciseSample> result,int index,String name){ if (index==0){ writer.renameSheet(name); }else { writer.setSheet(name+index); } writer.addHeaderAlias("bot_chname", "bot名稱"); writer.addHeaderAlias("intent", "意圖"); writer.addHeaderAlias("question", "問題"); writer.addHeaderAlias("answer_text","文本回答"); writer.addHeaderAlias("answer_picture_name", "圖片回答"); writer.addHeaderAlias("answer_link", "連結回答"); writer.write(result, true); }