Quando usare JSP e JSPF
Riutilizzo del codice JSP
I file JSPF possono essere utilizzati per rendere la programmazione di applicazioni Web Java complesse meno noiosa e soggetta a errori dividendo l'applicazione in più unità o moduli più piccoli e più gestibili. Idealmente, ogni modulo dovrebbe essere dedicato a una singola parte di un programma completo ed essere di natura generale in modo che il codice possa essere riutilizzato nelle future applicazioni JSP. Il file JSP principale avrà una direttiva "include" per ogni file di frammenti JSPF, che li unisce tutti in un'applicazione JSP completa.
Refactoring del codice
La suddivisione di un file JSP di grandi dimensioni in frammenti JSPF più modulari e più piccoli ha l'ulteriore vantaggio di rendere più semplice l'attività di refactoring del codice. Il refactoring del codice è una tecnica per migliorare la qualità del codice esaminandolo, dividendolo in unità logiche e quindi riscrivendo queste unità una per una. L'utilizzo di frammenti JSPF può aiutare a eliminare gli errori e aumentare le prestazioni di ciascuna unità e dell'applicazione finale montata.
Restrizione di accesso
Per convenzione, i frammenti JSPF devono essere memorizzati nella directory "/ WEB-INF / jspf /". Questa directory è accessibile dai contenitori servlet come Tomcat e JBoss Application Server, ma non da server Web come Apache o Microsoft IIS. È possibile dividere una pagina JSP completa in file di frammenti JSPF e nasconderli nella directory "/ WEB-INF / jspf /". È inoltre possibile nascondere una pagina JSP completa dall'accesso Web memorizzandola in frammenti JSPF.
Interazioni JSP
Le pagine JSP complete possono importare altre pagine JSP complete e frammenti JSPF. Puoi farlo usando le direttive "dsp: include" o "jsp: include". La direttiva "dsp: include" consentirà a un file JSP principale di passare parametri ai metodi nei file JSP secondari. La direttiva "jsp: include" non consente di passare i parametri ai metodi nei file JSPF ma consente ai metodi dei frammenti JSPF di accedere ai dati globali e ad altri oggetti a cui le regole dell'ambito Java consentono l'accesso.