1

在 RegServlet 类中,我有一个doGet()覆盖该方法的doStuff()方法。doStuff()方法从 HTML 注册表单中获取用户输入,然后连接到数据库,然后将用户输入存储到数据库中。

这是doStuff()我的 RegServlet 类中的方法:

public void doStuff(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, InstantiationException, IllegalAccessException, SQLException {
    String userName = request.getParameter("userName");
    ...
    String email = request.getParameter("email");

    if(!userName.isEmpty()&&!passWord.isEmpty()) {
        request.setAttribute("userName", userName);
        ...
        request.setAttribute("email", email);

        //connect to DB
        toDB.createConnection();

        //insert information to DB
        toDB.insertNewUser(userName, passWord, lastName, firstName, age, sex, email);
        RequestDispatcher view = request.getRequestDispatcher("login.jsp");
        view.forward(request, response);            
    } else {
        RequestDispatcher view = request.getRequestDispatcher("index.jsp");
        view.forward(request, response);
    }

如果在正确输入所有内容后单击注册按钮,它会引导我进入 login.jsp 页面。我现在正在尝试编写登录机制,以便用户(拥有存储在数据库中的用户名和密码)登录并搜索和添加/删除课程。

我很难过,因为我不知道该怎么做。

如何隔离用户注册和身份验证?我应该为会话管理创建另一个类还是只在这个 RegServlet 类中创建另一个方法?

4

1 回答 1

1

实现您自己的 HTTPServletFilter 来检查用户是否经过身份验证:

public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {
    if ("a user is authenticated") {
        filterChain.doFilter(req, res);
    } else {
        // authenticate a user
    }
}

该链接显示了 HTTPServletFilter 的基本知识: http ://www.oracle.com/technetwork/java/filters-137243.html#70176

于 2013-04-16T07:25:04.317 回答