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