2009-12-30 124 views
1

我有下面的代碼的JSP文件CSS文件未加載?

<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> 

當我在服務器上的CSS文件和Java腳本文件正確裝入兩個單獨運行這個JSP文件,但問題是,當我轉發來自servlelt的請求不會加載CSS和Java腳本文件。任何人都可以幫我解決這個問題嗎?

我把所有的html,jsp,CSS,java腳本放到單獨的文件夾中。

的Web內容
|

| - HTML(此文件夾將所有的HTML文件)

| --- CSS(此文件夾將CSS文件)
| --- JS
| --- JSP

+0

什麼是您用來訪問您的servlet的URL? – Brabster 2009-12-30 13:43:58

+0

我使用來訪問這個servlet,我知道你爲什麼這麼問嗎? – Hariharbalaji 2009-12-30 14:24:53

回答

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> 

請注意,您應該啓動相對URL與/,否則會導致域根,例如http://example.com/yourlink

順便說一下,鏈接不需要放在表單中。此外,HTML表格只能用於表格數據,而不能用於其他內容。 Learn semantic HTML as well

+0

(+1)不知道該標記是否存在.. :) – Bozho 2009-12-30 19:52:15

+0

感謝提示,我只是想創建一個完美對齊的導航欄,爲此我使用了表格。現在將根據您提供的提示開展工作。 – Hariharbalaji 2009-12-31 07:36:20

2

這些文件是從客戶端加載的,它將解釋相對於基本URL的鏈接。如果您在內部將請求轉發給其他servlet,則必須注意客戶認爲的URL。可能需要切換到絕對鏈接或生成基本標籤。

這些類型的問題很容易看到用Firebug或Safari進行客戶端調試。您可能在CSS和JavaScript鏈接上獲得404s。

0

我會檢查服務器日誌以找出瀏覽器在加載此頁面及其依賴項時所請求的URL。

+0

如何檢查服務器日誌? – Hariharbalaji 2009-12-30 14:06:09

+0

這取決於您正在運行的Web服務器。 – 2009-12-30 14:55:17

+0

我使用apache tomcat,我配置了tomcat和eclipse,並且apache tomcat文件夾中的日誌文件夾是空的。那麼我在哪裏可以找到 – Hariharbalaji 2009-12-31 07:31:53

3

使用<c:url>解決絕對URI(本例假設「」在你的代碼是一個Web應用程序根目錄):

<%@ 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> 
+0

(+1) Bozho 2009-12-30 19:51:27

+0

JSP中的所有'c:url'都有點混亂。但'c:url'的另一個主要優點是它會自動爲整個故事中的會話發揮作用並且客戶端禁用了Cookie的情況下執行「URL重寫」。如果是這樣的話,我也會去做。 – BalusC 2009-12-30 20:02:16

1

當像css和js這樣的外部文件未被加載時,請使用絕對路徑。示例:

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