我有一个带有以下代码的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
答案 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。