JSP sin Scriplets

Hace un rato saliendo del trabajo, estabamos conversando un poco acerca de java con ale_imp y tocamos el punto de los scriplets que fue donde entramos en desacuerdo.

Un poco de contexto, estabamos platicando de una aplicacion web sin frameworks.

El me dijo queno le gusta meter scriplets en las jsp, porque es una mala tecnica de programacion,ademas que genera codigo desordenado, no reutilizable y dificil de mantener.

Estoy deacuerdo en que es codigo desordenado (depende del programador) y no reutilizable pero el mantenimiento considero yo, no es complicado.

Ahora yo le conteste:
¿Para que usar jsps? si se desperdicia el poder de java, porque el introducir scriplets es considerado una mala tecnica de programacion

Si en los jsp solo escribimos HTML
¿Por que mejor no usar paginas Html? si estas tienen como ventajas que: no se compilan y no se ejecutan cada vez que las invoca el usuario

Yo considero que el rendimiento de la aplicacion es un factor muy importante y aunque solo sean unos milisegundos en la ejecucion de una pagina de este tipo, contando todos los jsp de la aplicacion y la cantidad de veces que son invocadas pues creo que es un lujo usar jsp sin java.

¿Que opinan ustedes?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ale_imp

Yo opino

A mi jucio, considero que el uso de scriptles como ya mencionaba Cybjer si es desordenada, además de no permitir la reutilización de código, y para ver los posibles errores, es necesario desplegar la jsp, considero que cada quien debe hacer su trabajo y con esto me refiero al MVC, capa de presentacion, logica de negocio, y control.Considero una alternativa son las jstl, que permiten tener las jsp mas limpias y ordenadas. Bueno muchas gracias, esperando sus comentarios. Pues estamos para mejorar, y aprender.

Imagen de ezamudio

separación de funciones

La bronca de meter código Java en un JSP es que estás mezclando cosas. La parte de interfaz (o la Vista en el modelo MVC) es el JSP, y si metes mucho código ahí, ya fusionaste Vista con Control. Una vez que empiezas a meter código en el JSP, luego "se te hace fácil" meter más y más, y al rato tienes un chorro de lógica de negocio en un JSP, en vez de que la tengas en componentes separados, que puedan ser utilizados en otro contexto (un batch, un web service, tareas programadas, etc).

Si no quieres usar frameworks, hazlo en C con puro CGI. JSP por sí mismo ya es un framework, muy primitivo, pero es un framework a fin de cuentas, para simplificar un poco la generación de páginas, porque ya no tienes que hacer un servlet para todo.

Si no quieres complicarte la vida metiendo struts o spring o tapestry o wicket o lo que sea y usar puro JSP, está bien. Pero te recomiendo que al menos integres JSP 2.0 y JSTL 1.2 para que no tengas que meter tanto código en tu JSP sino que integres puros tags de JSTL y los que tengas que crear tú mismo. Con JSTL ya puedes utilizar componentes y cosas así en JSP sin tener que meter código. Incluso trae estructuras de control como ciclos y condicionales; eso en conjunto con el lenguaje de expresiones de JSP 2.0 te permite evaluar algunas cosas simples sin tener que meter código, por ejemplo   en vez de   (no recuerdo si el tag de evaluación llevaba punto y coma al final o no, tiene mucho que no uso JSP). Usando JSTL puedes hacer algo como esto:

 

Creo que eso es mucho más legible y entendible y mantenible que tener un esperpento como esto (JSP 1.0):

 

No creo que sea malo

Pues si no es malo tampoco lo consideran como buena practica, mas sin embargo aun y cuando se usen solo JSP para desplegar la informacion, nunca hay que perder la orientacion del MVC. Usar codigo en java dentro de un JSP cuando se usa solo para imprimir informacion lo considero igual de sano que usar Struts, JSF o lo que sea la cosa esta en que tu visualmente la ves como codigo java o como tags xml pero que al final se compilan en la maquina java y resultan siendo una clase (servlet)

Ahora que si me hablas de poner una consulta en tu JSP pues claro esta que si es una mala practica, hacer eso y en struts tambien lo es como en otros framework. Yo elaboré una aplicacion con puros jsp y servlets y tuve la conciencia de que el codigo java que deberia emplear en el JSP no iba a ser para otra cosa que no sea desplegar informacion como iterar una lista para obtener los elementos, obtener las propiedades de una clase.

Recuerda que los frameworks no son otra cosa que servlets y JSP con Tag Library. Y no por hacerlo con framework tu aplicacion esta bien hecha; de la misma manera pienso que no por hacerlo con JSP y servlets quiere decir que es una aplicacion mal hecha solo que hoy en dia pues es mal visto por muchas personas que se van por los estandares de J2EE.

Recuerda siempre bien planear tu aplicacion para tener una buena distribucion en los niveles MVC de tu sistema

Imagen de CybJer

Los scriplets no estan peleados con el MVC

Por lo que conozco del MVC, considero que el incluir scriplets en el jsp no esta peleado con el patron, como dices cada uno hace su chamba, si los scriplets que escribimos se limitan lo que hace su capa se sigue respetando el MVC.
Y en desacuerdo de nuevo con ale_imp que los errores no se pueden ver sin desplegar la JSP, segun yo solo las excepciones se se detectan desplegando el jsp.
Ademas que la alternativa que presenta, solo resulve el problema del "Orden", el jsp sigue sin ser reutilizable y el que no se vea el codigo no significa que no este ahi.

Imagen de darklatiz

Tareas Específicas

Yo pienso que el uso o mal uso de los scriptlets depende de la estructura funcional del sistema, es decir, si cada capa del sistema (presentación, lógica de negocio, acceso a datos) tiene bien definidas esas sus funciones no tiene por qué existir gran complicación en los JSP's.

Si no existe lógica de negocio en el jsp solo se requerirá iterar sobre algunos arreglos y presentarlos, todo depende si estos arreglos fueron procesados correctamente en capas del sistema anteriores. JSTL es un buen componente para hacer mas uniforme este tipo de tares. Salu2

Imagen de AlexSnake

JSP / JSTL

Bueno es cierto que al usar los JSP se hace la programación espagueti, pero hay veces que yo los tengo que ocupar forzosamente, ya que aun no sé cómo hacer el uso de los JSTL que hago con los JSP. Por ejemplo hay veces que por reglas de negocio tengo que hacer uso de fechas y es ahí donde ocupo el GregorianCalendar:

 

Eso como se podría hacer con JSTL??? Eso lo hago algunas veces también para no tener que usar la validacion de JavaScript.

Imagen de ezamudio

fmt:formatDate

JSTL trae tags para presentar fechas formateadas. Leanse este documento de IBM, es la tercera parte de un tutorial de JSTL, ahi viene lo de fechas, pero vean las partes anteriores también.

Imagen de AlexSnake

JSTL

De acuerdo a la respuesta que da ezamudio me doy cuenta que si se puede hacer la mayoría, si no es que todas las cosas que uno hacen con JSP en JSTL. Pero también quiero agregar que tal vez se usan más los scriptlets por falta de conocimiento al usar los JSTL que va desde la versión de los jars hasta los tags que se deben ocupar. Ya que hace poco me di cuenta que al bajar la versión mas reciente del jstl cambia el tag   ya que de otra forma te marca error. Entonces esto a veces complica más las cosas para el desarrollador, pero creo que si es mejor ocuparlos. No se hace tanto desmother en el jsp.

Imagen de auner

nesecito apoyo

hola soy auner bueno a todos los q lean esto les quisisera pedir ayuda por favor soy estudiandte de ingenieria sistemas y nesecito un ejemplo de un control de profesres a la universidad es mi poryecto final de ciclo y ps aun mo me corre del tooo bn si alguie me pudiera proporcionar algo de codigo para poder implementar algo mas, gracias de antemano por favor soy novato en programacion