2009-12-30 4 views
1

J'ai un fichier JSP avec les codes ci-dessousLe fichier CSS ne se charge pas?

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

Quand je lance ce fichier JSP individuellement sur le serveur à la fois le fichier CSS et le fichier de script Java est chargé correctement, mais le problème est quand je transmets la demande d'un servlelt à la fois le CSS et le fichier Java Script ne se charge pas. Quelqu'un peut-il m'aider avec ce problème? J'ai tous les scripts html, jsp, CSS, java dans des dossiers séparés.

Comme

contenu Web
|

| - HTML (Ce dossier aura tous les fichiers HTML)

| --- CSS (Ce dossier aura des fichiers CSS)
| --- js
| --- JSP

+0

Quelle est l'URL que vous utilisez pour accéder à votre servlet? – Brabster

+0

J'utilise pour accéder au servlet, puis-je savoir pourquoi vous me demandez cela? – Hariharbalaji

Répondre

4

Faire usage de la balise HTML <base>. Il indique l'URL de base de toutes les URL relatives utilisées dans la sortie HTML finale. Si vous le définissez avec HttpServletRequest#getContextPath(), alors TOUS les liens de votre page seront relatifs à l'URL http://example.com/contextname, qui est http://localhost:8080/Projectname dans votre cas.

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

Notez que vous devez pas commencer l'URL relative avec /, sinon ils vont conduire à la racine de domaine, par exemple http://example.com/yourlink. Par ailleurs, les liens n'ont pas besoin d'être placés à l'intérieur d'un formulaire. Les tables HTML doivent également être utilisées uniquement pour les données tabulaires et non pour les autres contenus. Learn semantic HTML as well.

+0

(+1) ne savait pas que l'étiquette existait .. :) – Bozho

+0

merci pour le conseil, j'essayais juste de créer une barre de navigation qui semble parfaitement alignée, à cette fin, j'ai utilisé la table. Maintenant, travaillera sur l'indice que vous avez fourni. – Hariharbalaji

2

Ces fichiers sont chargés à partir du client qui interprétera les liens relatifs à l'URL de base. Si vous envoyez en interne une requête à une autre servlet, vous devez faire attention à ce que le client pense être l'URL. Il peut être nécessaire de passer à des liens absolus ou de générer une balise de base.

Ces types de problèmes sont facilement visibles côté débogage avec Firebug ou Safari par exemple. Vous obtenez probablement 404 sur les liens css et javascript.

0

Je voudrais examiner les journaux du serveur pour trouver les URL qui sont demandées par le navigateur lorsqu'il charge cette page et ses dépendants.

+0

comment examiner les journaux de serveur? – Hariharbalaji

+0

Cela dépend du serveur Web que vous utilisez. –

+0

J'utilise apache tomcat, j'ai configuré tomcat avec eclipse, et le dossier journal dans le dossier apache tomcat est vide. Alors, où puis-je trouver que – Hariharbalaji

3

Utilisez <c:url> pour résoudre les URIs absolus (cet exemple suppose que ".." dans votre code est une racine 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> 
+0

(+1) Bozho

+0

Tous ces 'c: url' dans la JSP est un peu brouillon. Mais un autre avantage majeur de 'c: url' est qu'il fait automatiquement la" réécriture d'URL "pour le cas où la session joue un rôle dans toute l'histoire et que le client a des cookies désactivés. Si c'est le cas, je le ferais aussi. – BalusC

1

Lorsque des fichiers externes comme css et js ne sont pas chargés, utilisez le chemin absolu. Exemple:

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