Java - Servlet,在整个项目中携带登录信息( session bean)

标签 java jsp session netbeans javabeans

我有一个登录 servlet,它工作正常。但我希望多个 servlet 能够访问 userID、valid 和 coachCB 值来执行不同的功能。我知道最好的方法是使用 session ,请提供一个使用我的登录 Servlet 和 ViewRegisteredCoursesServlet 从 session 中编写和调用的示例。如果一个对象(bean)存储为:

session.setAttribute("currentSessionUser", user);

如何在 servlet 中从中获取不同的值?前任。用户 ID 和教职人员CB。

HttpSession session = request.getSession();
session.getAttribute("currentSessionUser");

此外,据我了解, session 需要转发(这不是一个选项,因为根据单击的导航栏,将调用 diff servlet)。对吗?

登录Servlet:

    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 
        }

查看注册类(class)Servlet:

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:

private String id;
private String password;
private boolean facultyCB;
public boolean valid;

提前非常感谢!

最佳答案

如果您想存储 bean 并在其他 servlet 中访问它。最好的方法是将该 bean 存储在 session 对象中。

HttpSession session = request.getSession();
session.setAttribute("BEANNAMEHERE", yourBeanObjectHere);

在其他 servlet 中访问它

HttpSession session = request.getSession();
YourBeanObject myBean =  (YourBeanObjectClass) session.getAttribute("BEANNAMEHERE");

旁注 我认为在 session 中存储用户登录信息不是一个好主意,也许只是存储他的 ID 并使用该 ID 从数据库中检索他的数据。

关于Java - Servlet,在整个项目中携带登录信息( session bean),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16126709/

相关文章:

java - 访问 JSP 中的常量(没有 scriptlet)

java - Spring Mvc : getting session attributes accross different methods in the same Controller

java - switch 语句,将默认设置为较早定义的 switch case?

java - 四舍五入到 5 的倍数

java - 使用正则表达式从文本中分割单词

javascript - 在 jsp 页面中管理 &lt;iframe&gt;

java - 从 JSF(任何前端)触发 Quartz 作业 - 如何等待作业执行结束

java - 如何检查加盐和哈希密码的匹配

java - 在docker-compose中连接tomcat和mysql

java - 如何在 Java 中使用具有 session 失效的 Tomcat CSRF 保护过滤器