2010-05-24 17 views
5

¿Cómo debo acceder al ServletContext desde un .jsp? Por ejemplo, cómo puedo llamar al método getRealPath desde dentro de .jsp.Java (JSP/Servlet): equivalente de getServletContext() desde adentro de .jsp

Aquí es un Servlet, que funciona bien:

protected void doGet(
      HttpServletRequest req, 
      HttpServletResponse resp 
    ) throws ServletException, IOException { 
     resp.setContentType("text/html; charset=UTF-8"); 
     final PrintWriter pw = resp.getWriter(); 
     pw.print("<html><body>"); 
     pw.print(getServletContext().getRealPath("text/en")); 
     pw.print("</body></html>"); 
     pw.flush(); 
     pw.close(); 
    } 

Ahora estoy buscando la línea exacta que tengo que insertar en el siguiente .jsp a hacer exactamente lo mismo que el servlet arriba está haciendo.

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<html> 
    <body> 
    ... // What should I insert here 
    </body> 
</html> 
+0

Vea también http://stackoverflow.com/questions/2964250/jsp-getservletcontext-error – Vadzim

Respuesta

10

El ServletContext es accesible a través del objeto implícito application.

Como cada JSP es un servlet, también puede usar getServletContext().

Pero ... evite tener un código como ese en el JSP. En su lugar, obtenga el valor que necesita en su servlet y configúrelo como un atributo de solicitud, simplemente leyéjelo en el JSP (preferiblemente a través de JSTL)

10

Prueba esto:

${pageContext.servletContext} 
+0

Usted es muy rápido. Estaba a punto de decir lo mismo. – TCM

+0

De la pregunta: * "Por ejemplo, ¿cómo puedo llamar al método getRealPath() desde dentro de .jsp" *? – SyntaxT3rr0r

+1

@Webinator: ese método requiere un parámetro de cadena para que no pueda llamarlo mediante la notación '$ {}'. Existen al menos 3 enfoques diferentes: 1) Puede llamar a este método dentro de un bean (lo mejor para el caso en mi humilde opinión) 2) Puede crear una etiqueta personalizada y llamarla desde allí 3) Puede escribir un scriplet ('< % // algún código aquí%> ') - el peor en mi humilde opinión. – Roman

2

creo que esto debería funcionar bien en una página JSP:

<body> 
<% 
out.print(getServletContext().getAttribute("attribute")); 
%> 
</body> 
2

Si está buscando utilizar el método getRealPath(), podría considerar buscar en una etiqueta jstl llamado 'c: url'

<c:url value="text/en" /> 
1

Sólo tiene que utilizar application.getRealPath(" ");.