Voglio refactoring una webapp che consiste in JSP e servlet molto distorti. Poiché non possiamo passare facilmente a un framework web, dobbiamo mantenere JSP e Servlet, e ora dubitiamo su come includere le pagine in un altro e su come impostare l'uso: le direttive bean in modo efficace.
Al primo passaggio vogliamo disaccoppiare il codice per le azioni di base e la creazione di bean in servlet. I servlet dovrebbero inoltrarsi alle pagine corrispondenti, che dovrebbero utilizzare il bean. Il problema qui è che ogni jsp è costituito da sub-sub-sub-jsp diversi che sono inclusi in un altro. Ecco un estratto dello shortend (perché la realtà è più complessa):
- testa
- intestazione
- top
- navigazione
- actionsPanel
- principale
- intestazione
- actionsPanel
- piede
- piè di pagina
Inoltre ogni jsp (anche l'intestazione e il piè di pagina) usa dati dinamici. Ad esempio titolo e pannello azioni possono cambiare su ogni pagina, ricaricare o avere collegamenti ed etichette che dipendono dall'elaborazione dal servlet precedente.
So che le direttive jsp-include dovrebbero essere usate solo per contenuti statici e dovrebbero essere evitate per il contenuto dinamico. Ma qui abbiamo pagine molto grandi, che consistono in molte parti.
Ora le domande principali: Dovrei usare un grande bean per ogni pagina, in modo che ogni bean contenga anche i dati per l'intestazione e il piè di pagina accanto ai suoi dati principali, in modo che ogni jsp successivo incluso usi la stessa direttiva bean? Ad esempio:
- DirectoryJSP < - > DirectoryBean
- ConfrontaJSP < - > CompareBean
O dovrei usare un bean per ogni jsp, in modo che ogni bean contenga solo i dati per un jsp e il suo scopo. Ad esempio:
-
DirectoryJSP < - > DirectoryBean
HeaderJSP < - > HeaderBean
FooterJSP < - > FooterBean
-
ConfrontaJSP < - > CompareBean
HeaderJSP < - > HeaderBean
FooterJSP < - > FooterBean
Nel secondo caso: i bean successivi devono essere membri del bean padre corrispondente, in modo che solo il bean parent sia collegato come attributo alla richiesta? O ogni bean deve essere allegato alla richiesta?