所以我试图让我的JSP从表中导出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>
这是我的servlets:
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 :(得分: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中执行循环并输出数据。
希望这有帮助