簡體   English   中英

使用App Engine Java Servlet動態創建和存儲CSV文件

[英]Using app engine java servlet to dynamically create and store csv file

我有一個Java Web應用程序,它使用amCharts繪制數據圖形。 我要繪制的數據存儲在SQL數據庫中。 我有一個servlet,它查詢數據庫以獲取要繪制的數據並將其格式化為逗號分隔的csv格式。 我遇到的問題是,在創建格式后的數據后將其存儲到文件中,然后可以稍后(通過真實路徑)訪問此文件,以便更新圖。

到目前為止,這是我對servlet的了解:

public class CreateCsvServlet extends HttpServlet{

public void doGet(HttpServletRequest req, HttpServletResponse response)  throws IOException, ServletException{
    String macAdd = (String) req.getSession().getAttribute("macAddress");

    String path =  getServletContext().getRealPath("/powerData.txt");   //the file "powerData.txt" is an empty file that was deployed with the web app

    final String DB_URL="jdbc:google:mysql://mydatabase:iot?user=root";
    Statement stmt = null;
    Connection conn = null;            

      try{
         // Register JDBC driver
         Class.forName("com.mysql.jdbc.GoogleDriver");

         // Open a connection
         conn = DriverManager.getConnection(DB_URL);

         // Execute SQL query
         stmt = conn.createStatement();

         String sql = "SELECT `wattSeconds`,`time` FROM `iot_data`.`Usage Data` WHERE `MACAddress`='" + macAdd +"'";

         rs = stmt.executeQuery(sql);

         PrintWriter csvWriter = new PrintWriter(new File(path));

         // Extract data from result set
         while(rs.next()){
            //Retrieve by column name
            String watt  = rs.getString("wattSeconds");
            String time = rs.getString("time");
            String row = watt + "," + time;

            csvWriter.println(row) ;
         } 

         csvWriter.close(); 

         // Clean-up environment
         rs.close();
         stmt.close();
         conn.close();
      }catch(SQLException se){
         //Handle errors for JDBC
         se.printStackTrace();
      }

我正在嘗試使用PrintWriter寫入文件,但是我不確定這是否是正確的方法。 另外,我將一個已經存在的文件的路徑提供給new File(path) ,我覺得這是不正確的。 我要實際發生的事情是檢查文件是否存在,如果存在,則應使用此新內容覆蓋文件。

您無法在App Engine上寫入文件。 您有兩種選擇:

  1. 將此文件作為長String對象存儲在數據存儲區中(該文件必須小於1MB)。

  2. 將其寫入Google Cloud Storage中的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM