JSP Include: un grande bean o bean per ogni include

1

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?

    
posta shylynx 26.09.2013 - 16:04
fonte

1 risposta

1

Se tutte le pagine hanno la stessa intestazione (e il piè di pagina), cambiare in un Headerbean dovrebbe propagare la modifica a tutti i JSP. Allo stesso modo, la modifica della logica specifica di una pagina dovrebbe avere effetto solo su un bean. Rifatta anche il codice comune dei bean in altri POJO.

Cerca semplicemente un'elevata coesione e un basso accoppiamento.

    
risposta data 03.11.2013 - 18:01
fonte