Servlets servlet中的全局变量

Servlets servlet中的全局变量,servlets,jakarta-ee,Servlets,Jakarta Ee,我是Javaservlet的新手,我的问题是:我可以在Servlet中使用dataBaseHandler和conn变量作为全局变量吗?这会带来什么负面后果 public class AddTrailerServlet extends HttpServlet { private Connection conn; private DataBaseHandler dataBaseHandler; doGet { dataBaseHandler = new D

我是Javaservlet的新手,我的问题是:我可以在Servlet中使用dataBaseHandler和conn变量作为全局变量吗?这会带来什么负面后果

public class AddTrailerServlet extends HttpServlet {
    private Connection conn;
    private DataBaseHandler dataBaseHandler;

    doGet {
         dataBaseHandler = new DataBaseHandler();
    }
    doPost {
         dataBaseHandler = new DataBaseHandler();
    }
}

您可以创建一个返回数据库连接的util类:

public class DataBaseHandler
{
   public static Connection getConnection()
   {
      try
      {
         Class.forName(driver);
         return DriverManager.getConnection(url + dbName, username, password);
      } catch (Exception e)
      {
         System.err.println(e);
         //Or your logic to handle exception
      }
   }
}
您的代码如下所示:

public class AddTrailerServlet extends HttpServlet
{
   doGet()
   {
      try(Connection conn = DataBaseHandler.getConnection())
      {
         //Your custom code
      }
   }

   doPost()
   {
      try(Connection conn = DataBaseHandler.getConnection())
      {
         //Your custom code
      }
   }
}

有多种后果,但您可以调试和管理这些后果。还要提到这个问题——由于您是Java servlet的新手,我强烈建议不要在servlet中使用全局变量,而且绝对不要用于连接等。容器中只有一个servlet实例,因此在实际情况下,并行用户会遇到很多并发问题。