我正在尝试用会话做点什么。我有一个适用于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);
}
}
}
答案 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
。