当我尝试调用用户名时为null

时间:2014-02-27 11:28:06

标签: login null

我正在尝试用会话做点什么。我有一个适用于MySQL数据库的登录表单。现在我想设置一个Session,其中显示“Hello B85417”(我的用户名)。每次我登录时都会收到此消息:

你输入正确的信息Hellonull。

侃有人看到这里有什么问题吗?来自Mads的最好的问候 index.jsp的:

<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如下所示:

    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); 
            }
       }
    }

1 个答案:

答案 0 :(得分:0)

这对我来说很好。

你应该使用

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

中的jsp

请求范围将在LoginServlet中结束,因此它不适用于下一个jsp。如果从index.jsp直接调用userLogged.jsp,那么它可以正常工作。

LoggedInServlet中的OR 我们必须将请求转发或包含到另一个jsp而不是重定向。 如果您使用请求Dispatchers,那么根据我的知识,这将是最好的。

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