问题描述
我已经构建了我的第一个GWT应用程序。不会导致运行时错误的编译错误。但是,当应用程序加载到浏览器中(使用Interner Explorer)并输入用户名和密码字段来验证用户时,会引发异常。使用GWT-RPC方法,提供了整个代码和接口。我正在使用 HSQL 进行数据库连接(后端)。
----------- ------- CODE(CLIENT)
package com.vin.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
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.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
public class HelloWorld实现EntryPoint {
private UserServiceAsync UserService =(UserServiceAsync)GWT.create(UserService.class);
public void onModuleLoad(){
Button click = new Button(Click Here);
标签名=新标签(输入名称);
Label passwrd = new Label(Enter Password);
final TextBox t_name = new TextBox();
final PasswordTextBox t_passwrd = new PasswordTextBox();
click.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent ev){
String temp_user = t_name.getText();
String temp_pass = t_passwrd.getText() ;
UserService.loginuser(temp_user,temp_pass,new AsyncCallback< String>(){
public void onFailure(Throwable catch){
Window.alert(请输入有效的详细信息);
}
public void onSuccess(String result){
Window.alert(Welcome);
// Window.open(http://127.0.0.1:8888/ ExWid.html?gwt.codesvr = 127.0.0.1:9997,Dem,null);
}
});
}
});
RootPanel.get()。add(name);
RootPanel.get()。add(t_name);
RootPanel.get()。add(passwrd);
RootPanel.get()。add(t_passwrd);
RootPanel.get()。add(click);
}
}
----------- ------------------客户界面(1)
package com。 vin.client;
import com.google.gwt.user.client.rpc.RemoteService;
public interface UserService extends RemoteService {
public String loginuser(String username,String password);
}
---------------- ------------ CLIENT ASYNC INTERFACE
package com.vin.client;
import com.google.gwt.user.client.rpc.AsyncCallback;
public interface UserServiceAsync {
public void loginuser(String username,String password,AsyncCallback< String> callback);
}
---------------- ----------客户端服务器(SERVER)的实现...数据库连接
package com.vin 。服务器;
import java.sql.DriverManager;
import java.sql.ResultSet;
import com.google.gwt.dev.generator.ast.Statement;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.vin.client.UserService;
public class UserServiceImpl extends RemoteServiceServlet implements UserService {
private static final long serialVersionUID = 1L;
public String loginuser(String username,String password){
try {
java.sql.Connection con = null;
Class.forName(org.hsqldb.jdbcDriver);
con = DriverManager.getConnection(jdbc:hsqldb:hsql:// localhost /,SA,);
语句st =(Statement)con.createStatement();
ResultSet rs =((java.sql.Statement)st).executeQuery(select username,lgfrm);
String user = rs.getString(1);
String pass = rs.getString(2);
if(username.equals(user)&& password.equals(pass)){
Window.alert(success);
}
}
catch(异常ae){}
returnsuccess;
}
}
----------- -------我尝试验证用户的例外列表
还有更多这样的。 p>
类提供对浏览器窗口的方法,属性和事件的访问。所以你不能在Serverside中使用它。当需求满足时,您可以返回String success
,否则返回异常
,以便它被 onFailure
在客户端。
I have built my first GWT app. giving no compilation errors neither run-time errors. However, when the application is loaded into the browser (using Interner Explorer) and I enter username and password field to validate the user, it throws exceptions. Using GWT-RPC method, entire code and interfaces are provided.I'm using HSQL for database connection(back end).
------------------CODE (CLIENT)
package com.vin.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
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.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
public class HelloWorld implements EntryPoint{
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 PasswordTextBox t_passwrd=new PasswordTextBox();
click.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent ev) {
String temp_user=t_name.getText();
String temp_pass=t_passwrd.getText();
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");
// Window.open("http://127.0.0.1:8888/ExWid.html?gwt.codesvr=127.0.0.1:9997", "Dem", null);
}
});
}
});
RootPanel.get().add(name);
RootPanel.get().add(t_name);
RootPanel.get().add(passwrd);
RootPanel.get().add(t_passwrd);
RootPanel.get().add(click);
}
}
-----------------------------CLIENT INTERFACE (1)
package com.vin.client;
import com.google.gwt.user.client.rpc.RemoteService;
public interface UserService extends RemoteService {
public String loginuser(String username, String password);
}
----------------------------CLIENT ASYNC INTERFACE
package com.vin.client;
import com.google.gwt.user.client.rpc.AsyncCallback;
public interface UserServiceAsync {
public void loginuser(String username, String password, AsyncCallback<String> callback);
}
--------------------------IMPLEMENTATION OF CLIENT USERSERVICE (SERVER)...DATABASE CONNECTION
package com.vin.server;
import java.sql.DriverManager;
import java.sql.ResultSet;
import com.google.gwt.dev.generator.ast.Statement;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.vin.client.UserService;
public class UserServiceImpl extends RemoteServiceServlet implements UserService{
private static final long serialVersionUID = 1L;
public String loginuser(String username,String password) {
try {
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(username.equals(user) && password.equals(pass)) {
Window.alert("success");
}
}
catch (Exception ae) {}
return "success";
}
}
------------------THE EXCEPTION LIST WHILE I'M TRYING TO VALIDATE A USER
And many more like these.
com.google.gwt.user.client.Window class provides access to the browser window's methods, properties, and events. So you can't use it in Serverside. Better you return String "success"
when requirement meets, else return Exception
, so that it is caught by onFailure
on clientside.
这篇关于运行GWT应用程序时异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!