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



我正在尝试用会话做一些事情。我有一个与MySQL数据库配合良好的登录表单。现在我想有一个设置的会话,它说"你好B85417"(我的用户名)。每次登录时,我都会收到以下消息:

您输入了正确的信息 你好。

菅谚有人看到这里出了什么问题吗?来自麦德斯的最佳问候索引.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>

从登录表单中,您将进入此页面:

用户登录.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); 
            }
       }
    }

它对我来说工作正常。

你应该使用

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

在JSP中

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

或在 LoggedInServlet 中我们必须将请求转发或包含到另一个 JSP,而不是重定向。如果您为此使用请求调度程序,根据我的知识,这将是最好的。

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

那么只有 http 请求,你也可以从你的 LoginServlet 进入另一个 jsp。

或您只能在 LoginServlet 中为会话设置这些值,如下所示:

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

确保在 ServletClass 中导入javax.servlet.http.HttpSession

相关内容

  • 没有找到相关文章

最新更新