web-dev-qa-db-fra.com

Comment utiliser "<% = request.getContextPath ()%>" mieux que "../"

J'ai travaillé sur un certain nombre de projets J2EE dont la couche de vue est JSP. Dans la plupart des projets, nous avons vu que nous référenions des ressources externes, telles que des images, javascript, jsp, css, etc., en utilisant le chemin contextPath du scriptlet.

Le code est comme suit,

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>GC Demo Using HandlebarsJS</title>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/jqueryUI-AutoComplete/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/jqueryUI-AutoComplete/jquery-ui-1.10.3.custom.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/handlebarsJS/handlebars.js"></script>
    <link rel="stylesheet" type="text/css" href="${pageContext.servletContext.contextPath}/js/jqueryUI-AutoComplete/jquery-ui-1.10.3.custom.css">

À partir de jsp ci-dessus, j’importe ici les ressources externes qui sont dans le même lot de projets, c’est-à-dire dans ma guerre.

Maintenant, la même chose que JSP ci-dessus peut être écrite en tant que code ci-dessous,

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>GC Demo Using HandlebarsJS</title>
    <script type="text/javascript" src="../js/jqueryUI-AutoComplete/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="../js/jqueryUI-AutoComplete/jquery-ui-1.10.3.custom.js"></script>
    <script type="text/javascript" src="../js/handlebarsJS/handlebars.js"></script>
    <link rel="stylesheet" type="text/css" href="../js/jqueryUI-AutoComplete/jquery-ui-1.10.3.custom.css">

Ici aussi, dans le deuxième exemple, je fais référence aux ressources présentes dans ma guerre.

Considérant maintenant les deux cas ci-dessus, le premier cas a plus d'importance comme pratique exemplaire.

Pourquoi?

et quels sont les inconvénients de l'utilisation du second cas?

En utilisant le second cas, notre projet est-il plus étroitement associé au contextpath?

S'il te plait explique moi.

24
Rahul Shivsharan

request.getContextPath()- renvoie le chemin racine de votre application, tandis que ../ - renvoie le répertoire parent d'un fichier.

Vous utilisez request.getContextPath (), car il pointe toujours vers la racine de votre application. Si vous deviez déplacer votre fichier jsp d'un répertoire à un autre, rien ne doit être changé. Maintenant, considérons la deuxième approche. Si vous deviez déplacer vos fichiers jsp d'un dossier à un autre, vous devrez apporter des modifications à chaque emplacement où vous faites référence à vos fichiers.

En outre, une meilleure approche pour utiliser request.getContextPath () consistera à définir 'request.getContextPath ()' dans une variable et à utiliser cette variable pour faire référence à votre chemin.

<c:set var="context" value="${pageContext.request.contextPath}" />
<script src="${context}/themes/js/jquery.js"></script>

PS- C'est la seule raison pour laquelle je peux comprendre. Je ne sais pas s'il y a plus d'importance à cela.

53
Sudarshan_SMD