martes, 31 de agosto de 2010

PATH DEL JSP

Por ahí tenia el problema de crear un archivo javascript mediante una pagina jsp, el archivo lo creaba en una ruta inaccesible por el browser, y necesitaba que el js se creara exactamente en el mismo directorio donde se ejecuta el jsp.

los metodos para obtener estas rutas son:

request.getServletPath();
request.getServletContext().getRealPath();

si juntamos ambas:
String path1 = request.getServletPath();
String path2 = request.getServletContext().getRealPath(path1);

Obtendremos la ruta completa, incluido el nombre de nuestro jsp, ahora se requiere borrar esl nombre del jsp y quedar solo con la ruta...
una solución es haciendolo con el metodo replace, pero de antemano tenemos que conocer el nombre del jsp, cosa que no nos sirve de mucho si pretendemos usar la rutina en otras páginas...

Bueno aquí la clase para hacer esto independiente del nombre del jsp.


package Variables;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;

/**
*
* @author Nocturnus
*/
public class locales extends HttpServlet {
//private HttpServletResponse response;
public String path(HttpServletRequest request)
{
//-- OBTENER LA RUTA DE EJECUCION DEL JSP QUE ME LLAMA.
String path1 = request.getServletPath();
String path2 = request.getServletContext().getRealPath(path1);
int LONGPATH2 = path2.length()-1;
char charr[] = path2.toCharArray();
String jspruta="";
int g=0;
while(LONGPATH2 > 0)
{
if(String.valueOf(charr[LONGPATH2]).equals("/"))
{
g=LONGPATH2+1;
LONGPATH2 = 0;
}
LONGPATH2 = --LONGPATH2;
}
for (int i = 0; i < g; i++)
{
jspruta= jspruta.concat(String.valueOf(charr[i]));

}
//---------------------------------
return jspruta;
}

la llamamos desde la página jsp así:
Variables.locales local = new Variables.locales();
String la_ruta_es=local.path(request);
out.println(la_ruta_es);

Entonces, es necesario aclarar que estoy recien conociendo el mundillo java o el mundote java... por tanto, si usted conoce una forma mucho más rapida da saber este path, DIGAMELO jejeje.