2008-08-26 10 views
48

Usando JDeveloper, comencé a desarrollar un conjunto de páginas web para un proyecto en el trabajo. Como no sabía mucho sobre JDev en ese momento, corrí a Oracle para seguir algunos tutoriales. Los tutoriales de JDev recomendaban hacer JSPX en lugar de JSP, pero realmente no explicaban por qué. ¿Estás desarrollando páginas JSPX? ¿Por qué decidiste hacerlo? ¿Cuáles son los pros/contras de ir a la ruta JSPX?¿Debería estar haciendo JSPX en lugar de JSP?

Respuesta

49

La diferencia principal es que un archivo JSPX (oficialmente llamado 'documento JSP') puede ser más fácil de trabajar porque el requisito de un XML bien formado puede permitir que su editor identifique más errores tipográficos y de sintaxis mientras escribe.

Sin embargo, también hay desventajas. Por ejemplo, XML bien formado debe escapar cosas como menos de lo signos, por lo que el archivo podría terminar con contenidos como:

<script type="text/javascript"> 
    if (number &lt; 0) { 

La sintaxis XML también puede ser más detallado.

+13

Supongo que podría escapar del '<' usando un CDATA como ''. De cualquier manera, sí, ** es feo **. –

+3

En mi experiencia personal, JSPX impone la separación de la vista del controlador porque no puede ejecutar el código Java en JSPX, pero la sintaxis XML a veces es abrumadora –

+0

Escapar el código con CDATA es el camino a seguir. En la mayoría de los IDE, puede agregar fragmentos de código/plantillas, de modo que pueda crear una etiqueta de básica que incluya el comentario de CDATA. –

6

¡Hola compañero desarrollador de JDeveloper!

He estado trabajando con páginas JSPX durante más de dos años y nunca he tenido ningún problema con que sean JSPX opuestos a JSP. La opción de ir con JSPX fue forzada ya que utilizo JHeadstart para generar automáticamente páginas ADF Faces y, de forma predeterminada, JHeadstart genera todo en JSPX.

JSPX especifica que el documento tiene que ser un documento XML bien formado. Esto permite que las cosas lo analicen correcta y eficientemente. Escuché a los desarrolladores decir que esto ayuda a que sus páginas sean más 'a prueba de futuro' en contra de JSP.

2

@ Matthew-
ADF! La aplicación en la que estoy trabajando ahora tiene el 90% de la capa de presentación generada por el mod PL/SQL. Comencé a trabajar en algunas pantallas nuevas y quería investigar otras opciones que pudieran encajar en nuestra arquitectura, sin tener que soportar una gran carga de aprendizaje (aumentar la complejidad del sistema/bloquear los modelos mentales del sistema del desarrollador) en otros desarrolladores en el equipo. Entonces ADF es como me encontré con JSPX, también.

Vi una observación "a prueba de futuro" también ... pero no sabía cuán bien fundado estaba eso.

22

JSPX tiene algunos inconvenientes, en la parte superior de mi cabeza:

  1. Es difícil generar algunos tipos de contenido dinámico; esp. generar una etiqueta HTML con atributos opcionales (es decir, o dependiendo de una condición). Las etiquetas JSP estándar que deberían resolver este problema no funcionaron correctamente el día que comencé a hacer JSPX.
  2. No más & nbsp; :-p
  3. Realmente querrá poner todo su Javascript en archivos separados (o usar secciones CDATA, etc.). En mi humilde opinión, debe utilizar jQuery de todos modos, por lo que realmente no necesita tener atributos onclick, etc. ...
  4. Las herramientas pueden no funcionar correctamente; tal vez su IDE no es compatible con nada por encima de JSP simple.
  5. En Tomcat 6.x, al menos las versiones/config que probé, la salida generada no tiene ningún formato; sólo una pequeña molestia, aunque

Por otro lado:

  1. Te obliga a escribir XML correcto, que puede ser manipulado más fácilmente que JSP
  2. Herramientas podría realizar la validación instantánea, la captura de errores Cuanto antes
  3. sencilla sintaxis, en mi humilde opinión
11

Un totalmente diferente línea de razonamiento por las que debe utilizar en su lugar JSPX de jsp:

JSPX y EL hace que incluir javascript y códigos java incrustados sea mucho más difícil y mucho menos natural de hacer que jsp. EL es un lenguaje específicamente adaptado para la lógica de presentación.

Todo esto lo empuja hacia una separación más clara de la representación de IU y otra lógica. La desventaja de muchos códigos incrustados dentro de una página JSP (X) es que es virtualmente imposible de probar fácilmente, mientras que practicar esta separación de preocupaciones hace que la mayoría de tu lógica sea totalmente de prueba unitaria.

1

JSPX es también la tecnología de visualización recomendada en Spring MVC/Spring Web Flow.

6

Como se indica en la primavera 3,1 documentación oficial

"Spring proporciona un par de soluciones fuera de la caja para JSP y JSTL puntos de vista."

También debe pensar en el hecho de que JSPX pretende producir resultados puros que cumplan con XML. Entonces, si su objetivo es HTML5 (que puede ser compatible con XML pero aumentar la complejidad, vea mis próximos comentarios), usted tiene algo de dolor para lograr su objetivo si está utilizando Eclipse IDE ... Si su objetivo es producir XHTML, vaya por JSPX y JDeveloper. lo apoyaremos ...

En uno de nuestros proyectos cie hicimos un POC con JSP y JSPX e hice PROS y CONS, y mi recomendación personal era usar JSP porque nos pareció mucho menos restrictivo y natural producir HTML5 de una manera no XML que también es menos restrictiva y una sintaxis más compacta. Preferimos elegir algo menos restrictivo y agregar recomendaciones de "mejores prácticas" como "no poner scriptlets de Java" dentro de los archivos jsp. (BTW JSPX también le permite colocar scriplets con jsp: scriplet en lugar de <% ...%>)

0

Además, otro problema que he encontrado con JSPX es cuando desea usar scriptlets. Estoy de acuerdo en que el código limpio es generalmente bueno y la lógica de Java en el JSP generalmente es mala, pero hay ciertos casos en los que desea utilizar una función de utilidad para devolver un valor de cadena o algo donde un TagLib o el modelo (atributos de solicitud) serían excesivos .

¿Cuáles son las opiniones de todos sobre los scriptlets en JSP?

+0

Aquí puede comprobar por qué los scriplets son una mala práctica http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files – Jessai

+0

Gracias por la información .. Entiendo que los scriptlets no son las mejores prácticas ... pero a veces es mucho más fácil para una sola línea ... –

+0

He experimentado la diferencia en dos proyectos empresariales, cuando usas scriptlets, los errores son más difíciles de resolver y con JSTL tienes más pistas para resolverlo con rapidez. – Jessai

Cuestiones relacionadas