GWT 中的 HTTP 请求

Posted

技术标签:

【中文标题】GWT 中的 HTTP 请求【英文标题】:HTTP Request in GWT 【发布时间】:2016-06-10 13:01:05 【问题描述】:

我必须了解整个 RPC 机制,因为我自己的项目需要它,尤其是即将到来的考试。

@RemoteServiceRelativePath("message")
public interface MessageService extends RemoteService 
   Message getMessage(String input);

“RemoteServiceRelativePath...”部分总是让我感到困惑。我不明白它是如何与 HTTP URL 一起工作的,以及 HTTP 请求是如何工作的。我是初学者,如果有人能向我解释一下,那就太好了:)提前谢谢!

【问题讨论】:

你看过这个文档了吗gwtproject.org/doc/latest/tutorial/RPC.html 【参考方案1】:

对我来说最令人困惑的部分是如何使用@RemoteServiceRelativePath("message") 以及我必须在 web.xml 中添加的内容。

  <servlet-mapping>
    <servlet-name>greetServlet</servlet-name>
    <url-pattern>/sample/greet</url-pattern>
  </servlet-mapping>

所以在这种情况下,url /sample/greet 由两个字符串组成: sample 来自您的模块名称,您可以在 *.gwt.xml 文件中找到它。

<module rename-to='sample'>
    ...
</module>

其中的greet部分来自@RemoteServiceRelativePath("greet")

@RemoteServiceRelativePath("greet")
public interface GreetingService extends RemoteService 
    String greetServer(String name) throws IllegalArgumentException;

这并不能回答你所有的问题,但也许它对你有帮助

【讨论】:

【参考方案2】:

1) 在 Eclipse 中配置 GWT 插件

2) 创建 Google Web 应用程序项目

2.1) 为项目命名

2.2) 给出包结构(可选)

2.3) 取消选中 App Engine 复选框

2.4) 点击完成

3) 使用标准包结构创建 GWT 项目

客户端(用户界面)

服务器(Servlet)

共享(在客户端和服务器之间共享,放置模型的理想场所)

4) 此示例项目将默认创建 GreetingService

我会详细解释RPC机制

为了从客户端(浏览器)到服务器(Web 服务器)进行通信,我们需要一个 servlet 和 Web 应用程序 我们在 web.xml 中映射我们的 servlet

在我们的示例项目中,我们需要在 web.xml 中映射 Greeting Servlet

Snippet from web.xml
 <servlet>
    <servlet-name>greetServlet</servlet-name>
    <servlet-class>com.server.GreetingServiceImpl</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>greetServlet</servlet-name>
    <url-pattern>/sample/greet</url-pattern>
  </servlet-mapping>

在服务器包中 我们有 servlet GreetingServiceImpl,它扩展了 RemoteServiceServlet,其父类是 HttpServlet

public class GreetingServiceImpl extends RemoteServiceServlet implements
        GreetingService 

    public String greetServer(String input) throws IllegalArgumentException 

在客户端包中

我们确实有两个接口 GreetingService 和 GreetingServiceAsync

@RemoteServiceRelativePath("greet")
public interface GreetingService extends RemoteService 
    String greetServer(String name) throws IllegalArgumentException;

注意 servlet 的路径在 @RemoteServiceRelativePath 中给出

public interface GreetingServiceAsync 
    void greetServer(String input, AsyncCallback<String> callback)
            throws IllegalArgumentException;

callback 是我们将在其中获取响应的参数

参考文献

http://h2g2java.blessedgeek.com/2010/02/tutorial-gwt-rpc-stub-modified-with.html

http://www.gwtproject.org/doc/latest/tutorial/RPC.html

希望这会有所帮助!

【讨论】:

以上是关于GWT 中的 HTTP 请求的主要内容,如果未能解决你的问题,请参考以下文章

GWT-RPC:对请求有效负载的黑客攻击

GWT 客户端 RPC 请求序列化

GWT(IE)中的深层链接

如何使用 HttpClient 发送 GWT-RPC 请求?

GWT:如何使用 JSON 发送 POST 跨域请求

GWT:向服务器发出请求后继续编辑同一对象