为什么Filter代码中的session.getAttribute(“name”)在下面的代码中始终为null?

时间:2016-04-13 13:55:20

标签: java jsp session servlets filter

过滤代码

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req=(HttpServletRequest)request;
        HttpSession session=req.getSession();
        String name=(String) session.getAttribute("name");
        System.out.println(name);

    if(session == null || session.getAttribute("name") == null)
            request.getRequestDispatcher("/RedLogin.html").forward(request, response);
            else
        chain.doFilter(request, response);
    }

检查登录的Servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String username = request.getParameter("uname");
        String password = request.getParameter("pname");
        Authenticate authenticate = new Authenticate();

        try {
            if (authenticate.authenticator(username, password)) {

                HttpSession session = request.getSession(true);
                session.setAttribute("name", username);

                RequestDispatcher dis =   request.getRequestDispatcher("/welcome.jsp");
                dis.forward(request, response);

            } else {
                response.sendRedirect("RedLogin.html");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

1 个答案:

答案 0 :(得分:0)

这可能是因为过滤器的映射是针对任何url的,包括servlet,因此它永远不会进入servlet代码,而session.getAttribute()

相关问题