2014-02-27 30 views
0

我正在嘗試使用會話進行操作。我有一個與MySQL數據庫很好地結合的登錄表單。現在我想要設置一個Session,在其中顯示「Hello B85417」(我的用戶名)。每次我登錄時,我都會收到一條消息:當我嘗試撥打用戶名時爲空

您輸入正確的信息Hellonull。

有人看到這裏有什麼問題嗎?

<form action="LoginServlet"> 

      Please enter your username   
      <input type="text" name="un"/><br>   

      Please enter your password 
      <input type="text" name="pw"/> 

      <input type="submit" value="submit">    
</form> 

從你來到這個頁面中的登錄表單:

userLogged.jsp:

<body> 

    Hello <%= session.getAttribute("currentSessionUser") %> 

該servlet誰配置從的Mads index.jsp的問候登錄看起來像這樣:

package ExamplePackage; 

import java.io.IOException; 

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



public class LoginServlet extends HttpServlet { 

    public void doGet(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, java.io.IOException { 

     try {  

      UserBean user = new UserBean(); 
      user.setUserName(request.getParameter("un")); 
      user.setPassword(request.getParameter("pw")); 

      user = UserDAO.login(user); 

     if (user.isValid()) { 

      HttpSession session = request.getSession(true);  
      session.setAttribute("currentSessionUser",user); 
      response.sendRedirect("userLogged.jsp"); //logged-in page 
      RequestDispatcher rd = request.getRequestDispatcher("PersonalSite.jsp"); 
      rd.include(request,response); 
     } 

     else 
      response.sendRedirect("invalidLogin.jsp"); //error page 
     } 


      catch (Throwable theException) { 
       System.out.println(theException); 
      } 
     } 
    } 

回答

0

它對我來說工作正常。

你應該在JSP中使用

<%= session.getAttribute("currentSessionUser");%> 

請求範圍將結束在LoginServlet所以它不會提供給下一個JSP。如果你直接從index.jsp調用userLogged.jsp,那麼它工作正常。

或者在LoggedInServlet 中,我們必須將請求轉發或包含到另一個jsp,而不是重定向。 如果您使用請求調度程序,那麼根據我的知識它將是最好的。

RequestDispatcher rd = request.getRequestDispatcher("your_Jsp_name.jsp"); 
    rd.include(request,response); 

然後只有http請求你可以從你的LoginServlet進入另一個jsp。

OR 你可以按照如下的LoginServlet只設置這些值會話:

HttpSession session = request.getSession(); 
session.setAttribute("Your_KEY","Your_Value"); 

確保在ServletClass進口javax.servlet.http.HttpSession

+0

你好。非常感謝您的回答。當我把在: \t \t <%@頁面進口= 「ExamplePackage.LoginServlet」 %> \t你好<%= session.getAttribute( 「currentSessionUser」)%> 在個人網站 我在我的瀏覽器中獲取: 「Hello [email protected]」 你知道我爲什麼這麼做嗎? – McDuck4

+0

以及userLogged.jsp – McDuck4

+0

注意:我只是使用新信息編輯了servlet和JSP。但我仍然收到消息「Hello ExamplePackage」 – McDuck4

相關問題