CSS文件没有加载?

时间:2009-12-30 13:40:38

标签: java javascript html css servlets

我有一个带有以下代码的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脚本文件都正确加载,但问题是当我转发来自servlelt的请求时,CSS和Java Script文件都没有加载。任何人都可以帮我解决这个问题吗?

我将所有html,jsp,CSS,java脚本放入不同的文件夹中。

Web的内容
|

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

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

5 个答案:

答案 0 :(得分:4)

使用HTML <base>标记。它表示最终HTML输出中使用的所有相对URL的基本URL 。如果您使用HttpServletRequest#getContextPath()进行设置,那么您网页中的所有链接都将相对于http://example.com/contextname网址,在您的情况下为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>

请注意,您应该使用/启动相对网址,否则它们会指向域根,例如http://example.com/yourlink

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

答案 1 :(得分:3)

使用<c:url>解析绝对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>

答案 2 :(得分:2)

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

例如,使用Firebug或Safari可以很容易地看到这些类型的问题进行客户端调试。你可能在css和javascript链接上获得了404.

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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