将 Servlet 映射到 /

问题描述 投票:0回答:1

我使用 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个回答
1
投票

默认 servlet 使用 url 模式

/
,它能够加载其他 servlet 未映射的静态资源。当您切换到此模式时,它就停止工作了。因此,您应该保留 servlet 映射。

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

如果您想从索引页面开始,请使用

index.jsp
配置中列出的
<welcome-file-list>
。索引页面可以使用

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

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

<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/aui-min_2.0.0.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.