2012-10-04 1 views
1

Google Web Toolkit (GWT)을 사용하여 Eclipse에서 로그인 응용 프로그램을 만들고 있습니다. 코드는 사용자 이름과 암호를 확인하고 올바른 경우 o/p를 환영으로 표시합니다. 컴파일 한 후에도 오류가 발생합니다. 코드와 오류 메시지를 공유하고 있습니다. 제발 도와주세요. 에서 읽을 수 없습니다 :내 코드 (GWT)의 문제점

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); 
    } 
    } 

오류 메시지 ----------

스레드에서 "UnitCacheLoader"java.lang.RuntimeException가를 모듈 com.vin.HelloWorld 예외를 컴파일 com.google.gwt.dev.util.DiskCache.transferFromStream com.google.gwt.dev.util.DiskCacheToken.readObject (DiskCacheToken.java:87)에서 (DiskCache.java:166) 에서의 바이트 캐시 sun.reflect.GeneratedMethodAccessor19.invoke (알 수없는 출처) ... ...........이 같은 더 많은 ....

답변

2

모든 비즈니스 로직, DB의 상호 작용을 쓸 수 있습니다

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 
    } 
} 

따르 Communicate with a Server in GWT 및 클라이언트 측 들어 Anatomy of service enter image description here

:

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); 
    } 
} 
+0

cool ... ty ... 그게 분명 도움이 될거야 –

+0

UML 도구가 그거야? 멋지다. – sakthisundar

+0

@sakthisundar u는 GWT를 의미합니까? 잘 GWT는 자바 스크립트 응용 프로그램을 만드는 데 도움이됩니다 ... 이클립스 플러그인으로 사용됩니다 .... https : //developers.google.com/web-toolkit/gettingstarted –

1

당신은 진입 점 클래스에서 DB 관련 코드를 넣을 수 없습니다 밖으로 제발 도와주세요, 당신은 GWT-를 호출 할 필요가 클릭시 RPC 방식.

사실이 EntryPoint 클래스는 GWT 프로세서로 컴파일되며 브라우저에서 실행될 출력물에 javascript를 생성합니다. 그래서 자바 스크립트에서 db를 호출 할 수있는 정당성은 없습니다.

GWT-RPC는 코드가 서버에있는 비동기 호출입니다.

UserServiceAsync.java

UserService.java

@RemoteServiceRelativePath("userService") 
public interface UserService extends RemoteService { 
    String loginUser(String username,String password); 
} 
: 여기 당신은 서버 측에 대해 다음과 같이 뭔가를 시도 등

LINK

+0

확인 덕분에 ... –

+0

올바른 지금을 편집합니다 만약 내가 틀렸다면 .... 그게 좋아. e 인터페이스를 만들고 그것을 구현 ...이 구현은 서버 측에서해야합니다 ... 연결 일, 맞아! –

+0

그것 막연하지만 당신 말이 맞아. –