如何从随附的一个获取Servlet请求属性



我在1 Servlet中具有以下代码:

dispatcher = request.getRequestDispatcher("LoginModel");
dispatcher.include(request, response);
if ((boolean) request.getAttribute("Successful")) {}

和第二个servlet:

request.setAttribute("Successful", true);

但是,我一直在request.getAttribute("Successful")

上获得NullPointerException

您的代码这样做的唯一原因是因为您的LoginModel Servlet没有被调用(顺便说一句,您是否调试了它要检查?)。

NullPointerException之所以发生,是因为您正在尝试将null引用到boolean(安全检查可以解决此问题,而不是呼叫本身)。

请参见一个示例,该示例正常工作:

servlet 1:

@WebServlet(urlPatterns = "/serv")
public class Serv extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        RequestDispatcher dispatcher = request.getRequestDispatcher("serv2");
        dispatcher.include(request, response);
        if (request.getAttribute("Successful") != null
                && (boolean) request.getAttribute("Successful")) {
            System.out.println("Success!");
        } else {
            System.out.println("No success!");
        }
    }
}

servlet 2:

@WebServlet(urlPatterns = "/serv2")
public class Serv2 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setAttribute("Successful", true);
    }
}

最终结果:

Success!

最新更新