Foros del Web » Programación para mayores de 30 ;) » Java »

Para los que ponen sus jsp dentro de /WEB-INF/

Estas en el tema de Para los que ponen sus jsp dentro de /WEB-INF/ en el foro de Java en Foros del Web. Hola, buen dia a todos. No se si este tema va aqui. El tema que quiero tratar es que a lo largo de mi experiencia ...
  #1 (permalink)  
Antiguo 11/08/2008, 10:59
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Para los que ponen sus jsp dentro de /WEB-INF/

Hola, buen dia a todos.

No se si este tema va aqui.

El tema que quiero tratar es que a lo largo de mi experiencia he visto sistemas y ejemplos (aqui tambien lo he visto) donde colocan las paginas jsp dentro del directorio /WEB-INF/.

Yo se que lo hacen por "seguridad" ya que el directorio /WEB-INF/ es invisible para el usuario y es practicamente IMPOSIBLE accesar a él desde una URL.

Tambien me han dicho algunos desarrolladores que lo hacen para ahorrarse el tiempo de validar la sesion de un usuario dentro del jsp, siendo que Java nos da muchas opciones para hacer eso, y les da flojera hacer la validacion.

Segun la especificacion J2EE dice que NO debemos colocar los archivos de presentacion (jsp, imagenes, etc) dentro de /WEB-INF/ , es decir, no debemos de mezclar la capa de la Vista con el Controlador/Modelo.

Cuando programamos con MVC quiere decir que separamos nuestro sistema en capas, cada una es independiente de la otra, pero..... ¿para que poner nuestra capa de presentacion (Vista) dentro de la capa Controlador-Modelo???, seria como programar en dos capas?? seria como, por ejemplo, no usar Servlets y poner TODO nuestro codigo Java dentro de un JSP.

En lo personal NUNCA he hecho esto de poner mis jsp's dentro de /WEB-INF/, y tengo la idea que NO se debe de hacer.

Bueno, esa es mi opinion y mi punto de vista.

Espero comentarios.

Saludos!!
  #2 (permalink)  
Antiguo 11/08/2008, 11:38
 
Fecha de Ingreso: julio-2008
Mensajes: 26
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Para los que ponen sus jsp dentro de /WEB-INF/

LA verdad es que yo lo hago, pero porque soy nuevo en esto y un amigo que en teoría sabe algo más que yo me dijo, como bien apuntas, que es más seguro.

LA verdad que con respecto a lo de la separación de capas tienes razón.

Intentaré evitar esta política de trabajo para mi próxima aplicación.

Gracias por la puntualización.

Un saludo.
  #3 (permalink)  
Antiguo 11/08/2008, 11:58
 
Fecha de Ingreso: agosto-2008
Ubicación: Cajamarca
Mensajes: 49
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Para los que ponen sus jsp dentro de /WEB-INF/

Bunburyscom,

I will answer you in english because my spanish is not enough good, sorry.

I think you are making a mistake when you talk about capas and files location. These are two things totally different !!!

Capas is about where is logically your code (in jsp or in servlet), location is about where is physically your code (in /jsp or /WEB-INF/jsp).

Of course you have to respect the capas separation, it means your JSPs pages must not contain JAVA code, only HTML and jsp tags.

But of course it's better to put your JPSs under WEB-INF, and this for two reasons :

1. Security, it's a garanty that users can't call a JSP that they should not access, and you have nothing to do, only put the JSPs under WEB-INF.

2. It's important for the MVC pattern, if your JSPs or under WEB-INF, it forces your users to call the Controller first, and then the Controller call the view to display the result. So the Controller can control before displaying, even if for some special actions there is nothing to control, it's better to do this way.

On the web :
http://www.jroller.com/tomdz/?page=1
http://www.manning-sandbox.com/message.jspa?messageID=52773

I hope this can help you to better develop your web applications.

Cimballi
  #4 (permalink)  
Antiguo 11/08/2008, 12:24
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Para los que ponen sus jsp dentro de /WEB-INF/

Cita:
Iniciado por Cimballi Ver Mensaje
Bunburyscom,

I will answer you in english because my spanish is not enough good, sorry.

I think you are making a mistake when you talk about capas and files location. These are two things totally different !!!

Capas is about where is logically your code (in jsp or in servlet), location is about where is physically your code (in /jsp or /WEB-INF/jsp).

Of course you have to respect the capas separation, it means your JSPs pages must not contain JAVA code, only HTML and jsp tags.

But of course it's better to put your JPSs under WEB-INF, and this for two reasons :

1. Security, it's a garanty that users can't call a JSP that they should not access, and you have nothing to do, only put the JSPs under WEB-INF.

2. It's important for the MVC pattern, if your JSPs or under WEB-INF, it forces your users to call the Controller first, and then the Controller call the view to display the result. So the Controller can control before displaying, even if for some special actions there is nothing to control, it's better to do this way.

On the web :
http://www.jroller.com/tomdz/?page=1
http://www.manning-sandbox.com/messa...essageID=52773

I hope this can help you to better develop your web applications.

Cimballi
Hola Cimballi !!

Respeto mucho tu punto de vista solo que no estoy de acuerdo donde mencionas que es mejor poner las jsp's dentro del directorio /WEB-INF/

Código PHP:
1. Securityit's a garanty that users can't call a JSP that they should not access, and you have nothing to do, only put the JSPs under WEB-INF
Si desarrollas con un framework, por ejemplo Struts, el usuario NUNCA va a saber como se llama la pagina jsp que esta viendo, por lo tanto, no la va a poder llamar, ya que Struts "oculta" el nombre de la jsp (porque utiliza Actions).

Ademas la seguridad la puede manejar uno mismo, y no ocultando archivos.

La estructura de directorios, segun la especificacion java, es:
NombreAplicacion/
|_ jsp
|_WEB-INF/
|_ classes
|_ lib
|_ web.xml

Pero bueno, estoy tratando de entender porque algunos programadores ponen las jsp's dentro del /WEB-INF/

Muchas gracias por tu opinion!!!

Saludos!
  #5 (permalink)  
Antiguo 11/08/2008, 15:51
Avatar de Felippe  
Fecha de Ingreso: octubre-2006
Mensajes: 54
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Para los que ponen sus jsp dentro de /WEB-INF/

Hola que tal,

Lo que comenta Cimballi sobre que 'es una garantía' está muy bien. Me explico:

La tarea que tienen los archivos JSP (en una aplicacion multicapa), es de mostrar la información que 'alguien' le pasa; ese 'alguien' deberá ser un Controlador, por lo que debes asegurarte de que todo contenido que muestre tu aplicación deberá ser por medio de un Controlador, entonces.. al no ser los archivos JSP accesibles directamente, le obligas al usuario a acceder apropiadamente a cada contenido que ofrezca tu aplicación.

Espero haber sido claro en mi explicación.

Un saludo
  #6 (permalink)  
Antiguo 12/08/2008, 00:16
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Para los que ponen sus jsp dentro de /WEB-INF/

Cita:
Iniciado por Bunburyscom Ver Mensaje
Segun la especificacion J2EE dice que NO debemos colocar los archivos de presentacion (jsp, imagenes, etc) dentro de /WEB-INF/ , es decir, no debemos de mezclar la capa de la Vista con el Controlador/Modelo.
La especificación no dice nada de eso. De hecho, en la especificacion JEE ni siquiera se menciona la palabra MVC y solo se hace mencion de WEB-INF para decir que a veces, segun la especificacion de servlets, se colocan librerias .jar en WEB-INF/lib.

Por otro lado, lo de que colocar ficheros JSP e imagenes es mezclar Vista con Controlador/Modelo es algo que no se de donde has sacado, pero como ya menciona Cimballi, no tienen nada que ver. La localizacion física de los ficheros y la separación lógica de tu aplicación en capas son dos cosas diferentes.

Cita:
Iniciado por Bunburyscom Ver Mensaje
Cuando programamos con MVC quiere decir que separamos nuestro sistema en capas, cada una es independiente de la otra, pero..... ¿para que poner nuestra capa de presentacion (Vista) dentro de la capa Controlador-Modelo???, seria como programar en dos capas?? seria como, por ejemplo, no usar Servlets y poner TODO nuestro codigo Java dentro de un JSP.
Como ya se ha dicho, no tiene nada que ver. Desde un punto de vista "físico", la elección es más clara. Lo que no este en WEB-INF se puede llamar desde el navegador. Si tiene sentido poder llamarse directamente desde el navegador, entonces esta fuera de WEB-INF. Si no tiene sentido poder llamar al recurso desde el navegador, no pinta nada fuera de WEB-INF, aunque puede estar si no es por razones de seguridad y realmente no queremos que se pueda hacer.

Es lo mismo que si me dices que poner los ficheros de JavaScript al mismo nivel que las JSP y las HTML es mezclar programacion con vista... no tiene nada que ver, es simplemente organizar físicamente las cosas de una forma o de otra.

Cita:
Iniciado por Bunburyscom
La estructura de directorios, segun la especificacion java, es:
NombreAplicacion/
|_ jsp
|_WEB-INF/
|_ classes
|_ lib
|_ web.xml
De nuevo, la especificación no dice nada sobre donde debes colocar las JSP. Lo que dice es que lo que está dentro de WEB-INF está protegido y no se puede llamar desde fuera. Así que obviamente si pones tus .jsp ahi dentro no las podras llamar si no es a través de un forward interno. La pregunta entonces sería... ¿Si la especificación quiere que pongas las JSP fuera de WEB-INF, por que permite que hagas forwards internos a páginas dentro de WEB-INF? La respuesta es que te deja por que es una cosa deseable que se usa para proteger las JSP de accesos no controlados.


No hay que confundir lo que dice la especificación con "lo que hace mucha gente" o los estandares de facto.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 12/08/2008, 07:26
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Para los que ponen sus jsp dentro de /WEB-INF/

Cita:
Iniciado por GreenEyed Ver Mensaje
La especificación no dice nada de eso. De hecho, en la especificacion JEE ni siquiera se menciona la palabra MVC y solo se hace mencion de WEB-INF para decir que a veces, segun la especificacion de servlets, se colocan librerias .jar en WEB-INF/lib.

Por otro lado, lo de que colocar ficheros JSP e imagenes es mezclar Vista con Controlador/Modelo es algo que no se de donde has sacado, pero como ya menciona Cimballi, no tienen nada que ver. La localizacion física de los ficheros y la separación lógica de tu aplicación en capas son dos cosas diferentes.



Como ya se ha dicho, no tiene nada que ver. Desde un punto de vista "físico", la elección es más clara. Lo que no este en WEB-INF se puede llamar desde el navegador. Si tiene sentido poder llamarse directamente desde el navegador, entonces esta fuera de WEB-INF. Si no tiene sentido poder llamar al recurso desde el navegador, no pinta nada fuera de WEB-INF, aunque puede estar si no es por razones de seguridad y realmente no queremos que se pueda hacer.

Es lo mismo que si me dices que poner los ficheros de JavaScript al mismo nivel que las JSP y las HTML es mezclar programacion con vista... no tiene nada que ver, es simplemente organizar físicamente las cosas de una forma o de otra.



De nuevo, la especificación no dice nada sobre donde debes colocar las JSP. Lo que dice es que lo que está dentro de WEB-INF está protegido y no se puede llamar desde fuera. Así que obviamente si pones tus .jsp ahi dentro no las podras llamar si no es a través de un forward interno. La pregunta entonces sería... ¿Si la especificación quiere que pongas las JSP fuera de WEB-INF, por que permite que hagas forwards internos a páginas dentro de WEB-INF? La respuesta es que te deja por que es una cosa deseable que se usa para proteger las JSP de accesos no controlados.


No hay que confundir lo que dice la especificación con "lo que hace mucha gente" o los estandares de facto.

S!
Hola GreenEyed, buen dia.

Muchas gracias por tu opinion y por dar tu punto de vista, que es muy bueno.

Pero la respuesta de la pregunta que hiciste de que porque nos permite hacer un forward interno a paginas jsp que se encuentran dentro de WEB-INF, yo pienso que es porque las clases de la aplicacion tienen acceso a cualquier directorio de nuestra aplicacion, aunque tambien es cierto lo que mencionas, que por seguridad y si uno lo desea puede poner sus jsp en WEB-INF.

Aunque hasta ahorita nadie me ha convencido de poner las jsp dentro de WEB-INF, por eso abri este tema para ver puntos de vista, claro, todos son bienvenidos y sera muy respetable su opinion.

saludos!
  #8 (permalink)  
Antiguo 12/08/2008, 13:24
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Para los que ponen sus jsp dentro de /WEB-INF/

Cita:
Iniciado por Bunburyscom Ver Mensaje
Pero la respuesta de la pregunta que hiciste de que porque nos permite hacer un forward interno a paginas jsp que se encuentran dentro de WEB-INF, yo pienso que es porque las clases de la aplicacion tienen acceso a cualquier directorio de nuestra aplicacion, aunque tambien es cierto lo que mencionas, que por seguridad y si uno lo desea puede poner sus jsp en WEB-INF.
Que las clases tengan acceso a cualquier directorio no tiene nada que ver con el forward, ya que, por ejemplo, no puedes hacer un forward a una pagina que no este en tu contexto web, así que aunque las clases de la logica si pueden acceder fuera del contexto, el forward no. Así que el forward es un caso especial que te deja acceso al WEB-INF, pero solo así, no desde fuera. Y la unica razón logica para hacerlo es por que no es malo.

Cita:
Iniciado por Bunburyscom Ver Mensaje
Aunque hasta ahorita nadie me ha convencido de poner las jsp dentro de WEB-INF, por eso abri este tema para ver puntos de vista, claro, todos son bienvenidos y sera muy respetable su opinion.
Y está muy bien preguntar y comentar las cosas. De todas formas, tampoco te quiero convencer para que las pongas dentro. Es algo que se "puede" hacer, y que en muchos casos no tiene la menor importancia, a no ser que seas un programador descuidado y supongas más de lo que debes (como que tu .jsp nunca puede ser llamada directamente).

En mi caso, no suelo usar casi nunca JSP si no que uso otros sistemas de "templates", XSLT o FreeMarker, y esos no tiene sentido llamarlos directamente por lo que los meto en WEB-INF/.... Y cuando uso JSP si van detras de un forward, las meto en WEB-INF/..., y así no tengo que preocuparme de que pasaría si se llamaran directamente, y si las he de llamar desde fuera, las dejo fuera de WEB-INF.

Pero vamos, si las dejas fuera no suele pasar nada. Simplemente trataba de añadir el punto de vista que si las metes en WEB-INF tampoco pasa nada y no hay nada en la especificación que lo prohiba. Es cuestion de organizarse y saber lo que uno hace y por qué.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #9 (permalink)  
Antiguo 13/02/2009, 11:14
 
Fecha de Ingreso: septiembre-2005
Mensajes: 34
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Para los que ponen sus jsp dentro de /WEB-INF/

gracias por el post, realmente aprendí mucho

.. deberian haber mas post de este tipo....

saludos.
  #10 (permalink)  
Antiguo 22/07/2010, 22:23
 
Fecha de Ingreso: febrero-2010
Mensajes: 2
Antigüedad: 14 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Para los que ponen sus jsp dentro de /WEB-INF/

El nombre del directorio dice todo...
Claro, es mi opinión...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 00:39.