如何为整个servlet创建一个类的实例

时间:2016-05-06 16:27:03

标签: java compiler-errors static-methods

我有一个JSP应用程序,它带有一个普通的java类Login.java和一个servlet,它在doGet方法中调用了一个名为loginList的过程。 loginList过程需要使用名为OAVDbUtil的java类创建一个登录列表,其中包含方法" getLoginsList"。但Eclipse似乎并没有认识到" getLoginsList"程序,当我进入它时,eclipse的按摩不能静态参考非静态方法"给出。但是一切看起来还不错,因为我没有将getLoginsList声明为静态。我认为有一种方法可以创建OAVDbUtil的实例,以避免必须创建新的OAVdbUtil对象的多个实例,但有人可以告诉我如何做到这一点,而不是得到消息" eclipse无法进行静态引用到非静态方法"?

这是一些代码和屏幕转储

servlet的屏幕转储

enter image description here

以下是OAVDbUtil的代码

public OAVDbUtil(DataSource theDataSource) {
  dataSource = theDataSource;
}

public List<Login> getLoginsList() throws Exception {

   List<Login> loginList = new ArrayList<Login>();

4 个答案:

答案 0 :(得分:0)

getLoginsList()不是静态的,制作它就可以了。

答案 1 :(得分:0)

您收到此错误是因为getLoginsList()不是static

  1. 您可以更改该方法static

    public static List<Login> getLoginsList() throws Exception {
    
  2. (OR)

    1. OAVDbUtil

      创建一个对象
      OAVDbUtil dbUtil = new OAVDbUtil();
      List<Login> logins = dbUtil.getLoginsList();
      

答案 2 :(得分:0)

OAVDbUtil.getLoginsList()是如何在类中使用静态方法的,不能使用它来访问类的实例方法。

如果您希望getLoginsList成为静态方法,则将其声明为:

public static List<Login> getLoginsList() throws Exception

如果您希望getLoginsList成为实例方法,那么您需要拥有OAVDbUtil类的实例并且可用,并使用以下方法调用该方法:

OAVDbUtil theInstance = .... get from somewhere

List<Login> logins = theInstance.getLoginsList();

答案 3 :(得分:0)

您需要向servlet提供OAVDbUtil实例,然后在该对象上调用getLoginsList()

servlet可以在其​​初始化方法中构造这样的对象,也可以通过容器将其注入到servlet中。

相关问题