【问题标题】:How to make an GWT server call(GWT RPC?) [closed]如何进行 GWT 服务器调用(GWT RPC?)[关闭]
【发布时间】:2013-03-20 23:19:22
【问题描述】:

您好,我是gwt(java based gui) 的新手。 在这里,我正在尝试进行 GWT 服务器调用。

我想将我的MyBean 保存到我的Database

稍后我必须update,delete etc..

有哪些可能性,我该如何实现??

【问题讨论】:

    标签: java gwt web-applications rpc


    【解决方案1】:

    使用 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* 包中

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-08
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      相关资源
      最近更新 更多