1

Google Web Toolkit(GWT)を使用して、Eclipse でログイン アプリケーションを作成しています。コードはユーザー名とパスワードをチェックし、正しい場合は o/p を歓迎として表示します。それでもコンパイルした後、エラーが発生します。コードとエラーメッセージの両方を共有しています。私を助けてください。

    package com.vin.client;
import java.sql.DriverManager;
import java.sql.ResultSet;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.dev.generator.ast.Statement;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.*;

public class HelloWorld implements EntryPoint{
    public void onModuleLoad() {
        Button click=new Button("Click Here");
        Label name=new Label("Enter Name");
        Label passwrd=new Label("Enter Password");
        final TextBox t_name=new TextBox();
        final TextBox t_passwrd=new TextBox();
        click.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent ev) {
            try {
                String temp_user=t_name.getText();
                String temp_pass=t_passwrd.getText();
                java.sql.Connection con = null;
                Class.forName("org.hsqldb.jdbcDriver");
                con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/", "SA", "");
                Statement st=(Statement) con.createStatement();
                ResultSet rs=((java.sql.Statement) st).executeQuery("select username,password from lgfrm");
                String user=rs.getString(1);
                String pass=rs.getString(2);
                if(temp_user.equals(user) && temp_pass.equals(pass)) {
                    Window.alert("Welcome");
                }
                else {
                    Window.alert("Please enter valid details");
                }
        }
        catch (Exception ae) {}
        }
    });
        RootPanel.get().add(name);
        RootPanel.get().add(t_name);
        RootPanel.get().add(passwrd);
        RootPanel.get().add(t_passwrd);
        RootPanel.get().add(click);
    }
    }

エラーメッセージは ----------

コンパイル中のモジュール com.vin.HelloWorld 例外がスレッド "UnitCacheLoader" java.lang.RuntimeException: com.google.gwt.dev.util.DiskCache.transferFromStream(DiskCache.java:166) のバイト キャッシュから読み取れません com.google .gwt.dev.util.DiskCacheToken.readObject(DiskCacheToken.java:87) at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source) ..............そして、このような他の多く.. ..私を助けてください

4

2 に答える 2

2

サーバー側で次のようなことを試してください:

UserService.java

@RemoteServiceRelativePath("userService")
public interface UserService extends RemoteService {
    String loginUser(String username,String password);
}

UserServiceAsync.java

public interface UserServiceAsync {
    void loginUser(String username, String password, AsyncCallback<String> callback);
}

UserServiceImpl.java

public class UserServiceImpl extends RemoteServiceServlet  implements UserService {

        public String loginUser(String username, String password){
            //database interaction
            return "result"; //return success or failure depending upon logic
    }
}

GWT でのサーバーとの通信とサービスの解剖学に従ってください ここに画像の説明を入力

クライアント側の場合:

public class HelloWorld implements EntryPoint{
    //(1) Create the client proxy.
    private UserServiceAsync userService = (UserServiceAsync) GWT.create(UserService.class);
    public void onModuleLoad() {
        Button click=new Button("Click Here");
        Label name=new Label("Enter Name");
        Label passwrd=new Label("Enter Password");
        final TextBox t_name=new TextBox();
        final TextBox t_passwrd=new TextBox();
        click.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent ev) {
                 String temp_user=t_name.getText();
                 String temp_pass=t_passwrd.getText();   
                 /// (2) Create an asynchronous callback and Make the call
                 userService.loginUser(temp_user, temp_pass, new AsyncCallback<String>() {
                     public void onFailure(Throwable caught) {
                             Window.alert("Please enter valid details");
                      }

                     public void onSuccess(String result) {
                         Window.alert("Welcome");
                     }
                 });//end of service call
       });//end of clickhandler
        RootPanel.get().add(name);
        RootPanel.get().add(t_name);
        RootPanel.get().add(passwrd);
        RootPanel.get().add(t_passwrd);
        RootPanel.get().add(click);
    }
 }
于 2012-10-04T10:28:26.463 に答える
1

エントリ ポイント クラスに DB 関連のコードを配置することはできません。クリック メソッドで GWT-RPC を呼び出す必要があります。

実際、この EntryPoint クラスは GWT プロセッサによってコンパイルされ、ブラウザで実行される出力に JavaScript が作成されます。したがって、javascript で db を呼び出す正当な理由はありません。

GWT-RPC は、コードがサーバーに常駐する非同期呼び出しです。ここでは、すべてのビジネス ロジック、データベースの対話機能などを記述できます。

リンク

于 2012-10-04T10:13:17.410 に答える