Jak używać " < % = request.getContextPath ()%> "lepszy niż"../"

Pracowałem nad wieloma projektami J2EE, gdzie warstwą widoku jest JSP. W większości projektów widziałem, że odwołujemy się do zewnętrznych zasobów tj. obrazów, javascript, JSP, css itp. korzystanie z ścieżki kontekstowej w skrypcie.

Kod jest następujący,

<%@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">

Z powyższego jsp, tutaj importuję zasoby zewnętrzne, które są w moim pakiecie projektu tj. w mojej wojnie.

Teraz to samo powyżej JSP można zapisać jak poniżej,

<%@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">

Tutaj w drugim przykładzie również odwołuję się do zasobów obecnych w mojej wojnie.

Teraz, biorąc pod uwagę oba powyższe dwa przypadki, pierwszy przypadek ma większe znaczenie jako najlepsza praktyka.

Dlaczego?

A jakie są wady używania drugiego przypadku?

Czy używając drugiego przypadku, nasz projekt jest ściślej powiązany z kontekstem?

Proszę mi wyjaśnić.
Author: Positive Energy, 2013-11-01

1 answers

request.getContextPath()- zwraca ścieżkę główną aplikacji, podczas gdy ../ - zwraca Katalog nadrzędny pliku.

Używasz request.getContextPath (), ponieważ zawsze wskazuje na root Twojej aplikacji. Jeśli chcesz przenieść plik jsp z jednego katalogu do drugiego, nic nie trzeba zmieniać. Rozważmy drugie podejście. Jeśli chcesz przenieść pliki jsp z jednego folderu do drugiego, musisz wprowadzić zmiany w każdym miejscu, w którym odsyłasz swoje pliki.

Ponadto, lepiej podejście do wykorzystania żądania.getContextPath () będzie ustawiać ' request.getContextPath () ' w zmiennej i użyj tej zmiennej do odniesienia ścieżki.

<c:set var="context" value="${pageContext.request.contextPath}" />
<script src="${context}/themes/js/jquery.js"></script>
PS-To jest jedyny powód, dla którego mogę się dowiedzieć. Nie wiem, czy ma to jakieś znaczenie.
 57
Author: Sudarshan_SMD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-30 09:51:27