2012-10-06 82 views
0

大家好我已經鍵入了一個頁面查詢數據庫然後輸入的東西到數據庫中,但是當我去加載servlet/jsp頁面它回來空白,我不確定發生了什麼或爲什麼?我在eclipse中編寫代碼,看了一下控制檯並沒有打印出任何東西,我想我的代碼有問題,但我看不到問題。Servlets和JSP空白

這裏是我的servlet

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
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; 

/** 
* Servlet implementation class TutorAssign 
*/ 
@WebServlet("/TutorAssign") 
public class TutorAssign extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

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

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

    private void sendBack(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     HttpSession session = request.getSession(true); 
      //Set data you want to send back to the request (will be forwarded to the page) 
      //Can set string, int, list, array etc. 

     String sql = "SELECT l.id,s.name,l.day,l.time,l.room" + 
        " FROM subject s, lab l " + 
        " WHERE s.user_id="+(Integer)session.getAttribute("id"); 

      try{ 
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wae","root",""); 
      System.out.println("got boobs"); 
      System.out.println(session.getAttribute("id")); 

       Statement stmt = con.createStatement(); 
       ResultSet res = stmt.executeQuery(sql); 
       System.out.println(res); 
       ArrayList<String> list1 = new ArrayList<String>(); 
       ArrayList<String> list2 = new ArrayList<String>(); 
       if (res.next()){ 
        do{ 
         list1.add(res.getString(1)); 
         list2.add(res.getString(2)+" "+res.getString(3)+" "+res.getString(4)+" "+res.getString(5)); 


        }while(res.next()); 
       System.out.println("Outside"); 
       String[] arr1 = list1.toArray(new String[list1.size()]); 
       String[] arr2 = list2.toArray(new String[list2.size()]); 
       System.out.println(list1); 
       request.setAttribute("res1", arr1); 
       request.setAttribute("res2", arr2); 

       } 



      }catch (SQLException e) { 
      } 
      catch (Exception e) { 
      } 


      //Decides what page to send the request data to 
      RequestDispatcher view = request.getRequestDispatcher("TutorAssign.jsp"); 
      //Forward to the page and pass the request and response information 
      view.forward(request, response); 
    } 

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


      int user_id = Integer.parseInt(request.getParameter("id")); 
      int lab_id = 0; 

      String message = null; 
      try { 
       Class.forName("com.mysql.jdbc.Driver"); 
       Connection con = 
       DriverManager.getConnection("jdbc:mysql://localhost:3306/wae","root",""); 
      System.out.println("got connection"); 
      System.out.println(user_id); 
      Statement s = con.createStatement(); 

      String sql = "INSERT INTO user_lab" + 
         " (user_id, lab_id)" + 
         " VALUES" + 
         " ('" + user_id + "'," + 
         " '" + lab_id + "')"; 

       System.out.println(sql); 
       int i = s.executeUpdate(sql); 
       if (i==1) { 
       message = "Successfully assigned a tutor."; 
       response.sendRedirect("Lecturer_labs"); 
       } 

       s.close(); 
       con.close(); 
      } 
      catch (SQLException e) { 
       message = "Error." + e.toString(); 
       boolean error = true; 
      } 
      catch (Exception e) { 
       message = "Error." + e.toString(); 
       boolean error = true; 
      } 
      if (message!=null) { 
       PrintWriter out = response.getWriter(); 
       out.println("<B>" + message + "</B><BR>"); 
       out.println("<HR><BR>"); 
      } 

      } 
// TODO Auto-generated method stub 


} 
+0

你是如何加載你的servlet? –

回答

1

我注意到,您的doGet方法尚未實施nted。 我會假設你sendBack代碼不會被調用

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    sendBack(request,response); 
} 
0

你有幾個空的catch塊。這意味着如果程序遇到一些問題,錯誤將被悄悄吞噬,並且您不知道執行了哪些代碼以及跳過了哪些代碼,所以結果是未知的。至少從這個問題日誌錯誤在catch塊中,像這樣的(非常簡單的例子,使用java.util.logging

} catch (SQLException e) { 
    logger.log(Level.INFO,"SQL Error encountered",e);   
} catch (Exception e) { 
    logger.log(Level.INFO,"Other error encountered",e);   
} 

開始通過讓你的錯誤處理權,並研究錯誤的程序遇到。

除了作爲別人指出你的doGet未實現 - 。因此,如果調用的頁面與GET因爲doGet是空的也不會做任何它應該做的事情上POST雖然