【问题标题】:why is the session.getAttribute("name") in Filter code is always null in the code below?为什么过滤器代码中的 session.getAttribute("name") 在下面的代码中总是为空?
【发布时间】:2016-04-13 13:55:20
【问题描述】:

过滤代码

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();
        }

【问题讨论】:

    标签: java jsp session servlets filter


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多