2009-12-30 122 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("/")%>