1

标题是不言自明的。当我在 Netbeans (Tomcat 7) 上运行我的应用程序时,一切正常(我的 dir 结构中的根 index.jsp 文件显示在浏览器中):

在此处输入图像描述

当我将应用程序部署到我的生产服务器时,它会成功部署:

在此处输入图像描述

但是,当我尝试访问生产服务器中的页面时,它只显示一个空白页面,而不是 index.jsp 文件:

在此处输入图像描述

这是我的这个应用程序的 web.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<filter>
    <filter-name>filter</filter-name>
    <filter-class>com.dendro.mvc.filters.StaticFilesFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- abstract controller to filter static file requests -->
<servlet>
    <servlet-name>Controller</servlet-name>
    <servlet-class>com.dendro.mvc.filters.Controller</servlet-class>
</servlet>
<!-- servlet names -->
<servlet>
    <servlet-name>PropagatedResults</servlet-name>
    <servlet-class>com.dendro.query.PropagatedResultsServlet</servlet-class>
</servlet>
<servlet>
    <servlet-name>PlainResults</servlet-name>
    <servlet-class>com.dendro.query.PlainResultsServlet</servlet-class>
</servlet>
<servlet>
    <servlet-name>HomeFilter</servlet-name>
    <servlet-class>com.dendro.query.HomeFilterServlet</servlet-class>
</servlet>

<!-- mappings -->
<servlet-mapping>
    <servlet-name>Controller</servlet-name>
    <url-pattern>/views/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>HomeFilter</servlet-name>
    <url-pattern>/views/</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>PlainResults</servlet-name>
    <url-pattern>/views/query/plain_results</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>PropagatedResults</servlet-name>
    <url-pattern>/views/query/propagated_results</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list> 

还有我的 context.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path=""/>

tomcat 日志只显示成功的请求(200 ok):

192.168.5.77 - - [23/Jun/2012:14:00:29 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200 -
192.168.5.77 - - [23/Jun/2012:14:00:29 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200  -
192.168.5.77 - - [23/Jun/2012:14:00:30 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200 -
192.168.5.77 - - [23/Jun/2012:14:00:31 +0100] "GET /GraphQuery-1.0-SNAPSHOT/ HTTP/1.1" 200  -
4

2 回答 2

1

尝试以下提示,我试图缩小错误来源:

  • 检查您是否是使用指定过滤器过滤的内容。也许改进/*映射有帮助?
  • 还可以尝试访问您定义的其他一些 URL 映射,例如localhost:8080/GraphQuery-1.0-SNAPSHOT/views/
  • 在访问 URL 时显式映射/到您index.jsp或您想要执行的 servlet。对于到 JSP 文件的映射,您可以使用 web.xml 中jsp-file元素中的servlet-mapping元素。
于 2012-06-23T14:49:26.017 回答
0

原来问题是我在 web.xml 文件中的过滤器类。最初我把它放进去处理 Tomcat 中的静态文件服务,但它似乎让 Tomcat 感到困惑,并且没有日志显示重定向或异常。它在 Netbeans 中工作,因为 Netbeans 始终将您正在调试的应用程序部署在 ROOT 文件夹中。与 tomcat 生产服务器不同,没有需要考虑的上下文目录,例如

http://localhost:8084/myapp,

其中 myapp 是上下文。

在更改 web.xml 文件并为静态文件使用默认 servlet 之后,我开始使用相对映射——有时有点不合时宜,但它可以工作。

我不得不更改项目中的一些 url 以说明更改。由于在生产服务器中我在 URL 中有上下文,因此我必须更改 CSS 中的 URL,例如,使用相对路径,例如 ../static/img/myimage.jpg

这是现在正在运行的 Web.xml 文件的新版本,供进一步参考:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">

    <!--servlet classes-->
    <servlet>
        <servlet-name>PropagatedResults</servlet-name>
        <servlet-class>com.dendro.query.PropagatedResultsServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>PlainResults</servlet-name>
        <servlet-class>com.dendro.query.PlainResultsServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>Home</servlet-name>
        <servlet-class>com.dendro.query.HomeServlet</servlet-class>
    </servlet>

    <!--serving static files-->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpeg</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
    </servlet-mapping>

    <!--servlets urls-->
    <servlet-mapping>
        <servlet-name>PlainResults</servlet-name>
        <url-pattern>/query/plain_results</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>PropagatedResults</servlet-name>
        <url-pattern>/query/propagated_results</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>Home</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>
于 2012-06-25T18:03:01.353 回答