0

我正在尝试将我的应用程序部署到 GAE,但我总是在所有页面(jsp)上得到 404 not found 错误,除了默认值。RESTful web 服务工作没有问题。我正在使用 netbeans 7.1.1 和 gae 1.6.4.1

当我在本地测试它时,一切正常,没有任何问题。但是当我上传它时,总是只有默认页面可用。我几乎尝试了所有东西。

我尝试使用 appcfg.cmd 检查文件是否在 GAE 上。我从 GAE 下载了我的文件,发现没有人丢失,所以更新过程可能是成功的。

我尝试使用 appcfg 脚本而不是 netbeans 插件上传它,但该过程失败,因为:

com.google.appengine.tools.admin.JspCompilationException:无法编译 jsp 文件。

我不能简单地使用 appcfg 脚本让它工作,几乎一整天都在搜索互联网,但没有找到可能的解决方案。使用 netbeans 插件上传没有问题。

那么总是在 gae 上抛出 404 的原因是什么?请帮忙。

非常感谢。如果您需要任何其他信息,我很乐意在这里发布。

好的,这是我的 web.xml

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 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">
<servlet>
    <servlet-name>facebookLogin</servlet-name>
    <servlet-class>Login.FacebookLogin</servlet-class>
</servlet>
<servlet>
    <servlet-name>PlanProcess</servlet-name>
    <servlet-class>Input.PlanProcess</servlet-class>
</servlet>
<welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<servlet-mapping>
    <servlet-name>facebookLogin</servlet-name>
    <url-pattern>/facebooklogin</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>private</servlet-name>
    <jsp-file>private.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>private</servlet-name>
    <url-pattern>/private</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>editPlan</servlet-name>
    <jsp-file>editTrainingPlan.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>editPlan</servlet-name>
    <url-pattern>/private/trainingplan/*</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>listplans</servlet-name>
    <jsp-file>listTrainingPlans.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>listplans</servlet-name>
    <url-pattern>/private/listplans</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>visualize</servlet-name>
    <jsp-file>visualize.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>visualize</servlet-name>
    <url-pattern>/private/visualize</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>graph</servlet-name>
    <jsp-file>graph.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>graph</servlet-name>
    <url-pattern>/graph/*</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>created</servlet-name>
    <jsp-file>created.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>created</servlet-name>
    <url-pattern>/created</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>login</servlet-name>
    <jsp-file>login.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>newRecord</servlet-name>
    <jsp-file>newRecord.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>newRecord</servlet-name>
    <url-pattern>/private/newrecord</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>newPlan</servlet-name>
    <jsp-file>newPlan.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>newPlan</servlet-name>
    <url-pattern>/private/newplan</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>newExcercise</servlet-name>
    <jsp-file>newExcercise.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>newExcercise</servlet-name>
    <url-pattern>/private/newexcercise</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>Webservice</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>test.InsertToDb</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/testinsert</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>recordProcess</servlet-name>
    <servlet-class>Input.RecordProcess</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>recordProcess</servlet-name>
    <url-pattern>/record_process</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>excerciseProcess</servlet-name>
    <servlet-class>Input.ExcerciseProcess</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>excerciseProcess</servlet-name>
    <url-pattern>/excercise_process</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>PlanProcess</servlet-name>
    <url-pattern>/plan_process</url-pattern>
</servlet-mapping>

4

2 回答 2

0

我从未将 JSP 映射到web.xml. 你为什么这样做?

于 2012-04-24T16:45:51.537 回答
0

经过数小时的调试和搜索,我发现,如果你想映射 jsp 文件

你必须使用

<servlet>
    <servlet-name>editPlan</servlet-name>
    <jsp-file>**/**xxx.jsp</jsp-file>
</servlet>

代替

<servlet>
    <servlet-name>editPlan</servlet-name>
    <jsp-file>xxx.jsp</jsp-file>
</servlet>

路径中的“/”是必不可少的,它可以在 loaclhost 上工作,但不能在 gae 上部署。什么狗屎...

于 2012-04-24T12:41:16.977 回答