Java 如何从包含的servlet请求属性中获取servlet请求属性?

Java 如何从包含的servlet请求属性中获取servlet请求属性?,java,jsp,servlets,nullpointerexception,Java,Jsp,Servlets,Nullpointerexception,我在一个servlet中有以下代码: dispatcher = request.getRequestDispatcher("LoginModel"); dispatcher.include(request, response); if ((boolean) request.getAttribute("Successful")) {} 在第二个servlet中: request.setAttribute("Successful", true); 但是,我在请求中不断收到NullPointerE

我在一个servlet中有以下代码:

dispatcher = request.getRequestDispatcher("LoginModel");
dispatcher.include(request, response);
if ((boolean) request.getAttribute("Successful")) {}
在第二个servlet中:

request.setAttribute("Successful", true);

但是,我在
请求中不断收到
NullPointerException
。getAttribute(“成功”)

代码执行此操作的唯一原因是没有调用您的
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!");
        }
    }
}
@WebServlet(urlPatterns = "/serv2")
public class Serv2 extends HttpServlet {

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

        request.setAttribute("Successful", true);
    }
}
Servlet 2:

@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!");
        }
    }
}
@WebServlet(urlPatterns = "/serv2")
public class Serv2 extends HttpServlet {

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

        request.setAttribute("Successful", true);
    }
}
最终结果:

Success!

第二个servlet的url映射是否为
LoginModel
?@Arvind yes it isHi,似乎是第二个servlet中的一个捕获导致了NPE,现在刚刚解决了捕获发生的原因!