2015-05-13 56 views
1

well 我有一個帶登錄表單的jsp頁面,我使用的是servlet,如果用戶名和密碼正確,那麼servlet會將用戶重定向到其他頁面,否則它會重定向他到登錄頁面,再次如何從servlet重定向到jsp頁面

當我登錄使用正確的用戶名和密碼,我正在重定向完美的reservation.jsp但是當我把形式錯誤的用戶名或密碼,當我點擊提交按鈕的頁面成爲空白

這裏是servlet

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.*; 

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; 

import com.mysql.jdbc.PreparedStatement; 

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




public LogServlet() { 
    super(); 

} 



protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    response.setContentType("text/html"); 


    String name=request.getParameter("name"); 
    String password=request.getParameter("password"); 

    PreparedStatement ps = null; 
    ResultSet rs = null; 

    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/log", 
       "root",""); 
     ps = (PreparedStatement) conn.prepareStatement("select nom_client,username,password from client where username = ? and password = ?"); 

     ps.setString(1, name); 
     ps.setString(2, password); 
     rs=ps.executeQuery(); 



    try { 
     while(rs.next()){ 
     if(password.equals(rs.getString("password")) && name.equals(rs.getString("username"))){ 

     HttpSession session=request.getSession(); 
     session.setAttribute("name",name); 
     PrintWriter out=response.getWriter(); 
     request.getRequestDispatcher("reservation.jsp").include(request, response); 
     } 
     else{ 
      response.sendRedirect("/login.jsp"); 

     }} 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 

    } 
    System.out.close(); 


    } 
    catch(Exception e){e.printStackTrace();} 


} 
} 
+0

檢查這一點,如果這可能對你有幫助 http://stackoverflow.com/questions/18576159/automatically-redirect-from-one-jsp-page-to-another –

+0

此外,你不應該巢嘗試catch塊 –

回答

1

使用此。

request.getRequestDispatcher("/login.jsp").forward(request,response); 

正如你已經使用

request.getRequestDispatcher("reservation.jsp").include(request, response); 

成功登錄,並進行轉發,併爲它工作,爲什麼不轉發失敗也這樣了。?

這意味着使用

request.getRequestDispatcher("/login.jsp").include(request, response); 
+0

我已經嘗試過,但仍然給我空白頁 – hichamx

+0

請注意您的login.jsp位置的位置。看看它是否在正確的位置。 – Saif

+0

我有所有的jsp文件在相同的位置..我已經在另一個projet測試你的建議,它完美的作品,但沒有與那一 – hichamx

0
request.getRequestDispatcher("login.jsp").include(request, response); 

具有u嘗試了上述中的其他部分的代碼? 我認爲它應該工作

+0

我已經試過了,但還是給了我空白頁 – hichamx

1

使用request.getContextPath(),它會將您重定向到登錄頁面。

response.sendRedirect(request.getContextPath()+"/login.jsp"); 

,如果你是要達到在這種情況下,你的登錄頁面,通過requestresponse對象JSP頁面。

request.getRequestDispatcher(request.getContextPath()+"/login.jsp").forward(request,response); 
+0

我已經試過了,但還是給了我空白頁 – hichamx

0

問題是response.sendRedirect(...)不會預先綁定資源(jsp)的上下文路徑。 在兩種情況下嘗試使用request.getRequestDispatcher(...)

+0

我已經嘗試過,但仍然給我空白頁 – hichamx

+0

哪些網址你重定向到? –

+0

我在瀏覽器中根本沒有重定向 a有servlet的名稱。但頁面爲空 – hichamx

0

這個問題可能是在這裏:

response.sendRedirect是( 「/ login.jsp的」);

這意味着,在所述重定向響應的位置標頭,你將有:

http://localhost:8080/login.jsp

如果它更改爲:

response.sendRedirect是( 「login.jsp的」);

比其相對於你的webabb上下文路徑:

http://localhost:8080/app/login.jsp

嘗試使用螢火蟲或類似和跟蹤下來的請求/響應,你應該趕快找出來。並確保jsp文件在層次結構中是預期的。

希望這有助於

0

而不是給 response.sendRedirect是(「\登錄。JSP 「); 使用response.sendRedirect是(」/爲yourprojectname /「); 並在web.xml歡迎文件設置爲的login.jsp歡迎文件

-1

添加此

response.sendRedirect("/yourprojectname/"); 

,並設置登錄.JSP爲歡迎文件在web.xml

+0

response.sendRedirect(「yourJsp Page」); –

-1

來自數據庫的響應是空的,所以我不得不這種情況下,添加到類(通過if/else條件)。

+0

請不要添加「謝謝」作爲答案。相反,** [接受答案](http://stackoverflow.com/help/accepted-answer)**,你發現最有用的。 - [來自評論](/評論/低質量帖/ 12343045) – rghome

+0

即使解決方案不是在那些答案... – hichamx

+0

在這種情況下,只要發佈答案,如果你認爲這將有助於他人。 – rghome