我正在尝试用会话做一些事情。我有一个与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
。