【问题标题】:Global variables in servlet [duplicate]servlet中的全局变量[重复]
【发布时间】:2020-03-08 17:29:45
【问题描述】:

我是 Java servlet 的新手,我的问题是:我可以在 Servlet 中使用 dataBaseHandler 和 conn 变量作为全局变量吗?这样做会产生什么负面影响?

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

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

【问题讨论】:

  • 有多种后果,但您可以调试和管理它。也可以参考这个问题 - stackoverflow.com/q/55023282/8098322
  • 由于您是 Java servlet 的新手,我强烈建议 NOT 在 servlet 中使用全局变量,绝对不要用于 Connection 等。只有 容器中的一个 servlet 实例,因此在与并行用户的实际情况下,您会遇到很多并发问题。

标签: servlets jakarta-ee


【解决方案1】:

您可以创建一个返回数据库连接的 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
      }
   }
}

【讨论】:

    猜你喜欢
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多