我在这一行的jsp中有错误
<a href="<%=response.encodeURL(request.getContextPath()+"/ExportQP")%>?typeFichier=xls&exportStr=<%=exportStr%>"> Export Excel </a>
我尝试通过在jsp:
执行此操作来导入类java ExportQP <%@ page import="com.export.servlet.ExportQP"%>
这是我的ExportQP类
public class ExportQP extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
public ExportQP() {
super();
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Export Excel GET");
//On récupère les patramètres
String typeFichier = request.getParameter("typeFichier");
String exportStr = request.getParameter("exportStr");
//String exportTab1[] = exportStr.split("$$");
//int nbLignes = exportTab1.length;
//Preparation de la date pour le nom du fichier
Date dateExport = new Date();
Timestamp timeStampDate = new Timestamp(dateExport.getTime());
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy-HH-mm");
String affDate = formatter.format(timeStampDate);
response.setHeader("Cache-Control", "public");
response.setHeader("Pragma", "public");
//On donne le nom du fichier
response.setHeader("Content-Disposition", "attachment; filename=\"Export"+affDate+"."+typeFichier+"\"");
//On récupère le flux de sortie
ServletOutputStream out = response.getOutputStream();
//On indique le type d'export que l'on va faire
if(typeFichier.equals("xls")){
System.out.println("Type XLS");
response.setContentType("application/vnd.ms-excel");
// On crée l'Excel Workbook et le Sheet
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Annuaire CHIELVR");
//HSSFHeader header = sheet.getHeader();
//header.setCenter("Annuaire CHIELVR header");
HSSFRow row = null;
HSSFCell cell = null;
String entreeStr = "";
//String[] exportTab2 = null;
//On récupère le nombre de lignes et on boucle dessus
StringTokenizer st = new StringTokenizer(exportStr,"$$");
//for(int i = 0; i < st.countTokens(); i++ )
int nbLignes = st.countTokens();
for(int i = 0; i < nbLignes; i++ )
{
//On creer la ligne
row = sheet.createRow(i);
//On récupère l'entrée
entreeStr = st.nextToken();
//On coupe la ligne pour obtenir les différents champs de l'entrée
StringTokenizer st2 = new StringTokenizer(entreeStr,";");
String token = "";
for(int j = 0; j < st2.countTokens(); j++ ) {
cell = row.createCell(j);
token = st2.nextToken();
if(token != null){
cell.setCellValue(token);
}else{
cell.setCellValue(" ");
}
}
}
//On écris le contenu du workbook sur le flux de sortie
wb.write(out);
out.close();
}else if(typeFichier.equals("csv")){
System.out.println("Type CSV");
String print = "";
response.setContentType("application/CSV");
StringTokenizer st = new StringTokenizer(exportStr,"$$");
int cptToken = st.countTokens();
String content = "" ;
for(int i = 0; i < cptToken; i++ ) {
print = st.nextToken();
content += print;
content += "\n";
}
out.print(content);
}
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Export Excel POST");
}
}
所以我的错误是我的jsp告诉我exportStr
无法解析为变量“。
答案 0 :(得分:0)
<%@ page import="com.export.servlet.ExportQP"%>
您是否将Servlet导入JSP? Servlet不应该导入。
Servlet通常会接收并响应来自Web客户端的请求 跨HTTP,超文本传输协议。
它们被Servlet映射名称定义,在您的情况下似乎是ExportQP
。
错误意味着你的JSP中应该有一个名为exportStr
的变量,如
<%
String exportStr="Hello World";
%>