J'ai ce projet d'application Web basé sur servlet dans Eclipse et je veux ajouter des balises html comme <script src="Chart.js">
.
La structure des dossiers est la suivante:
J'ai des problèmes de chemin, et je ne peux pas les résoudre, j'ai cherché encore et encore et ne fonctionne toujours pas, j'obtiens un 404 (Not Found) pour http://localhost:8080/CpdApplication/Chart.js
.
Le problème est quand je veux ajouter <script src='Chart.js'></script>
, Tomcat ne peut pas résoudre le Chart.js
fichier statique.
J'ai des problèmes de chemin, et je ne peux pas les résoudre, j'ai cherché encore et encore et ne fonctionne toujours pas, j'obtiens un 404 (introuvable) pour .../CpdApplication/Chart.js
En effet, lors de l'écriture de <script src="/Chart.js"/>
vous dites au navigateur de faire sa propre requête HTTP séparée pour obtenir le fichier JavaScript. Pour que cela fonctionne:
Cela devrait faire:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/js/*</url-pattern>
</servlet-mapping>
Placez ensuite votre Chart.js
dans le dossier suivant: WebContent/js/
et ça devrait marcher.
MODIFIER : Bien sûr, vous devrez mettre à jour le <script>
tag dans votre HTML. Assurez-vous également de redéployer votre application Web pour mettre à jour web.xml sur votre conteneur de servlet (Tomcat, je suppose).
Cela fonctionne pour moi. Merci 沖 原 ハ ー ベ ス ト
welcome.jsp
<head>
<script src="resources/js/jsx/browser.min.js"></script>
<script src="resources/js/react/react.min.js"></script>
<script src="resources/js/react/react-dom.min.js"></script>
<script src="resources/js/main.js"></script>
<link rel="stylesheet" type="text/css" href="resources/css/style.css">
</head>
Arborescence de la hiérarchie des fichiers
Web.xml
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
Il me semble que Chart.js est stocké dans le même dossier que la source de votre servlet.
Habituellement, vous devriez avoir une structure comme celle-ci (je l'ai simplifiée):
/css/your-css.css
/js/your-script.js
/src/your-package/YourServlet.Java
Chaque fois que vous exécutez votre application, votre compilateur crée un ensemble de fichiers qui seront copiés dans votre conteneur Web. Les fichiers copiés n'incluent pas votre dossier src , mais plutôt une copie de vos classes construites (compilées). Tous les autres fichiers (à quelques exceptions près dont nous ne devons pas nous soucier pour le moment) doivent se trouver en dehors de votre dossier src afin d'être copiés.
Essayez de déplacer votre JS dans un répertoire js en dehors de votre répertoire src. Ensuite, liez-le comme ceci:
<script src='/Your-Context-Path/js/Chart.js'>
Il doit y avoir une fonction pour obtenir votre chemin de contexte automatiquement, je pense que c'est
ServletContext.getContextPath()
Vous pouvez en lire plus ici .
Cela devrait faire l'affaire.
Comme @Andy a répondu, vous devez placer toutes vos ressources (JS, CSS, images, etc.) dans un dossier de votre application, puis y accéder en utilisant <context_path>/folder/to/your/resource/<resource_name>.<ext>
. Voici un exemple de la façon de procéder:
Voici à quoi devraient ressembler vos dossiers d'application:
- WebContent
- res
- js
Chart.js
Dans votre JSP:
<script src="${request.contextPath}/res/js/Chart.js"></script>
Puisque vous créez le contenu de la vue à partir de votre servlet (une prise de vue au pied, soit dit en passant), utilisez request#getContextPath()
pour le joindre:
"script src=\"" + request#getContextPath() + "/res/js/Chart.js\"></script>";