为什么Tomcat 6找不到我的styles.css

时间:2011-10-03 14:26:17

标签: css tomcat

尝试确定在网络应用中放置样式表的位置/方式 部署到Tomcat 6,以便可以解析styles.css。 我已经尝试了所有我能想到的但没有成功的事情。

我做了这些测试,试图把文件放进去 很少有人成功。

1.) put css in-line with style attribute to verify text display green. 
    <div id="xxx" style="color:green;">  This worked.
    Then I removed the attribute and
2.) moved it into a in-file <style></style> stmt in the jsp.  This also worked. 
    I copied the css stmt into styles.css and disabled the in-line stmt in the jsp.
3.) added <link></link> stmts to file.  I tried several path refs to the file.
    And I put the file in several different directory locations to see where
    it would get resolved. (none were found)
        <link rel="stylesheet" type="text/css" href="styles.css">
        <link rel="stylesheet" type="text/css" href="css/styles.css">
        <link rel="stylesheet" type="text/css" href="/css/styles.css">

Using FireBug (css tab) I see the follow information for these links
  * <link rel="stylesheet" type="text/css" href="styles.css">
    this displays the src to index.html in the root dir

  * <link rel="stylesheet" type="text/css" href="css/styles.css">
    this displays the msg 
        Apache Tomcat/6.0.13 - Error report
        HTTP Status 404
        The requested resource () is not available.

  * <link rel="stylesheet" type="text/css" href="/css/styles.css">      
    this displays
        Failed to load source for: http://192.168.5.24:9191/css/clStyles.css

contextPath是/微博 并且basepath是http://192.168.5.24:9191/microblog

这是我正在使用的测试代码。

我正在使用Spring 3.我有一个简单的JSP

- test.jsp -

    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <html>
      <head>
        <base href="<%=basePath%>">

        <link rel="stylesheet" type="text/css" href="styles.css">
        <link rel="stylesheet" type="text/css" href="css/styles.css">
        <link rel="stylesheet" type="text/css" href="/css/styles.css">
        <style> 
            #Yxxx {color:green;}
        </style>

      </head>

      <body>
        <div id="xxx">
            <h2>Test  <%=path%>  <%=basePath%></h2>
        </div> 
      </body>
    </html>

我已将styles.css文件放在许多目录位置以查看 它可能会得到解决,但似乎没有找到。

在Tomcat 6中部署了爆炸式网络应用程序目录结构

    webapps/microblog
    webapps/microblog/styles.css
    webapps/microblog/index.html
    webapps/microblog/css/styles.css
    webapps/microblog/WEB-INF/css/styles.css
    webapps/microblog/WEB-INF/jsp/admintest/styles.css
    webapps/microblog/WEB-INF/jsp/admintest/test.jsp

那么如何让Tomcat 6解析.css文件?

5 个答案:

答案 0 :(得分:9)

可能相对的CSS路径是完全错误的。使其相对于域相对而不是路径相对。前缀为上下文路径(在您的情况下为/microblog):

<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/styles.css">

请注意,/WEB-INF中的资源无法公开访问。它们只能由servlet中的RequestDispatcher或JSP中的<jsp:include>访问。把它们放在/WEB-INF之外。

如果它仍然不起作用,那么映射到//*的网址格式的servlet或过滤器可能无法正常工作。

答案 1 :(得分:6)

可能已经很晚了,但我设法以不同的方式解决了这个问题。

我的WebContent和css文件夹中有一个简单的html文件:

这不起作用:

<link rel="stylesheet" type="text/css" href="css/style.css">

并且都没有:

<link rel="stylesheet" type="text/css" href="/css/styles.css">

这是有效的,但它很难看(而且它也在Eclipse中给我一个警告):

<link rel="stylesheet" type="text/css" href="myproject/css/styles.css">

所以我发现这个也正常,对我来说似乎是最好的方法:

<link rel="stylesheet" type="text/css" href="./css/styles.css">

答案 2 :(得分:3)

以下任何一项都无法部署到http://192.168.5.24:9191/microblog

    <link rel="stylesheet" type="text/css" href="styles.css">

这个指向http://192.168.5.24:9191/styles.css

    <link rel="stylesheet" type="text/css" href="css/styles.css">

这个指向http://192.168.5.24:9191/css/styles.css

    <link rel="stylesheet" type="text/css" href="/css/styles.css">

这个指向http://192.168.5.24:9191/css/styles.css

您需要为上下文路径添加前缀:

    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/styles.css">

或完整路径:

    <link rel="stylesheet" type="text/css" href="<%=basePath%>/styles.css">

/ WEB-INF下的资源应该被移除,因为它们不可用于外部请求

答案 3 :(得分:0)

另请考虑使用HTML base tag,这样您就不需要一直输入$ {pageContext.request.contextPath}。

答案 4 :(得分:0)

这也发生在我身上。我只需在css文件中的任意位置键入一个空格并保存即可解决它。路径应该只是“css / style.css”。在我看来,如果该文件(或文件的路径)发生更改(例如重命名或重定位),Tomcat有时不会立即识别您的文件。我发现使Tomcat“意识到”这一变化的唯一方法是对文件进行一些更改并保存,如果没有这样做,重新部署或刷新将无济于事。