使用GWT和mysql

Vin*_*rya 3 java gwt

我是GWT的新手.我正在尝试连接其中的mysql服务器.

以下是我的项目层次结构:

项目名称hello和包名称是com.hello.默认情况下,GWT会创建3个文件夹

  1. com.hello.client
  2. com.hello.server
  3. com.hello.shared

包含GWT入口点的主java文件位于com.hello.client文件夹中,名称为hello.java

我创建了一个类db_conn(文件名是db_conn.java),其中包含与mysql数据库连接所需的所有代码.此文件放在com.hello.server文件夹中.以下是代码

package com.hello.server;

import java.sql.Connection;
import java.sql.DriverManager;

public class db_conn 
{
    public Connection con;

    public db_conn()
    {

    }

    public String ConnectToDB()
    {
        try
        {
            String host          = "localhost";
            String db           = "test";
            String driver       = "com.mysql.jdbc.Driver";
            String user         = "root";
            String pass         = "pwd";

            Class.forName(driver).newInstance();
            con = DriverManager.getConnection(host+db, user, pass);

            return "Connected to Database";
        }
        catch(Exception ex)
        {
            return ex.toString();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

在hello.java文件中(位于com.hello.client文件夹中并包含GWT的主要入口点)我已经导入了上面的类 import com.hello.server.*;

当我试图使用ConnectToDB()函数从db_conn类上onModuleLoad()的hello.java,这是给我下面的错误:

com.hello.server.db_conn can not be found in source packages. Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly.

代码片段窗口显示了db_conn类,但是当我使用这个类时,它会给我错误.我无法弄清楚确切的问题.请帮忙.

谢谢

Lar*_*ann 8

您的客户端文件应该只包含GWT可以实际编译到JavaScript的代码.所以你必须删除

import com.hello.server.*

来自客户端代码.您必须做的是在客户端代码中添加服务接口,然后在服务器中实现此接口.

所以你的项目布局最终应该是这样的

  • 客户端代码(编译成JavaScript)

    com/hello/client/HelloService.java
    com/hello/client/HelloServiceAsync.java

  • 服务器和客户端共享的RPC代码(也编译成JavaScript)

    COM /你好/共享/ HelloModel.java

  • 实现HelloService并使用HelloModel的服务器代码(加上引用您的MySQL连接).

    COM /你好/服务器/ HelloServiceImpl.java

  • 同意.问题是您的客户端代码引用了数据库代码.'onModuleLoad()'在客户端执行. (2认同)