简体   繁体   English

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

[英]why is the session.getAttribute(“name”) in Filter code is always null in the code below?

Filter code 过滤代码

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 to check login: 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();
        }

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM