Java EE服务端生成文件并保存在指定目录下

  需求来源

  一个数据管理系统,页面以Extjs实现,一张有数据的表,表的每行最后一列有按钮,点击按钮可以根据对应的数据生成一个报表供客户端下载。数据库中有一张表记录了所有已经生成的报表的信息逻辑是这样的:

    • 点击按钮,向controller层发送请求
    • controller通过Service去数据库查询,如果该报表存在,则直接返回下载,如果不存在,则先生成报表,然后将报表上传到服务器并提供下载

  由于入坑不久,分成几个小试验来做吧  

   首先,实现在服务端生成文件并保存至指定的文件路径下:

 1 @WebServlet(urlPatterns = "/generate")
 2 public class getDownTest extends HttpServlet {
 3     @Override
 4     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 5         doPost(req, resp);
 6     }
 7 
 8     @Override
 9     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
10         String savePath = req.getServletContext().getRealPath("/upload");
11         System.out.println("获取到的文件上传的路径为:"+savePath);
12 
13         File fileDir = new File(savePath);
14         //判断上传文件的保存目录是否存在
15         if (!fileDir.exists() && !fileDir.isDirectory()){
16             fileDir.createNewFile();
17             System.out.println(savePath+"目录不存在,需要创建");
18             //创建牡蛎
19             fileDir.mkdir();
20         }
21 
22         //文件写作时间
23         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
24         String fileWriteTime = dateFormat.format(new Date());
25         String tmpFileName = savePath + "\\" + fileWriteTime +".txt";
26         System.out.println("临时文件名:==="+tmpFileName);
27 
28         File file = new File(tmpFileName);
29         //判断上传文件的保存目录是否存在
30         if (!file.exists()){
31             file.createNewFile();
32             System.out.println("临时文件创建不成功");
33         }
34 
35         FileWriter fileWriter = new FileWriter(file,true);
36 
37         //流的方式
38         BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
39         bufferedWriter.write("文件写入时间:\r\n"+fileWriteTime);
40         bufferedWriter.close();
41         fileWriter.close();
42 
43         //返回文件
44         resp.addHeader("Content-Disposition","attachment;filename="+fileWriteTime+".txt");
45     }
46 }

然后,然后实现asperReport自动生成报表

猜你喜欢

转载自www.cnblogs.com/ditto/p/9250043.html