参考网页:
http://blog.sina.com.cn/s/blog_4051f5dc0100igm7.html
http://www.ibm.com/developerworks/cn/java/j-gwtfu1/
具体实例代码如下:
package cn.com.andy.client;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
/**
* The client side stub for the RPC service.
*/
@RemoteServiceRelativePath("greet")
public interface GreetingService extends RemoteService {
void insertUser();
//void updatetUser(String userName) throws IllegalArgumentException;
//String queryUser(String userName) throws IllegalArgumentException;
//void deleteUser(String userName) throws IllegalArgumentException;
}
package cn.com.andy.client;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
* The async counterpart of <code>GreetingService</code>.
*/
public interface GreetingServiceAsync{
void insertUser(AsyncCallback async);
//void updatetUser(String userName) throws IllegalArgumentException;
//void queryUser(String userName,AsyncCallback callback) throws IllegalArgumentException;
//void deleteUser(String userName) throws IllegalArgumentException;
}
package cn.com.andy.server;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import cn.com.andy.client.GreetingService;
import cn.com.andy.client.User;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
/**
* The server side implementation of the RPC service.
*/
@SuppressWarnings("serial")
public class GreetingServiceImpl extends RemoteServiceServlet implements
GreetingService {
public void deleteUser(String userName) throws IllegalArgumentException {
Session session = (Session) GreetingServiceImpl.getSession();
Transaction tx = session.beginTransaction();
String hql = "delete from User d where d.username=:name";
Query query = session.createQuery(hql);
query.setString("name", userName);
query.executeUpdate();
tx.commit();
GreetingServiceImpl.closeSession(session);
}
public void insertUser() {
Session session = (Session) GreetingServiceImpl.getSession();
Transaction tx = session.beginTransaction();
User user = new User();
user.setUsername("ttt");
user.setPassword("andy");
session.save(user);
tx.commit();
GreetingServiceImpl.closeSession(session);
}
public String queryUser(String userName) throws IllegalArgumentException {
Session session = (Session) GreetingServiceImpl.getSession();
Transaction tx = session.beginTransaction();
String hql = "from User d where d.username=:name";
Query query = session.createQuery(hql);
query.setString("name", userName);
List list = query.list();
tx.commit();
GreetingServiceImpl.closeSession(session);
User user = (User)list.get(0);
return user.getPassword();
}
public void updatetUser(String userName) throws IllegalArgumentException {
Session session = (Session) GreetingServiceImpl.getSession();
Transaction tx = session.beginTransaction();
String hql = "update User d set password='update' where d.username=:name ";
Query query = session.createQuery(hql);
query.setString("name", userName);
query.executeUpdate();
tx.commit();
GreetingServiceImpl.closeSession(session);
}
private static SessionFactory factory;
static {
try {
// 读取配置文件
Configuration cfg = new Configuration().configure();
factory = cfg.buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
// 创建sessionFactory
public static SessionFactory getSessionFactory() {
return factory;
}
// 创建session
public static Session getSession() {
return factory.openSession();
}
// 关闭session,要关闭的时候条用这个方法就可以了
public static void closeSession(Session session) {
if (session != null) {
if (session.isOpen()) {
session.close();
}
}
}
public static void main(String agrs[])
{
new GreetingServiceImpl().insertUser();
}
}
package cn.com.andy.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
public class HelloWorld implements EntryPoint {
final GreetingServiceAsync helloWorldService = (GreetingServiceAsync) GWT.create(GreetingService.class);
public void onModuleLoad() {
final TextBox nameField = new TextBox();
nameField.setText("GWT User");
nameField.setFocus(true);
Button button1 = new Button("add");
button1.addStyleName("button1");
button1.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
String userName = nameField.getText();
Window.alert("add=success=" + userName);
//helloWorldgService.insertUser(userName);
helloWorldService.insertUser(new AsyncCallback(){
public void onFailure(Throwable caught) {
Window.alert("add=failure");
}
public void onSuccess(Object result) {
Window.alert("add=success=");
}
});
}
});
Button button2 = new Button("query");
button2.addStyleName("button2");
button2.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
//List list = new HibernateTest().getUsers();
//User user = (User)list.get(0);
// Window.alert(user.getId());
//Window.alert(user.getUsername());
Window.alert("query");
}
});
Button button3 = new Button("update");
button3.addStyleName("button3");
button3.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
//new HibernateTest().updateUsers();
Window.alert("update");
}
});
Button button4 = new Button("delete");
button4.addStyleName("button4");
button4.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
//new HibernateTest().deleteUsers();
Window.alert("delete");
}
});
RootPanel.get("userName").add(nameField);
RootPanel.get("add").add(button1);
RootPanel.get("query").add(button2);
RootPanel.get("update").add(button3);
RootPanel.get("delete").add(button4);
}
}
运行是可能会报错误,我们可以再onFailure 方法内部将异常信息输出,注意要导入到WEB-INFO/lib下的jar包。可能会是由于缺少jar包导致。