2008-12-04 21 views
15

¿Hay alguna alternativa a JSTL? Una empresa para la que trabajé hace 3 años usó JSTL y bibliotecas de etiquetas personalizadas para separar la presentación de la lógica. Los desarrolladores de front-end utilizaron EL para hacer una lógica de presentación compleja, generar diseños en páginas JSP y funcionó de maravilla. Tal vez hayan surgido nuevas tecnologías. ¿Algo mejor estos días?¿Cuáles son las alternativas a JSTL?

Respuesta

16

JSTL y EL son dos conceptos distintos.

JSTL es solo una biblioteca de etiquetas. La mayoría de los marcos proporcionan su propio taglib que duplica aproximadamente la funcionalidad de JSTL. Digo aproximadamente, porque estos a menudo usan o pasan por alto los principios clave de JSP y la API de Servlet.

La fuerza de JSTL es que fue diseñada por los autores de JSP, con una sólida comprensión de JSP y servlets. Los taglibs de terceros a menudo son creados por un tipo que no quería RTFM y decidieron "empezar desde cero" y proponer "algo más simple". Sin embargo, JSTL no tenía la intención de hacer todo. Se puede usar con mucho éxito junto con otros taglibs, incluidas sus propias etiquetas personalizadas.

El lenguaje de expresión es fundamental para JSP. Es interpretado por el contenedor y puede usarse en muchos contextos. También es libre de efectos secundarios, y tiene una sintaxis simple y fácilmente comprensible que no permite que mucha lógica se meta en la capa de presentación. Al ser parte de la especificación Java EE, también disfruta de un amplio soporte de herramientas. Por ejemplo, muchos IDE pueden refactorizar la expresión EL dependiente cuando cambia el nombre de una propiedad.

Struts2 introdujo OGNL a un público más amplio. OGNL es un retroceso a los días malvados de los scriptlets. Es más poderoso, por lo que los desarrolladores lo abusan alegremente para invocar métodos arbitrarios en la capa de presentación y otras atrocidades.Los atacantes lo explotan felizmente también; es una fuente común de vulnerabilities in Struts2-based applications.

Estaba familiarizado con OGNL después de años de experiencia previa con WebWork, y mi gran decepción en Struts2 fue la incapacidad de deshacerse de este dreck. Incluso el fundador de WebWork, Patrick Lightbody, acknowledges that adoption was a mistake.* Afortunadamente, solo se puede usar en contextos limitados, como etiquetas con reconocimiento de OGNL (y algunos otros lugares sorprendentes), a diferencia de EL, que es compatible con el contenedor y puede usarse en cualquier lugar de una página .

Si quiere alejarse de JSP, pero no tiene un enfoque basado en componentes como JSF, puede consultar el proyecto StringTemplate de Terrence Parr. El objetivo debe ser el efecto secundario – gratuito, que proporciona mejoras valiosas a la seguridad y la escalabilidad.

* QFT: Después de un ataque exitoso en el sitio de desarrolladores de Apple basado en Struts2, Patrick Lightbody dijo: "Lamentablemente, me siento un poco responsable de este importante agujero de seguridad. Ha habido algunos como este y todos están enraizados en el hecho de que hace casi 9 años tomé la (mala) decisión de usar OGNL como el lenguaje de expresión de WebWork. Lo hice porque era "poderoso", pero me abrió todo tipo de trucos adicionales que nunca pensé ".

6

He utilizado velocity con gran éxito y funciona de maravilla como una forma sencilla de separar la lógica de negocios de la lógica de presentación. Y es tan simple que su desarrollador web promedio puede entenderlo. Freemarker es otra alternativa de plantilla que a mucha gente también le gusta.

3

JSTL es una biblioteca de etiquetas que contiene funciones lógicas que se pueden utilizar dentro de una página JSP. También existen otras bibliotecas de este tipo, pero lo más probable es que desee ver los enfoques revisados ​​de la solución jsp/jstl completa.

Lo más notable es que recomendaría mirar:

Apache Wicket

JSF con facelets

Google Web Toolkit (GWT)

0

no voy a decir que son un reemplazo o alternativa, pero creo que Java-Server-Faces da un paso más en la presentación de separación de la lógica ...

1

Asumiendo que estás buscando un Una manera más fácil de desarrollar una aplicación usando MVC. Yo recomendaría mirar el Spring Framework. Spring tiene su propia lib de etiquetas que proporciona la mayor parte de lo que debería necesitar en los JSP. He tenido un gran éxito al usar Spring webflow junto con Spring forms tag lib. Me gusta dividir la aplicación en una capa de persistencia (utilizando el soporte ORM de Spring para Hibernate), una capa de servicio (lógica comercial) y una capa de vista. La capa de vista incluye los flujos web, JSP y POJO para validaciones y acciones. También he usado DWR en la capa de visualización para llamadas AJAX.

3

JSTL lo alienta a poner la lógica en su UI. Pruebe Apache Wicket en lugar de lógica en Java.

+0

De acuerdo, la separación de preocupaciones no se vuelve más limpia que Wicket. –

Cuestiones relacionadas