如何在Servlet中的doGet和doPost方法之间传递局部变量?

时间:2012-03-18 14:25:04

标签: java multithreading servlets

据我所知,为了编写Thread-Safe servlet,最简单的方法之一是在本地声明所有变量。

当我的程序调用doPost时,它会创建一个数据库实例,并将其称为db。我想将该实例传递给doGet方法,但不必全局声明db。有什么方法可以做到吗?

2 个答案:

答案 0 :(得分:1)

我建议您使用引用DataSource对象的类变量,您可以在doGet或doPost方法中从中获取与数据库的新连接。这是一种安全的方式。

但为了更好地维护代码,您应该阅读JPA

答案 1 :(得分:1)

您可能知道,在不同的情况下(当浏览器或HTTP客户端分别执行GET或POST HTTP请求时)调用doGet()和doPost()。

听起来您的应用程序在这两个请求之间具有共同的功能。我的建议是将您的共享功能抽象到servlet中的另一个方法(或多个方法),doGet()和doPost()都可以调用。

或者,如果共享所有功能,则可以改为实现service()方法,servlet容器将为所有请求类型(而不是doGet()或doPost())调用该方法。