【发布时间】:2013-03-20 23:19:22
【问题描述】:
您好,我是gwt(java based gui) 的新手。
在这里,我正在尝试进行 GWT 服务器调用。
我想将我的MyBean 保存到我的Database。
稍后我必须update,delete etc..
有哪些可能性,我该如何实现??
【问题讨论】:
标签: java gwt web-applications rpc
您好,我是gwt(java based gui) 的新手。
在这里,我正在尝试进行 GWT 服务器调用。
我想将我的MyBean 保存到我的Database。
稍后我必须update,delete etc..
有哪些可能性,我该如何实现??
【问题讨论】:
标签: java gwt web-applications rpc
使用 GWT 访问数据库有多种可能性,例如 RequestFactory,RPC。
在开始调用服务器之前,请先通过,
GWT RPC(这使得服务器调用异步)
RequestFactory( GWT-RPC 的替代方案,用于创建面向数据的 服务。)
通过这里的链接后是Example of How to make an RPC。
来到您的 MyBean CRUD 操作,简单的 RPC 结构如下:
GWT Code <===> InterfaceAsync <===> Interface (Synchronous)<===> Server Code
我正在尝试向您解释它自己的元素。
同步接口(整个 RPC 的核心):
import com.google.gwt.user.client.rpc.RemoteService;
public interface BeanProcessRPCInterface extends RemoteService
{
public Mybean processMybeanRPC(Mybean bean);
}
A同步接口(客户端的关键部分):
import com.google.gwt.user.client.rpc.AsyncCallback;
public interface BeanProcessRPCInterfaceAsync
{
public void processMybeanRPC (Mybean bean, AsyncCallback callback);
}
这里使用实现“BeanProcessRPCInterface”的Service(等于servlet)
public class BeanProcessRPCImpl extends
RemoteServiceServlet implements BeanProcessRPCInterface
{
private static final long serialVersionUID = 1L;
public Mybean processMybeanRPC(Mybean bean)
{
//Process your widget here (CRUD operations)
}
**you can override doget,doPost,doDelete....etc along with your methods
}
在您的 web.xml 中映射上述类;
<servlet>
<servlet-name>beanrpc</servlet-name>
<servlet-class>com.server.BeanProcessRPCImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>beanrpc</servlet-name>
<url-pattern>/beanrpc</url-pattern>
</servlet-mapping>
最后在您的 GWT 代码中。使用如下服务
在代码中使用:
//注册服务。
private final BeanProcessRPCInterfaceAsync beanService =
GWT.create(BeanProcessRPCInterface.class);
ServiceDefTarget endpoint = (ServiceDefTarget) service;
endpoint.setServiceEntryPoint('beanrpc');
通过回调请求服务器
beanService.processMybeanRPC(mybean, callback);
AsyncCallback callback = new AsyncCallback()
{
public void onFailure(Throwable caught)
{
//Do on fail
}
public void onSuccess(Object result)
{
//Process successfully done with result (result is which you
// returned in impl class) .
}
};
P.S .注意包结构:
BeanProcessRPCInterfaceAsync,BeanProcessRPCInterface应该在client*包中
MyBean 类应该在 shared* 包中
BeanProcessRPCImpl 应该在 server* 包中
祝你好运。
【讨论】: