GlassFishServer中的java.lang.NullPointerException

GlassFishServer中的java.lang.NullPointerException,java,jdbc,web,Java,Jdbc,Web,试图使用共享连接(初始化请求时创建的连接)将记录添加到数据库中,这里我是request.getAttribute()方法,用于从RequestListener.java检索属性并将其分配给连接类型引用 下面是我的代码:RequestListener.java public class RequestListener implements ServletRequestListener { @Override public void requestDestroyed(ServletRequestEv

试图使用共享连接(初始化请求时创建的连接)将记录添加到数据库中,这里我是request.getAttribute()方法,用于从RequestListener.java检索属性并将其分配给连接类型引用

下面是我的代码:RequestListener.java

public class RequestListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
    try {
        Connection connection=(Connection) sre.getServletContext().getAttribute("conn");
        connection.close();
    } catch (SQLException ex) {
        Logger.getLogger(RequestListener.class.getName()).log(Level.SEVERE, null, ex);
    }
}

@Override
public void requestInitialized(ServletRequestEvent sre) {

        try {
            Class.forName("com.mysql.jdbc.Driver");
           Connection connection= DriverManager.getConnection("jdbc:mysql://localhost/school?user=root&password=mysql"); 
            sre.getServletContext().setAttribute("conn",connection);
        } catch (Exception ex) {
        Logger.getLogger(RequestListener.class.getName()).log(Level.SEVERE, null, ex);
    }
}
}

////// One.java(servlet)

RequestListener.java

public class RequestListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
    try {
        Connection connection=(Connection) sre.getServletContext().getAttribute("conn");
        connection.close();
    } catch (SQLException ex) {
        Logger.getLogger(RequestListener.class.getName()).log(Level.SEVERE, null, ex);
    }
}

@Override
public void requestInitialized(ServletRequestEvent sre) {

        try {
            Class.forName("com.mysql.jdbc.Driver");
           Connection connection= DriverManager.getConnection("jdbc:mysql://localhost/school?user=root&password=mysql"); 
            sre.getServletContext().setAttribute("conn",connection);
        } catch (Exception ex) {
        Logger.getLogger(RequestListener.class.getName()).log(Level.SEVERE, null, ex);
    }
}
“sre.getServletContext().setAttribute(“conn”,connection)”必须更正为sre.getServletRequest().setAttribute(“conn”,connection),并避免将请求作为“request.getRequestDispatcher(“B”).forward(请求,响应)”发送给两个servlet;
request.getRequestDispatcher(“两个”).forward(request,response);“这会导致一个非法状态异常

如果
连接
为空,那么您应该检查属性
conn
是否真的在请求中可用。的可能重复
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    try (PrintWriter out = response.getWriter()) {

        String t1=request.getParameter("text1");
        out.println("A");
         Connection connection = (Connection) request.getAttribute("conn");
  //line45 **PreparedStatement ps = connection.prepareStatement("insert into tb1 values(?)");**
        ps.setString(1, t1);
        ps.executeUpdate();
        ps.close();
        request.setAttribute("conn", connection);
        request.getRequestDispatcher("B").forward(request, response);
            request.getRequestDispatcher("Two").forward(request, response);
        } catch (SQLException ex) {
            Logger.getLogger(One.class.getName()).log(Level.SEVERE, null, ex);
        }

    }