servlet - ¿Cuál es la diferencia fundamental entre un jsp taglib vs incluyendo una página jsp?
jsp y html (4)
Cuando usa un taglib el contenedor típicamente:
- Escribe y llama a un método de ayuda desde dentro de _jspService
- Dentro del método helper se crea una instancia de la clase de etiqueta y se llaman los métodos estándar (setParent (), doStartTag (), doEndTag () etc ...)
Esto mantiene todo el código dentro del mismo recurso (la solicitud no se transfiere a otro componente) y, por lo tanto, le permite incorporar el comportamiento de bucle y acceder a otros componentes en la página actual.
Hay una sobrecarga en el aprendizaje de bibliotecas de etiquetas. Pero una vez que tienes tu primera etiqueta trabajando todo es cuesta abajo. Además, el resultado final será más fácil de entender para los no desarrolladores (suponiendo que elija buenos nombres para las etiquetas).
Tengo varios elementos comunes (componentes), que generarán algunos html. parece que mis opciones son crear un taglib, o simplemente poner esa lógica en una página jsp e incluir el jsp.
¿cual es la diferencia? positivos contra negativos?
Las etiquetas (que incluyen el mecanismo de archivo de etiqueta similar a JSP fácil de usar) admiten la invocación con parámetros nombrados fuertemente tipados.
Otra característica increíblemente útil y sorprendentemente a menudo olvidada de las etiquetas JSP es el tipo de atributo JspFragment
. Esto le permite pasar un trozo de código JSP, como parámetro, a una etiqueta que se invocará, tal vez repetidamente.
Incluye la falta de estas potentes funciones de parametrización.
Los taglibs facilitan la definición y el manejo de los parámetros, pero hay una sobrecarga significativa para desarrollarlos. Incluye son más simples, pero menos poderosos. Mucho depende de tu estilo.
En mi experiencia, las personas generalmente solo usan incluye porque no quieren tomarse el tiempo para aprender a crear tablibs. Llevando a un buen lío. Siempre que su equipo sea pequeño y su incluye no demasiado complejo, no es tan malo. Pero es un olor a código.
Los taglibs le permiten definir parámetros (tipados) que puede documentar. También los taglibs pueden conocer su ubicación en el árbol de objetos para actuar de manera diferente en un contexto diferente; o llamar a una plantilla específica una y otra vez para crear iteradores o construcciones de declaraciones.
¿Sabía que los taglibs no necesariamente tienen que estar escritos en Java? También hay un concepto llamado tagfiles que le permite escribir su taglib en JSP; a menudo más adecuado para componentes planos ... bastante cerca de incluir.