据我所知,为了编写Thread-Safe servlet,最简单的方法之一是在本地声明所有变量。
当我的程序调用doPost时,它会创建一个数据库实例,并将其称为db。我想将该实例传递给doGet方法,但不必全局声明db。有什么方法可以做到吗?
答案 0 :(得分:1)
我建议您使用引用DataSource对象的类变量,您可以在doGet或doPost方法中从中获取与数据库的新连接。这是一种安全的方式。
但为了更好地维护代码,您应该阅读JPA
答案 1 :(得分:1)
您可能知道,在不同的情况下(当浏览器或HTTP客户端分别执行GET或POST HTTP请求时)调用doGet()和doPost()。
听起来您的应用程序在这两个请求之间具有共同的功能。我的建议是将您的共享功能抽象到servlet中的另一个方法(或多个方法),doGet()和doPost()都可以调用。
或者,如果共享所有功能,则可以改为实现service()方法,servlet容器将为所有请求类型(而不是doGet()或doPost())调用该方法。