[GWT-RPC]RequestBuilder发起http请求实例
程序员文章站
2024-01-26 08:46:05
...
新人一枚,在用《gwt揭秘》学习gwt时中,被各种坑,不正确之处请指出。
chapter8/httprequestTest/client/HTTPRequestTest.java
public void onModuleLoad() {
.
.
.
Button queryButtom = new Button("=");
.
.
.
RootPanel.get().add(panel);
queryButtom.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
RequestBuilder request = new RequestBuilder(RequestBuilder.POST,GWT.getHostPageBaseURL()+"add");
request.setHeader("Content-Type", "application/x-www-form-urlencoded");
try {
request.sendRequest("a="+data1.getValue()+"&b="+data2.getValue(), new RequestCallback(){
@Override
public void onResponseReceived(Request request, Response response) {
if(response.getStatusCode()==200) {
result.setText(response.getText());
} else {
Window.alert(response.getText());
}
}
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception.getMessage());
}
});
} catch (RequestException e) {
e.printStackTrace();
}
}
});
}
下面的要注意路径,这个就是书本坑的地方。servlet和入口类放在同一个包下。
原因:
1.因为在代码加载时,所有java代码都会转为javascript存放在war下,原有的目录结构被打破。
2.GWT.getHostPageBaseURL()得到只是url,没有对应的项目名。
可推出只能放在同一个包下:
chapter8/httprequestTest/client/AddServlet.java
...省略
protected void doPost(HttpServletRequest req,HttpServletResponse resp) {
int a = Integer.valueOf(req.getParameter("a"));
int b = Integer.valueOf(req.getParameter("b"));
try {
resp.getWriter().print(Integer.toString(a+b));
} catch (IOException e) {
e.printStackTrace();
}
}
...省略
web.xml:这个也是书本没有说明要写的,还以为gwt可以牛B到不用指明路径,还有的是找对应的servlet类和<servlet-class>所写的无关的 -_-! ,我测试过chapter8.httprequestTest.client.AddServlet和chapter8.httprequestTest.AddServlet是一样的,都是可以访问AddServlet的,这发现它还是牛B了
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee">
<servlet>
<servlet-name>swapServlet</servlet-name>
<servlet-class>chapter8.httprequestTest.client.AddServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>swapServlet</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
</web-app>
可以在这里查找例子:https://download.csdn.net/download/xin1243790377/10595786
上一篇: RestyGWT简介