2015-03-25 100 views
1

的Login.jsp無法獲取會話屬性(新會話正在JSP中創建)爲什麼?

<% 
     /* Getting Database connection*/ 
     Connection connection = ConnectionFactory.getInstance() 
       .getConnection(); 
     if (connection == null) { 
      System.out.print("Error in getting DB connection"); 
     } 

     /* requesting user login credentials*/ 
     String login_name = request.getParameter("username"); 
     String login_pass = request.getParameter("password"); 

     if ((login_name != null && login_name.trim() != "") 
       || (login_pass != null && login_pass.trim() != "")) { 

      String query = "SELECT USER_NAME,PASSWORD from MEMBERS where USER_NAME='" 
        + login_name + "'"; 
      PreparedStatement ps = connection.prepareStatement(query); 
      ResultSet rs = ps.executeQuery(); 
      String USER_NAME = null; 
      String PASSWORD = null; 
      while (rs.next()) { 
       USER_NAME = rs.getString("USER_NAME"); 
       PASSWORD = rs.getString("PASSWORD"); 
      } 

      //verifying with database 
      if ((USER_NAME.equals(login_name) && PASSWORD 
        .equals(login_pass))) { 
       //starting session 
       session.setAttribute("UserName", USER_NAME); 

       System.out.println(session.getCreationTime()); 
       out.print("<head> <meta http-equiv=\"Refresh\" content=\"0;url=./home.jsp\" > </head>"); 

      } else { 
       out.println("Login Failed"); 
      } 
     } else { 
      out.println("Please Enter Your Credentials"); 
      %> 
    <jsp:include page="./login.html"></jsp:include> 
    <% 

     } 
%> 

回到Home.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Home</title> 
</head> 
<body> 
    Hi, <%= session.getAttribute("UserName") %> 


<% System.out.println(session.getCreationTime());%> 
</body> 
</html> 

回到Home.jsp顯示Hi,null爲什麼呢? 我明白home .jsp正在創建新會話,但如何利用現有會話?任何機構都可以幫助解決這個問題嗎?當JSP送達創建

<%@ page session="false" %> 

這將防止從會話:

+1

http://stackoverflow.com/questions/5515729/why-set-a-jsp-page-session-false-directive – underdog 2015-03-25 07:07:58

+1

我得到的的out.print(」 「); 導致問題 – 2015-03-25 07:15:37

回答

0

嘗試添加該聲明到您的網頁。除此之外,我相信它不是關於會議,而是關於USER_NAME的價值。 嘗試調試login.jsp中被設置USER_NAME的價值

+0

如果您有一個頁面不需要參與會話,那麼我們需要將<%@ page session =「false」%> – 2015-03-25 07:13:56

0

我沒有看到會議聲明, 嘗試獲得&使用要求如下設置會話:

的Login.jsp

request.getSession().setAttribute("name", yourStringObject); 

Home.jsp

yourStringObject = (String) request.getSession().getAttribute("name"); 

並且不要忘記從會話中刪除對象:

request.getSession().removeAttribute("name");