2015-11-13 2 views
1

Итак, я пытаюсь сделать мой JSP экспорт CSV-файла из таблицы.Как экспортировать CSV с помощью JSP и сервлетов

Но у меня есть некоторые проблемы: держать

Мой составителя показывает нулевую ошибку указателя, который до сих пор не понимаю, это из-за моей ошибки сценария CSV или я поместить скрипт в неправильном методе сервлета.

До сих пор вот мой 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> 

А вот мои сервлеты:

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()?

спасибо.

ответ

0

Это так испорченный человек. Я собираюсь ответить на ваши вопросы, исходя из моих предположений. Надеюсь, это то, чего вы хотите ... Итак,

Предполагая, что код сервлета, который вы предоставили, предназначен для сервлета Page_Five_Controller, тогда вы получите исключение, это int sNum = (Integer) request.getSession().getAttribute("sNum");. Это потому, что вы не установили значение sNum как атрибут для неявного объекта session.

Что бы я сделал, если бы я хотел добавить все переменные в объект сеанса из jsp, а затем перейдем к сервлету, чтобы получить эти значения из сеанса (так как ничего не меняется в вашем представлении).

Это было бы что-то подобное в 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"); 

А затем сделать петлю в сервлет и вывода данных.

Надеется, что это помогает

+0

Извините, если мой код вызвал недоразумение, но на самом деле я уже установлен эти atributes в сессионном OBJ, на других сервлет. Таким образом, это, похоже, не является источником проблемы. Если вы хотите экспортировать свои таблицы в CSV, правильно ли разместить сценарий внутри функции сервлета doPost()? Спасибо. – root

+0

Но я отредактирую свой код на этой странице, чтобы он не привел к дальнейшему недоразумению. – root

+0

это не то, что вы задаете в своем вопросе ..... – MaVRoSCy

Смежные вопросы