我在GWT上测试一个示例Web应用程序,我已经下载了所有SDK,并在eclipse上插件,我设计了一个 从用户那里获取少量输入的小表单,当用户点击按钮时,它使用RPC调用服务, 现在给出错误“
**errorcom.google.gwt.user.client.rpc.StatusCodeException: 404 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 NOT_FOUND</title>
</head>
<body><h2>HTTP ERROR: 404</h2><pre>NOT_FOUND</pre>
<p>RequestURI=/com.mpigeon.foofy.signup.SignUp/SignUpservlet</p><p><i><small><a href="http://jetty.mortbay.org/">Powered by Jetty://</a>**
”。 即它根本没有连接到服务,我真的被困在这里,请帮助我找出错误。 我正在分享以下代码
这是signup.gwt.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='foofysignup'>
<inherits name="com.google.gwt.user.User"/>
<inherits name="com.google.gwt.user.theme.standard.Standard"/>
<entry-point class="com.mpigeon.foofy.signup.client.SignUp"/>
<source path='client'/>
<source path='shared'/>
</module>
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<!-- Servlets -->
<servlet>
<servlet-name>fsignup</servlet-name>
<servlet-class>com.mpigeon.foofy.signup.server.SignupServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fsignup</servlet-name>
<url-pattern>/foofysignup/SignUpservlet</url-pattern>
</servlet-mapping>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>SignUp.html</welcome-file>
</welcome-file-list>
</web-app>
服务文件界面:
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
import com.mpigeon.foofy.signup.shared.SignUpFields;
@RemoteServiceRelativePath("SignUpservlet")
public interface SignupService extends RemoteService {
public String StoreSignUp(SignUpFields obj) throws IllegalArgumentException;
}
signup.html
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- -->
<!-- Consider inlining CSS to reduce the number of requested files -->
<!-- -->
<link type="text/css" rel="stylesheet" href="SignUp.css">
<!-- -->
<!-- Any title is fine -->
<!-- -->
<title>Wrapper HTML for SignUp</title>
<!-- -->
<!-- This script loads your compiled module. -->
<!-- If you add any GWT meta tags, they must -->
<!-- be added before this line. -->
<!-- -->
<script language="javascript" src="/com.mpigeon.foofy.signup.SignUp.nocache.js"></script>
</head>
<!-- -->
<!-- The body can have arbitrary html, or -->
<!-- we leave the body empty because we want -->
<!-- to create a completely dynamic ui -->
<!-- -->
<body>
<!-- OPTIONAL: include this if you want history support -->
<iframe id="__gwt_historyFrame" style="width:0;height:0;border:0"></iframe>
<div id="signupdiv"></div>
</body>
</html>
答案 0 :(得分:0)
自从将<module rename-to='foofysignup'>
添加到gwt.xml后,您是否完成了GWT编译?
从这个错误看来,您的应用程序希望servlet在默认的完全限定模块名称下映射:RequestURI=/com.mpigeon.foofy.signup.SignUp/SignUpservlet
答案 1 :(得分:0)
如果您更换
@RemoteServiceRelativePath("SignUpservlet")
与
@RemoteServiceRelativePath("../foofysignup/SignUpservlet")
rpc请求应该有效。这不是一个好的解决方案,但至少可以起作用。
正如Terrell指出你的应用是从/com.mpigeon.foofy.signup.SignUp/
加载,但由于你的rename-to属性,你的应用应该从/foofysignup/
加载。这可能是由WebContent文件夹中的旧文件引起的。
你可以发布你的SignUp.html吗?