2014-02-20 3 views
0

내 로컬 파일을 저장하는 대신 새 브라우저에서 파일을 열려고합니다.CSV 파일을 작성하고 브라우저에서 여는 방법

다음은 내 서블릿으로 내 로컬 드라이브에 저장하지만 브라우저에서 열려고합니다. FileWriter 대신 OutPutStream을 사용해야한다고 생각합니다. 그러나 어떻게 사용하는지 이해하고 있습니다.

protected void doGet(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
    Connection conn = null; 
    ResultSet result = null; 
    PreparedStatement selectStmt = null; 
    try { 
     conn = DBUtil.getConnection(); 
     if(request.getParameter("param1").equals("RED9")){ 
      selectStmt = conn.prepareStatement("select * from TableName"); 
     }else if(request.getParameter("param1").equals("RED921")){ 
      selectStmt = conn.prepareStatement("select * from TableName"); 
    result = selectStmt.executeQuery(); 
     FileWriter f = new FileWriter("c://myFile.cvs); 
     while(result.next()){ 

     writer.append(result.getString("PARTC_SSN")); 
     writer.append(','); 

     writer.append("\n"); 
      } 
      writer.flush(); 
    writer.close(); 
      }catch(Exception e){ 
     e.printStackTrace(); 
    }finally { 
     try { 
      if (result != null) { 
       result.close(); 
       result = null; 
      } 
      if (selectStmt != null) { 
       selectStmt.close(); 
       selectStmt = null; 
      } 
      if (conn != null) { 
       conn.close(); 
       conn = null; 
      } 

     } catch (SQLException e) { 
      DBUtil 
        .log("Exception from ExcelReportServlet class, Method -createNoEcmatsRegDoc " 
          + e); 
     } 
    } 

} 

답변

1

두 가지. 먼저 파일 작성자를 응답 작성자로 바꾸고 응답에 올바른 출력 형식이 필요하다고 말하십시오. 또한 예외가 발생하면 작성기를 닫아야합니다. 어쨌든, 당신의 코드가 어떻게 보이는지에 대한 내 추측은 다음과 같습니다 :

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package gov.ca.water.preciptemp; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* 
* @author hdunsford 
*/ 
public class DailyHydroServlet1 extends HttpServlet { 

    private static final Logger logger = Logger.getLogger(DailyHydroServlet1.class.getName()); 

    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. 
    * 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 


     response.setContentType("text/html;charset=UTF-8"); 
     Connection conn = null; 
     ResultSet result = null; 
     PreparedStatement selectStmt = null; 
     PrintWriter out; 
     try { 
      out = response.getWriter(); 
      conn = DBUtil.getConnection(); 
      if (request.getParameter("param1").equals("RED9")) { 
       selectStmt = conn.prepareStatement("select * from TableName"); 
      } else if (request.getParameter("param1").equals("RED921")) { 
       selectStmt = conn.prepareStatement("select * from TableName"); 
       result = selectStmt.executeQuery(); 

       while (result.next()) { 

        out.append(result.getString("PARTC_SSN")); 
        out.append(','); 

        out.append("\n"); 
       } 
       out.flush(); 
       out.close(); 
      } 
     } catch (Exception ex) { 
      try{ 
       out.close(); 
      }catch(Exception e){ 
       //ignore 
      } 
      logger.log(Level.SEVERE, ex.getMessage(), ex); 
     } finally { 
      try { 
       if (result != null) { 
        result.close(); 
        result = null; 
       } 
       if (selectStmt != null) { 
        selectStmt.close(); 
        selectStmt = null; 
       } 
       if (conn != null) { 
        conn.close(); 
        conn = null; 
       } 

      } catch (SQLException e) { 
       DBUtil.log("Exception from ExcelReportServlet class, Method -createNoEcmatsRegDoc " 
           + e); 
      } 
     } 

    } 


    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
    /** 
    * Handles the HTTP <code>GET</code> method. 
    * 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    /** 
    * Handles the HTTP <code>POST</code> method. 
    * 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    /** 
    * Returns a short description of the servlet. 
    * 
    * @return a String containing servlet description 
    */ 
    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    }// </editor-fold> 

} 
+0

고맙습니다. – tom

관련 문제