Java-Servlet,在整个项目中携带登录信息(会话bean)
我有一个登录servlet,它工作正常。但是我希望多个servlet能够访问userID、valid和facultyCB值来执行不同的功能。我知道最好的方法是使用会话,请提供一个使用我的登录Servlet和ViewRegisteredCourseServlet在会话中编写和调用的示例。如果objectbean存储在以下位置:Java-Servlet,在整个项目中携带登录信息(会话bean),java,jsp,session,netbeans,javabeans,Java,Jsp,Session,Netbeans,Javabeans,我有一个登录servlet,它工作正常。但是我希望多个servlet能够访问userID、valid和facultyCB值来执行不同的功能。我知道最好的方法是使用会话,请提供一个使用我的登录Servlet和ViewRegisteredCourseServlet在会话中编写和调用的示例。如果objectbean存储在以下位置: session.setAttribute("currentSessionUser", user); 在servlet中如何从中获得不同的值?例如userId和facult
session.setAttribute("currentSessionUser", user);
在servlet中如何从中获得不同的值?例如userId和facultyCB
HttpSession session = request.getSession();
session.getAttribute("currentSessionUser");
另外,据我所知,会话需要转发一些东西,这不是一个选项,因为根据单击哪个导航栏,会调用一个diff servlet。对吗
LoginServlet:
LoginBean user = new LoginBean();
try {
String checkBox = request.getParameter("facultyCB");
user.setID(request.getParameter("id"));
user.setPassword(request.getParameter("password"));
if (checkBox != null) {
user.setFacultyCB(true);
} else {
user.setFacultyCB(false);
}
user = LoginDAO.login(user);
if (user.isValid()) {
HttpSession session = request.getSession(true);
if (checkBox != null) {
user.setFacultyCB(true);
} else {
user.setFacultyCB(false);
}
session.setAttribute("currentSessionUser", user);
response.sendRedirect("success_login.jsp"); //logged-in page
} else {
response.sendRedirect("invalid_login.jsp"); //error page
}
ViewRegisteredCourseServlet:
String userID = "100000001";
//Created code to determine term based on course dates
String year = "2012";
String term = "FALL";
try {
List<RegisteredCoursesBean> registeredCoursesArray = ViewRegisteredCoursesDAO.viewRegisteredCourses(userID, year, term);
request.setAttribute("registeredCoursesBean", registeredCoursesArray);
request.getRequestDispatcher("registered_courses.jsp").forward(request, response);
} catch (Throwable theException) {
System.out.println(theException);
}
非常感谢 如果您想在中存储bean并在其他servlet中访问它。最好的方法是将bean存储在会话对象中
HttpSession session = request.getSession();
session.setAttribute("BEANNAMEHERE", yourBeanObjectHere);
在其他servlet中访问它
HttpSession session = request.getSession();
YourBeanObject myBean = (YourBeanObjectClass) session.getAttribute("BEANNAMEHERE");
旁注
我认为在会话中存储用户的登录信息不是一个好主意,也许只是存储他的ID并使用该ID从数据库中检索他的数据。我想这是我自己得到的。我只需要分别传递我想要的3个值。有没有办法将bean传递到会话中,然后在另一个servlet中获取值?
HttpSession session = request.getSession();
YourBeanObject myBean = (YourBeanObjectClass) session.getAttribute("BEANNAMEHERE");