2015-03-25 92 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");