2011-12-29 158 views
2

Servlet的URL模式我试图做的是在本地主机上运行良好,但是当应用程序部署在GAE服务器上失败的url-pattern一些简单的工作。 下一步做什么我想要做的是:在谷歌应用程序引擎

  • 一个servlet来服务所有请求
  • 这个servlet会转发一些请求JSP文件(在大多数情况下)

要做到这一点我已经配置web.xml中:

<servlet> 
    <servlet-name>MyServlet</servlet-name> 
    <servlet-class>com.mycompany.MyServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>MyServlet</servlet-name> 
    <url-pattern>/MyServlet</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>MyServlet</welcome-file> 
</welcome-file-list> 

也能正常工作与本地主机GAE服务器,但是当应用程序部署在真正的GAE服务器上,它没有。问题是,当我访问myapp.appspot.com/anything时,GAE回应:

错误:找不到 在此服务器上未找到请求的URL /任何内容。

谁能帮助我,普莱舍?

+0

对不起,代码显示不好。首先必须是“MyServlet”的servlet声明。 – Marto 2011-12-29 23:52:03

回答

1

你错过了Servlet元素。 Servlet-mapping元素本身是不够的。你MyServlet类的实际包构建了你的web.xml中试试这个....

<servlet> 
      <servlet-name>MyServlet</servlet-name> 
      <servlet-class>package.path.to.my.servlet.MyServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
      <servlet-name>MyServlet</servlet-name> 
      <url-pattern>/MyServlet</url-pattern> 
    </servlet-mapping> 

当然更换package.path.to.my.servlet。一旦你完成了这个工作,你可以放入多个servlet映射元素来映射不同的url到同一个servlet。

如果这是你的Appspot上的网址发生的事情,你可以尝试,并确保所有静态文件正在部署到Appspot上...

<static-files> 
     <include path="/**.css" /> 
     <include path="/**.xml" /> 
    </static-files> 

只是注意,这意味着你所有的部署xmls/css文件在您的war文件中。如果您不想这样做,请相应地调整包含路径属性。

此外,有所有的请求去一个小服务程序,只需使用下面的URL模式...

<url-pattern>/*</url-pattern> 

使用此模式时,请注意只要继续,如果您有图片/ CSS文件/ jsp文件/ etc这个servlet会拦截他们的请求。所以你会有一些逻辑来转发你不感兴趣的请求。如果你正在做一些简单的事情,这可能就足够了。但是随着你变得更加复杂(如缓存css文件/图像文件),你可能会想要考虑添加静态资源过滤器。

+0

谢谢戴夫。发布代码是一个错误,但我的web.xml中已经有了servlet标签。事实上,它的工作原理以及在本地主机... :( – Marto 2011-12-30 01:00:14

+0

如果是这样的话,那么你或许应该更新您的答案,包括完整的web.xml,完整的堆栈跟踪(去'https://appengine.google。 COM /仪表盘?&APP_ID = S〜YOUR-Appspot上-SUBDOMAIN'其中'YOUR-Appspot上-SUBDOMAIN'是从'YOUR-Appspot上-SUBDOMAIN.appspot.com'并且它应该是在右下方的'Errors'部分)。 – Dave 2011-12-30 02:07:27

+0

此外,有可能你的网页的XML没有正确上传。您可以通过调节您的AppEngine-web.xml和添加,如果你还没有我所描述的静态文件元素验证。 – Dave 2011-12-30 02:16:22