2016-04-16 9 views
-1

Javaサーブレットを使用してExcelファイルをエクスポートしようとしているページを実行しています。構造体の概要: downloadreports.jspは、ボタンがファイルを呼び出す場所です。このボタンはReportsServlet.javaと呼ばれ、ダウンロードするだけで、ExcelCreatorBanned.javaが呼び出され、データベースが呼び出されてExcelファイルが作成されます。Javaサーブレット経由でExcelファイルとしてMySQLをエクスポートすると404エラーが発生する

問題は、1)完全なサイトを実行しているときにdownloadreports.jspをクリックしようとすると、ページを表示する代わりに自動的にReportsServletに行きます(/ Reportsの404エラーを表示します)。2)これを数日間しゃべっていて、うまくいきません。私が間違っていることを確認していないが、どんな助けも非常に高く評価されるだろう!

downloadreports.jsp

<div align="center"> 
<form id="downloadBanned" action="../Reports" method="post">` 
<input class="btn btn-lg btn-red" type="submit" value="Download Banned Student List"><br>   ` 
</form>` 

ReportsServlet.java

package controllers; 

import java.io.IOException; 
import java.io.OutputStream; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.ServletOutputStream; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

import helpers.ExcelCreatorBanned; 

/** 
* Servlet implementation class ReportsServlet 
*/ 
@WebServlet({ "/ReportsServlet", "/Reports" }) 
    public class ReportsServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    private HttpSession session; 
    private String url; 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public ReportsServlet() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    doPost(request, response); 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    this.session = request.getSession(false); 

    ExcelCreatorBanned ecb = new ExcelCreatorBanned(); 
    ecb.downloadExcel(); 

    url = "admin/downloadreports.jsp"; 

    RequestDispatcher dispatcher = request.getRequestDispatcher(url); 
    dispatcher.forward(request, response); 

} 

private Object getOutputStream() { 
    // TODO Auto-generated method stub 
    return null; 
} 

} 

ExcelCreatorBanned.java(DbConnect.javaへの参照がサーバーに資格証明書であり、それは上で動作するので、それは間違いなく動作します他のページ)

package helpers; 

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.FileWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 

import javax.servlet.ServletOutputStream; 


import model.DbConnect; 

import java.sql.Statement; 

public class ExcelCreatorBanned { 

     public String downloadExcel() { //ServletOutputStream out){ 

     String outFileName = "BannedStudents.csv"; 
     int nRow = 1; 
     String strQuery = null; 
     Connection con = null; 

     try { 

      // Getting connection here for mySQL database 
       Class.forName("com.mysql.jdbc.Driver").newInstance(); 
       con = DbConnect.devCredentials(); 
       System.out.println(con); 

       if(con==null) 
        return "Connection Failed"; 

       // Database Query    
       strQuery = "select * from banned"; 
       Statement stmt=con.createStatement(); 

       ResultSet rs=stmt.executeQuery(strQuery); 

       File file = new File(outFileName); 
       FileWriter fstream = new FileWriter(file); 
       BufferedWriter out = new BufferedWriter(fstream); 

       //Get Titles 
       String titleLine = "BannedID" + "," + "UserID" + "," + "AdminID"   
        + "," + "Ban Start Date" + "," + 
         "Ban End Date" + "," + "Penalty Count" + "," + 
        "Description" + "," + "Status" + "\n"; 
       out.write(titleLine); 

       //stmt = conn.createStatement(); 


       while (rs.next()) { 
        int BannedId = rs.getInt(1); 
        int UserID = rs.getInt(2); 
        int AdminID = rs.getInt(3); 
        String BanStartDate = rs.getString(4); 
        String BanEndDate = rs.getString(5); 
        int PenaltyCount = rs.getInt(6); 
        String Description = rs.getString(7);     
        String Status = rs.getString(8); 

        String outline = BannedId + "," + UserID + "," + AdminID + 
         "," + BanStartDate + "," + 
         BanEndDate + "," + PenaltyCount + "," + Description + 
         "," + Status + "\n"; 

        out.write(outline); 

       } //end of while 
       out.close(); 

     } catch (Exception e) { 
      System.err.println("Got an exception!"); 
      System.err.println(e.getMessage()); 
     } 
     return outFileName; 
} 
} 

答えて

0

私はの外観が好きではありません行の属性

<form id="downloadBanned" action="../Reports" method="post"> 

は、代わりに次のことを試してみてください。

<form id="downloadBanned" action="${pageContext.request.contextPath}/Reports" method="post"> 

${pageContext.request.contextPath}が何であるかについての議論のためのthis questionを参照してください。

関連する問題