【问题标题】:CSS file is not loading?CSS文件没有加载?
【发布时间】:2010-12-31 02:48:28
【问题描述】:

我有一个包含以下代码的 JSP 文件

 <HTML>
 <head>
 <link rel="stylesheet" type="text/css" href="../CSS/home.css" />
 <link rel="stylesheet" type="text/css" href="../CSS/left.css" />
 <script type="text/javascript" src="../js/friend_request.js"></script> 

 </head>
 <body>
 <div class="menu">
 <form name="search_form" method="post">
<table id="menutabel" class="color">
  <tr>
   <td class="alt"><A class="one"HREF="home.jsp">Home</A></td>
   <td class="alt" ><A class="one"HREF="../HTML/falbum.html">My Album</A></td>
   <td class="alt" ><A class="one"HREF="../HTML/MyDiary.html">My Diary</A></td>
   <td class="alt" ><A class="one"HREF="../HTML/MyFriends.html">Myfriends</A></td>
      </tr>
    </table>
 </form>
 </body>
 </html>

当我在服务器上单独运行此 JSP 文件时,CSS 文件和 Java 脚本文件都正确加载,但问题是当我从 servlet 转发请求时,CSS 和 Java 脚本文件都没有加载。谁能帮我解决这个问题?

我将所有 html、jsp、CSS、java 脚本放在单独的文件夹中。

喜欢

网页内容
|

|-- HTML(此文件夹将包含所有 HTML 文件)

|--- CSS(此文件夹将包含 CSS 文件)
|--- js
|--- JSP

【问题讨论】:

  • 您用来访问 servlet 的 URL 是什么?
  • 我正在使用 localhost:8080/"Projectname"/"Servletname"> 访问 servlet,我能知道你为什么问这个吗?

标签: java javascript html css servlets


【解决方案1】:

当 css 和 js 等外部文件未加载时,请使用绝对路径。示例:

<%=request.getRealPath("/")%>

【讨论】:

    【解决方案2】:

    利用 HTML &lt;base&gt; 标签。它表示最终 HTML 输出中使用的所有相对 URL 的 基本 URL。如果您使用HttpServletRequest#getContextPath() 设置它,那么您页面中的所有链接都将相对于http://example.com/contextname URL,在您的情况下为http://localhost:8080/Projectname

    <!doctype html>
    <html lang="en">
        <head>
            <base href="${pageContext.request.contextPath}">
            <link rel="stylesheet" type="text/css" href="css/style.css">
            <script type="text/javascript" src="js/script.js"></script>
        </head>
        <body>
            <ul>
                <li><a href="html/page.html">HTML page</a></li>
                <li><a href="jsp/page.jsp">JSP page</a></li>
            </ul>
        </body>
    </html>
    

    请注意,您应该/ 开头的相对 URL,否则它们将导致域根,例如http://example.com/yourlink.

    顺便说一句,链接不需要放在表单中。 HTML 表格也应该只用于表格数据,而不是其他内容。 Learn semantic HTML as well.

    【讨论】:

    • (+1) 不知道该标签存在.. :)
    • 感谢您的提示,我只是想创建一个看起来完美对齐的导航栏,为此我使用了表格。现在将处理您提供的提示。
    【解决方案3】:

    使用&lt;c:url&gt; 解析绝对URI(本示例假设您的代码中的“..”是webapp 根):

    <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
    <HTML> 
     <head> 
     <link rel="stylesheet" type="text/css" href="<c:url value = "/CSS/home.css" />" /> 
     <link rel="stylesheet" type="text/css" href="<c:url value = "/CSS/left.css" />" /> 
     <script type="text/javascript" src="<c:url value = "/js/friend_request.js"></script>  
    
     </head> 
     <body> 
     <div class="menu"> 
     <form name="search_form" method="post"> 
    <table id="menutabel" class="color"> 
      <tr> 
       <td class="alt"><A class="one"HREF="<c:url value = "/home.jsp" />">Home</A></td> 
       <td class="alt" ><A class="one"HREF="<c:url value = "/HTML/falbum.html" />">My Album</A></td> 
       <td class="alt" ><A class="one"HREF="<c:url value = "/HTML/MyDiary.html" />">My Diary</A></td> 
       <td class="alt" ><A class="one"HREF="<c:url value = "/HTML/MyFriends.html" />">Myfriends</A></td> 
          </tr> 
        </table> 
     </form> 
     </body> 
     </html>
    

    【讨论】:

    • (+1)
    • JSP 中的所有c:url 有点乱。但是c:url 的另一个主要优点是它会自动执行“URL 重写”,以防会话在整个故事中发挥作用并且客户端禁用了 cookie。如果是这样的话,我也会去的。
    【解决方案4】:

    我会检查服务器日志以找出浏览器在加载此页面及其依赖项时所请求的 URL。

    【讨论】:

    • 这取决于您运行的网络服务器。
    • 我用的是apache tomcat,我用eclipse配置过tomcat,apache tomcat文件夹中的log文件夹是空的。那我在哪里可以找到
    【解决方案5】:

    这些文件是从客户端加载的,它将解释指向基本 URL 的相对链接。如果您在内部将请求转发到不同的 servlet,则必须注意客户端认为的 URL。可能需要切换到绝对链接或生成基本标记。

    这些类型的问题在使用 Firebug 或 Safari 进行客户端调试时很容易看到。您可能在 css 和 javascript 链接上得到 404。

    【讨论】:

      猜你喜欢
      • 2020-05-19
      • 2016-12-06
      • 2021-11-02
      • 2021-12-15
      • 2018-09-08
      • 1970-01-01
      • 2013-01-10
      • 2020-07-25
      • 2015-02-11
      相关资源
      最近更新 更多