使用 jsp 导出到 excel 时得到不同的随机数
Get different random numbers when using jsp export to excel
在jsp上生成10个随机数后,点击'export to excel'按钮。生成的 excel 显示 10 个不同的数字。
random numbers on jsp page
为什么会这样?以及如何解决这个问题?
jsp 文件
的代码如下所示:
<%
String exportToExcel = request.getParameter("exportToExcel");
if (exportToExcel != null
&& exportToExcel.toString().equalsIgnoreCase("YES")) {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "inline; filename="
+ "excel.xls");
}
for(Integer i=0;i<10;i++){
String randomNum = (RandomStringUtils.random(1, false, true));
%>
<%=randomNum%>
<br/>
<%
}
if (exportToExcel == null) {
%>
<br/>
<a href="./test/randomNum.jsp?exportToExcel=YES"><button>Export to Excel</button></a>
<%
}
%>
那是因为您每次都发出新的请求,并且每次都会生成一组新的号码。
请求 1:生成数字
然后您单击 link 并发出另一个请求,生成一组新的数字,您在 excel sheet 上看到。
为了能够导出第一个请求编号,您必须将它们保存在您的会话中并检索它们:
考虑这个示例代码:
<%@page import="java.util.Random"%>
<%@page import="java.util.ArrayList"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
String exportToExcel = request.getParameter("exportToExcel");
if (exportToExcel != null
&& exportToExcel.toString().equalsIgnoreCase("YES")) {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "inline; filename="
+ "excel.xls");
ArrayList<Integer> numbers = (ArrayList<Integer>)session.getAttribute("NUMBERS");
for(Integer x:numbers){
out.print(x);
out.print("<br/>");
}
} else {
ArrayList<Integer> numbers = new ArrayList<Integer>();
Random rand = new Random();
for (Integer i = 0; i < 10; i++) {
String randomNum = String.valueOf(rand.nextInt());
numbers.add(Integer.parseInt(randomNum));
%>
<%=randomNum%>
<br/>
<%
}
if (exportToExcel == null) {
%>
<br/>
<a href="randomNum.jsp?exportToExcel=YES"><button>Export to Excel</button></a>
<% }
//store arraylist in session
session.setAttribute("NUMBERS", numbers);
}
%>
</body>
</html>
并将输出:
希望这对您有所帮助...
在jsp上生成10个随机数后,点击'export to excel'按钮。生成的 excel 显示 10 个不同的数字。 random numbers on jsp page
为什么会这样?以及如何解决这个问题?
jsp 文件
的代码如下所示:<%
String exportToExcel = request.getParameter("exportToExcel");
if (exportToExcel != null
&& exportToExcel.toString().equalsIgnoreCase("YES")) {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "inline; filename="
+ "excel.xls");
}
for(Integer i=0;i<10;i++){
String randomNum = (RandomStringUtils.random(1, false, true));
%>
<%=randomNum%>
<br/>
<%
}
if (exportToExcel == null) {
%>
<br/>
<a href="./test/randomNum.jsp?exportToExcel=YES"><button>Export to Excel</button></a>
<%
}
%>
那是因为您每次都发出新的请求,并且每次都会生成一组新的号码。
请求 1:生成数字 然后您单击 link 并发出另一个请求,生成一组新的数字,您在 excel sheet 上看到。
为了能够导出第一个请求编号,您必须将它们保存在您的会话中并检索它们:
考虑这个示例代码:
<%@page import="java.util.Random"%>
<%@page import="java.util.ArrayList"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
String exportToExcel = request.getParameter("exportToExcel");
if (exportToExcel != null
&& exportToExcel.toString().equalsIgnoreCase("YES")) {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "inline; filename="
+ "excel.xls");
ArrayList<Integer> numbers = (ArrayList<Integer>)session.getAttribute("NUMBERS");
for(Integer x:numbers){
out.print(x);
out.print("<br/>");
}
} else {
ArrayList<Integer> numbers = new ArrayList<Integer>();
Random rand = new Random();
for (Integer i = 0; i < 10; i++) {
String randomNum = String.valueOf(rand.nextInt());
numbers.add(Integer.parseInt(randomNum));
%>
<%=randomNum%>
<br/>
<%
}
if (exportToExcel == null) {
%>
<br/>
<a href="randomNum.jsp?exportToExcel=YES"><button>Export to Excel</button></a>
<% }
//store arraylist in session
session.setAttribute("NUMBERS", numbers);
}
%>
</body>
</html>
并将输出:
希望这对您有所帮助...