java - tomcat是如何解析资源的?

标签 java jsp tomcat servlets

我开发网络应用程序。

Tomcat servlet 容器上的 Spring+Hibernate。

今天我在另一台 PC 上部署了应用程序,发现 css 没有加载。

在 jsp 中我为此使用相对路径(示例)

<link href="/resources/css/ui-lightness/jquery-ui-1.10.0.custom.min.css" rel="stylesheet">

浏览器发送的相应请求:

http://localhost:8080/resources/css/ui-lightness/jquery-ui-1.10.0.custom.min.css

并且此请求返回 404 http 错误。


对于另一个jsp:

<link href="/resources/css/bootstrap.min.css" rel="stylesheet">

浏览器发送:

http://localhost:8080/terminal-company/resources/css/bootstrap.min.css

因此您可以看到,从第一个 jsp 项目名称开始并没有添加到 URL

为什么?以及如何解决?询问我应该添加到相关答案中的详细信息。

项目结构:

enter image description here

web.xml 的 spring 相关部分:

<servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>/WEB-INF/spring/webContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

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

最佳答案

如果您的目标是能够使用绝对路径,而不关心(和不知道)webapp 的上下文路径(在您的第二个示例中为 /terminal-company),则使用 the JSTL <c:url>生成所有 URL 的标记:

<link href="<c:url value='/resources/css/bootstrap.min.css'/>" rel="stylesheet">

第二个例子会发送一个请求到/resources/css/bootstrap.min.css , 而不是 /terminal-company/resources/css/bootstrap.min.css , 除非有 <base>生成的 HTML 页面中的标记。

编辑:您最初的问题并没有说您正在使用 spring,并将/映射到调度程序 servlet。 Spring因此负责服务资源。 The documentation解释了如何配置它。但这并没有改变上面的答案:要独立于上下文路径,请使用 c:url。

关于java - tomcat是如何解析资源的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26421390/

相关文章:

java - 下载文件时在浏览器中提示加载

java - Tomcat 无法启动使用 netbeans

java - 在 Java 项目中获取所有构建错误的最快方法是什么?

java - 自定义 html <display :column></display:cloumn>

java - 使用 exec-maven-plugin 进行调试

java - jsp中执行对象方法

spring - 断言失败 : Transaction MARKED_FOR_JOINED after isOpen() call

java.lang.NoClassDefFoundError : apache-tomcat-7. 0.25

java - 如何使用以编程方式创建的父上下文在嵌入式 Servlet 3 环境中创建基于 Spring(4) XML 的 WebApplicationContext?

java - JFrame 的半透明加载覆盖