转帖:http://www.javaeye.com/topic/191819
一、 定义服务
GWT过程调用大部分在两个类进行。在服务器端,定义一个 RemoteServiceServlet子类 RegisterActionImpl.java(远程服务实现类)。在这个类中,将操作数据库并将值返回给客户机。在客户端,定义一个实现 AsyncCallback接口的类 Register.java(客户端实现类),在这个类中,定义服务器操作完成时客户机页面如何处理数据(或异常)。除了这两个类之外,必须编写一些绑定代码使 GWT-Ext 可以将客户端类和服务器端类绑定在一起,绑定代码包含 RegisterAction.java(远程接口)和 RegisterActionAsync.java(远程异步接口)两个不同的接口外加一些客户端代码以及一两个设置。
a. 在 gwtext项目上点击右键,选择 New—Other—Remote Service,创建名为 RegisterAction的远程服务接口。
b. 把 Postgresql数据库的 JDBC包 postgresql-8.2-505.jdbc3.jar加入到项目中(其他数据库,加入相应的 JDBC包)。
c. 远程服务的实现类,在 RegisterActionImpl.java中加入如下代码:
- /**
- *@author七月天
- *
- */
- publicclassRegisterActionImplextendsRemoteServiceServletimplementsRegisterAction{
- privatestaticfinallongserialVersionUID=1L;
- publicvoidsaveData(MapformData){
- Connectionconn=null;
- try{
- Class.forName("org.postgresql.Driver");
- StringconnString="jdbc:postgresql://127.0.0.1:5432/gwtext";
- conn=DriverManager.getConnection(connString,"julycn","julycn");
- StringBuffersqlQuery=newStringBuffer("insertintoperson(username,password,email,phone)");
- sqlQuery.append("values(?,?,?)");
- PreparedStatementstmt=conn.prepareStatement(sqlQuery.toString());
- stmt.setString(1,URLDecoder.decode(formData.get("username").toString(),"UTF-8"));
- stmt.setString(2,URLDecoder.decode(formData.get("password").toString(),"UTF-8"));
- stmt.setString(3,URLDecoder.decode(formData.get("email").toString(),"UTF-8"));
- stmt.setString(4,URLDecoder.decode(formData.get("phone").toString(),"UTF-8"));
- stmt.execute();
- }catch(Exceptione){
- e.printStackTrace();
- }finally{
- if(conn!=null){
- try{
- conn.close();
- }catch(sqlExceptione){
- e.printStackTrace();
- }
- }
- }
- }
- }