Sto per scegliere come organizzare la mia vista (con spring-mvc, ma non dovrebbe importare molto)
Ci sono 6 opzioni per quanto vedo (anche se non si escludono a vicenda):
- Piastrelle
- Sitemesh
- Freemarker
- Velocità
<jsp:include>
<%@ include file="..">
Le tessere e le Sitemesh possono essere raggruppate; così possono Freemarker e Velocity . Quale all'interno di ogni gruppo usare non è oggetto di questa discussione, ci sono abbastanza domande e discussioni al riguardo.
Questa è una lettura interessante , ma non riesco a convincermi a usare le tessere.
La mia domanda è: cosa danno questi framework che non può essere fatto correttamente con <@ include file="..">
e JSTL. Punti principali (alcuni tratti dall'articolo):
Includendo parti di pagine, come intestazione e piè di pagina , non c'è differenza tra:
<%@ include file="header.jsp" %>
e
<tiles:insert page="header.jsp" />
Definizione dei parametri nell'intestazione - come titolo, meta tag, ecc. Questo è molto importante, soprattutto dal punto di vista SEO. Con le opzioni di template puoi semplicemente definire un segnaposto che ogni pagina dovrebbe definire. Ma così puoi in jsp con JSTL , usando
<c:set>
(nella pagina inclusa) e<c:out>
(nella pagina inclusa)Riorganizzazione del layout : se desideri spostare il breadcrumb sopra il menu o la casella di accesso sopra un altro pannello laterale. Se le inclusioni di pagina (con jsp) non sono ben organizzate, potrebbe essere necessario modificare ogni singola pagina in questi casi. Ma se il tuo layout non è eccessivamente complesso e metti le cose comuni nell'intestazione / piè di pagina, non c'è nulla di cui preoccuparsi.
Accoppiamento tra i componenti comuni e il contenuto specifico : non trovo un problema con questo. Se desideri riutilizzare un frammento, spostalo in una pagina che non include intestazioni / piè di pagina e includilo dove necessario.
Efficienza :
<%@ include file="file.jsp" %>
è più efficiente di qualsiasi altra cosa, perché viene compilato una volta. Tutte le altre opzioni vengono analizzate / eseguite molte volte.Complessità : tutte le soluzioni non jsp richiedono file xml aggiuntivi, include aggiuntivi, configurazioni pre-processore, ecc. Questa è sia una curva di apprendimento che introduce più potenziali punti di errore. Inoltre, rende il supporto e la modifica più noiosi: devi controllare una serie di file / configurazioni per capire cosa sta succedendo.
Segnaposto : velocità / freemarker danno qualcosa in più di JSTL? In JSTL si inserisce un segnaposto e si utilizza il modello (inserito nell'ambito della richiesta o della sessione, dai controller) per riempire questi segnaposto.
Quindi, convincimi che dovrei usare uno qualsiasi dei framework sopra invece di / in aggiunta al semplice JSP.