【问题标题】:Unable to get session attribute (New session is getting created in JSP ) why?无法获取会话属性(正在 JSP 中创建新会话)为什么?
【发布时间】:2018-05-16 14:56:35
【问题描述】:

登录.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 正在创建新会话,但是如何利用现有会话?任何机构可以帮助解决这个问题吗?

【问题讨论】:

标签: java html jsp session


【解决方案1】:

尝试将此声明添加到您的页面:

<%@ page session="false" %>

这将防止在提供 JSP 时创建会话。此外,我认为这与会话无关,而与正在设置的 USER_NAME 的值有关。 尝试调试在 login.jsp 中设置的 USER_NAME 的值

【讨论】:

  • 如果您的页面不需要参与会话,那么我们需要放置
【解决方案2】:

我没有看到会话声明, 尝试使用请求获取和设置会话,如下所示:

登录.jsp

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

Home.jsp

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

别忘了从会话中移除对象:

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

【讨论】:

    【解决方案3】:

    先做

    session=request.getSession();
    

    然后从会话中设置或获取属性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 2017-09-14
      • 2019-10-12
      • 2020-04-18
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多