【问题标题】:Failed to load resource files when mapping Servlet on URL pattern of /在 / 的 URL 模式上映射 Servlet 时加载资源文件失败
【发布时间】:2015-01-07 22:28:36
【问题描述】:

我使用 NetBeans 和 Tomcat 7.0.4.2,并且想将我的项目的 URL 地址从 localhost:8080/Servlet 更改为 localhost:8080/。在web.xml 中,我将servlet URL 地址从<url-pattern>/Servlet</url-pattern> 更改为<url-pattern>/</url-pattern>

问题是我现在无法加载资源文件并在浏览器控制台日志中出现错误:

  Failed to load resource: the server responded with a status of 404 (Not Found) (11:45:14:149 | error, network)
  at src/main/webapp/scripts/aui-min_2.0.0.js

资源文件的路径是src/main/webapp/scripts,在JSP文件中我使用这个路径

<script type="text/javascript" src="scripts/aui-min_2.0.0.js"></script>

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>
        <servlet-name>Servlet</servlet-name>
        <servlet-class>socialgraphui.Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

【问题讨论】:

标签: servlets resources web.xml url-pattern


【解决方案1】:

默认情况下使用 url 模式 / servlet,它能够加载其他 servlet 未映射的静态资源。当您切换到此模式时,它停止工作。所以,你应该保留一个 servlet 映射。

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

如果您想从索引页面开始,请使用&lt;welcome-file-list&gt; 配置中列出的index.jsp。索引页面可以使用

重定向到 servlet
response.sendRedirect(request.getContextPath() +"/Servlet");

要加载静态资源,请使用类似的 servlet 上下文路径

<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/aui-min_2.0.0.js"></script>

【讨论】:

  • 感谢 Roman 的回复,但之后 tomcat 将我的项目部署在一个循环中并且无法停止
  • 好的,重新部署。
  • 感谢 Roman,但它仍然不起作用。这是我的新 web.xml pastebin.com/ZZjQ0EgE,现在我可以在 localhost:8080/ 地址上加载我的源代码,但是使用此解决方案我无法将变量从 Servlet 传递到 index.jsp 文件。在 Servlet 类中,我尝试替换 request.getRequestDispatcher("index.jsp").forward(request, response);通过 response.sendRedirect("/Servlet");在 processRequest 方法中,但仍然不能传递变量。
  • index.jsp 应该只有代码 &lt;%response.sendRedirect("/Servlet");%&gt;。但是您可以分派到另一个页面,以避免死循环。
猜你喜欢
  • 2011-05-12
  • 2017-03-27
  • 2011-02-24
  • 1970-01-01
  • 2020-12-16
  • 2011-11-17
  • 2020-03-15
  • 2014-10-10
  • 1970-01-01
相关资源
最近更新 更多