jsp - not - ¿Cómo es mejor usar "<%=request.getContextPath()%>" que "../"
pagecontext request contextpath in jsp not working (1)
request.getContextPath()-
devuelve la ruta raíz de su aplicación, mientras que ../
: devuelve el directorio principal de un archivo.
Utiliza request.getContextPath (), ya que siempre apunta a la raíz de tu aplicación. Si tuviera que mover su archivo jsp de un directorio a otro, no es necesario cambiar nada. Ahora, consideremos el segundo enfoque. Si moviera sus archivos jsp de una carpeta a otra, tendría que hacer cambios en cada ubicación en la que esté refiriendo sus archivos.
Además, un mejor enfoque para usar request.getContextPath () será establecer ''request.getContextPath ()'' en una variable y usar esa variable para referir su ruta.
<c:set var="context" value="${pageContext.request.contextPath}" />
<script src="${context}/themes/js/jquery.js"></script>
PD: Esta es la única razón por la que puedo entenderlo. No sé si hay más significado para ello.
He trabajado en varios proyectos J2EE donde la capa de vista es JSP. En la mayoría de los proyectos, he visto que hacemos referencia a recursos externos, es decir, imágenes, javascript, jsp''s, css, etc., utilizando el contextPath en el scriptlet.
El código es el siguiente,
<%@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">
Desde el jsp anterior, aquí estoy importando los recursos externos que están en mi mismo paquete de proyectos, es decir, en mi guerra.
Ahora, el mismo JSP anterior se puede escribir como el código siguiente,
<%@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">
Aquí también en el segundo ejemplo me refiero a los recursos presentes en mi guerra.
Ahora, considerando los dos casos anteriores, al primer caso se le da más importancia como una mejor práctica.
¿Por qué?
¿Y cuáles son los inconvenientes de usar el segundo caso?
¿Utilizando el segundo caso, nuestro proyecto se acopla más estrechamente a la ruta de contexto?
Por favor explícame.