欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[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

相关标签: gwt