在本教程中, 我们将使用GWT设置数据库连接。我们可以使用Eclipse来配置数据库。
Eclipse包含可以安装的HSQLDB插件。插件使安装易于设置。插件提供许多功能, 例如启动/停止数据库, 调用数据库管理器GUI。在这里, 以下步骤是配置。
选择帮助→Eclipse MarketPlace搜索关键字HSQLDB, 然后单击安装按钮。
文章图片
现在, 选择“窗口”→“显示视图”→“其他”, 然后在“显示视图”对话框中, 展开“ HSQL数据库服务器”, 然后选择“ HSQLDB服务器”以打开HSQLDB视图。
单击查看菜单, 然后从下拉菜单中选择首选项。输入图中所示的值。
文章图片
启动数据库并通过从下拉菜单中选择显示数据库客户端来打开数据库管理器。
文章图片
文章图片
加载数据库 我们使用RStore加载数据, 它具有以下功能:
- 它增强了Java类的持久性。
- 它创建数据库架构。
- 删除数据库架构。
- 它持久存在并从数据库中检索对象。
RStore需要HSQLDB, Data Nucleus JDO, MyBatis和Hibernate库。下表列出了相关性。
共同 | JDO | 冬眠 | MyBatis |
---|---|---|---|
hsqldb-2.2.9.jar | jdo-api-3.0.1.jar | hibernate-commons-annotations-4.0.1.Final.jar | mybatis-3.2.0.jar |
commons-lang-2.6.jar | datanucleus-api-jdo-3.1.3.jar | hibernate-core-4.1.10.Final.jar | |
log4j-1.2.16.jar | DataNucleus将核心-3.1.4.jar | hibernate-jpa-2.0-api-1.0.1.Final.jar | |
DataNucleus将-RDBMS-3.1.4.jar | jboss-logging-3.1.0.GA.jar | ||
DataNucleus将-增强-3.1.1.jar | jboss-transaction-api_1.1_spec-1.0.0.Final.jar | ||
asm-4.0.jar | antlr-2.7.7.jar | ||
dom4j-1.6.1.jar | |||
javassist-3.15.0-GA.jar |
通用:hsqldb, Common-lang, log4j。
JDO:datanucleus, showfiles, jdo。
休眠:休眠。
【GWT数据库】MyBatis:mybatis。
实作
将Mysql配置添加到GWT
LoginScreen.gwt.xml
<
module>
<
!-- Inherit the core Web Toolkit stuff. -->
<
inherits name='com.google.gwt.user.User'/>
<
!-- Specify the app entry point class. -->
<
entry-point class='com.yourdomain.projectname.client.LoginScreen'/>
<
!-- servlet context - path is arbritray, but must match up with the rpc init
inside java class -->
<
!-- Tomcat will listen for this from the server and waits for rpc request in
this context -->
<
servlet class="com.yourdomain.projectname.server.MySQLConnection"path="/MySQLConnection" />
<
inherits name="com.google.gwt.user.theme.standard.Standard"/>
<
inherits name="com.google.gwt.user.theme.chrome.Chrome"/>
<
inherits name="com.google.gwt.user.theme.dark.Dark"/>
<
/module>
数据库连接
DBConnection.java
public interface DBConnection extends RemoteService
{
public User authenticateUser(String user, String pass);
}
DBConnectionAsync.java
public interface DBConnectionAsync {
public void authenticateUser(String user, String pass, AsyncCallback<
User>
callback);
}
User.java(前端设计)
import com.google.gwt.user.client.rpc.IsSerializable;
public class User implements IsSerializable {
private String username;
private String password;
@SuppressWarnings("unused")
private User() {
//just here because GWT wants it.
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
}
MySQLConnection.java(创建Servlet)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.yourdomain.projectname.client.User;
public class MySQLConnection extends RemoteServiceServlet implements DBConnection {
private Connection conn = null;
private String status;
private String url = "jdbc:mysql://yourDBserver/yourDBname";
private String user = "DBuser";
private String pass = "DBpass";
public MySQLConnection() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url, user, pass);
} catch (Exception e) {
//NEVER catch exceptions like this
} }
public int authenticateUser(String user, String pass) {
User user;
try {
PreparedStatement ps = conn.prepareStatement(
"select readonly * from users where
username = \"" + user + "\" AND " +
"password = \"" + pass + "\""
);
ResultSet result = ps.executeQuery();
while (result.next()) {
user = new User(result.getString(1), result.getString(2));
}
result.close();
ps.close();
} catch (SQLException sqle) {
//do stuff on fail
}
return user;
}
}
输出量
文章图片