2015-11-13 60 views
1

所以我試圖讓我的JSP從表中導出一個CSV文件。如何使用JSP和Servlets導出CSV

但我有一些問題:

我的編譯器繼續顯示空指針錯誤,這還是不明白,是不是因爲我的CSV腳本錯誤,不然我把腳本錯誤的servlet的方法內。

到目前爲止,這裏是我的JSP。

<%@page import="jxl.write.*"%> 
<%@page import="java.io.File" %> 
<%@page import="jxl.*" %> 


<%@page import="Model.FuzzyTopsis"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <title> 
     Fuzzy Topsis Supplier Selection 
    </title> 

    <!-- Normalize --> 
    <link href="assets/css/normalize.css" rel="stylesheet"> 

    <!-- Bootstrap --> 
    <link href="assets/css/bootstrap.min.css" rel="stylesheet"> 

    <!-- Bootstrap --> 
    <link href="assets/css/custom_style_00.css" rel="stylesheet"> 

    <!-- Font --> 
    <link href="assets/css/font.css" rel="stylesheet"> 

</head> 

<!-- BODY STARTS HERE --> 
<body> 
    <section class="main_wrapper">   
     <div class="table-responsive"> 
      <table class="table table-bordered"> 
       <tr> 
        <td>Name</td> 
       </tr> 

       <% 
        for (int i = 0; i < sNum; i++) { 
       %> 
       <tr> 
        <td>test-<%=i + 1%></td> 
       </tr> 
       <% 
        } 
       %> 
      </table> 
     </div> 

     <form method="post" action="./Page_Five_Controller"> 
      <div class="sub_form_wrapper"> 
       <div class="sub_form_input"> 
        <input class="btn btn-default btn-lg" type="submit" value="Download to XLS" name="submit"> 
       </div> 
      </div> 
     </form> 

    </section>  
</body> 

而且這裏是我的servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 

    int sNum = (Integer) request.getSession().getAttribute("sNum"); 

    //Variabel excel 
    String header = "No, Nama Suppier"; 

    FileWriter fileWriter = new FileWriter("result.csv"); 
    fileWriter.append(header.toString()); 
    fileWriter.append("\n"); 

    for(int i=0;i<sNum;i++){ 
     fileWriter.append(String.valueOf(i+1)); 
     fileWriter.append(","); 
     fileWriter.append("TES"); 
     fileWriter.append("\n"); 
    } 

    fileWriter.flush(); 
    fileWriter.close(); 
} 

所以,任何人都可以請您指出我的錯誤或告訴我它是如何應該做?

而且,如果您想將表格導出爲CSV,將腳本放在doPost()servlet函數內是否正確?

謝謝。

回答

0

這真是讓人搞不懂。我會根據我的假設回答你的問題。我希望這是你想要的...因此,

假設你提供的servlet代碼是用於servlet Page_Five_Controller,那麼你得到例外的行就是這個int sNum = (Integer) request.getSession().getAttribute("sNum");。那是因爲您尚未將值sNum設置爲session隱式對象的屬性。

如果我要在jsp中添加會話對象中的所有變量,然後轉到servlet從會話中檢索這些值(因爲視圖中沒有任何更改),我該怎麼辦。

這將是這樣的jsp中:

session.setAttribute("sName",sName); 
session.setAttribute("stringTemp",stringTemp); 
session.setAttribute("ccTemp",ccTemp); 
session.setAttribute("sNum",sNum); 
session.setAttribute("dNum",dNum); 
session.setAttribute("cNum",cNum); 

然後在你的servlet檢索值這樣的:

String[] sName = (String[]) request.getSession().getAttribute("sName"); 
String[] stringTemp = (String[]) request.getSession().getAttribute("stringTemp"); 
double[] ccTemp = (double[]) request.getSession().getAttribute("ccTemp"); 
int sNum = (Integer) request.getSession().getAttribute("sNum"); 
int dNum = (Integer) request.getSession().getAttribute("dNum"); 
int cNum = (Integer) request.getSession().getAttribute("cNum"); 

然後做循環在你的servlet和輸出數據。

希望這有助於

+0

很抱歉,如果我的代碼所造成的誤解,但實際上我已經在會話中設置的obj那些atributes,在另一個小服務程序。所以,這似乎不是問題的根源。 如果您想將表格導出爲CSV,將腳本放在doPost()servlet函數內是否正確? 謝謝。 – root

+0

但是我會在這個頁面上編輯我的代碼,這樣不會導致進一步的誤解。 – root

+0

這不是你在問你的問題..... – MaVRoSCy