This tier needs to manage all aspects about information presentation, both to human beings and external systems: thats why it's engineered beyond the MVC design pattern.
Often users will interact with the system through a web interface and thats why we focused integrating the well know Apache Struts framework which already meets the needs for informations presentation through web pages. We completely adopted the framework trying to submit to Apache Struts our patches and contributes to solve the few problems we encountered. Our extensions to Struts have already been integrated in some way into that great framework, anyway we still have them on our own project for backward compatibility reasons. If you need help on Struts itself please try to search the Apache documentation referring to the dependencies page to find out the current release we are integrating.
Sometimes other human interface (like standalone remote applications) and external systems need to have access to the functionalities of your system and in that case our framework gives you support for this two choices:
Whatever your presentation needs are
In questa pagina iniziamo a vedere come � possibile creare una applicazione J2EE utilizzando gli strumenti messi a disposizione da SmartWeb, ed in particolare come progettare una applicazione J2EE suddividendo la progettazione sui diversi strati.
Cominciamo ad analizzeremo la parte relativa al Presentation tier. Vedremo come l'applicazione si interfaccia con l'utente e in che modo vengono prese in considerazioni le richieste da parte dell'utente ed elaborate.
Il Presentation tier permette quindi di gestire l�interfacciamento dell�applicazione verso l�utente. ??? (� improprio non gestisce l'interfacciamento ma si occupa di offrire delle funzionalit� opportune per gestire le azioni effettuate dall'utente. l'interfacciamento vero � offerto dalle jsp, come in effetti spieghi gi�) ???
Cerchiamo di capire i vantaggi apportati dalla suddivisione di un'applicazione su pi� strati, in particolare analizziamo la parte che si occupa di presentare l'applicazione all'utente.
Se si considera un'applicazione web, l'interfaccia tra l'utente e l'applicazione pu� essere rappresentata principalmente da Java Server Pages (JSP), una JSP oltre a permettere la comunicazione tra utente e applicazione ha un compito molto importante, quello di rappresentare le informazioni all'utente.
Nella rappresentazione delle informazioni, l'aspetto grafico, cio� come vengono rappresentate le informazioni � molto importante.
Pu� capitare per un qualsiasi motivo di dover ad esempio cambiare l'aspetto delle pagine del sito, magari per renderlo pi� gradevole all'utente che lo utilizza. Cambiare la grafica non vuol dire necessariamente cambiare anche la gestione delle informazioni, che molto probabilmente rimarr� uguale, pensiamo quindi di dover apportare delle modifiche alle pagine del sito su un'applicazione che non sia stata progettata utilizzando pi� strati (tier) questo vuol dire "mettere le mani" sull'intera applicazione il che pu� portare ad effettuare modifiche non richieste che possono compromettere il funzionamento dell'intera applicazione.
Cosa cambia invece se l'applicazione � stata progettata su pi� strati?
Una cosa sicura � che si andr� ad operare solo sulla parte che ha bisogno di modifiche, senza toccare il resto dell'applicazione, questo vuol dire che si ha un'ottima manutenzione dell'applicazione evitando l'insorgere di problemi su diverse dalla presentazione.
In Smartweb questo strato � composto dalle JSP e da Struts.
Il funzionamento del Presentation Tier in maniera molto semplice: le JSP rappresentano le informazioni all'utente il quale pu� interagire con esse. Ogni richiesta ricevuta dalla JSP richiama un Action, l'Action esegue una serie di operazioni necessarie a soddisfare la richiesta dell'utente, vedremo poi come per ottenere i risultati, come l'Action debba interfacciarsi con gli altri strati dell'applicazione, a questo punto l'Action restituisce i risultati ottenuti dall'elaborazione i quali verranno "inviati" alla JSP che si occuper� di presentare le nuove informazioni.
???Possibili aggiunte: ??? ? Perch� Smartweb � meglio di ... ? ? SmartWeb a differenza di ... conviene perch� ...
??? Invece di entrare nello specifico si potrebbe dire che: Smartweb oltre ad integrare le funzionalit� di Struts ne esemplifica l'utilizzo.Questi aspetti verranno visti in seguito, per completezza un esempio potrebbe essere l'utilizzo delle Action nella fattispecie l'invocazione del metodo specifico di una Action in Smartweb (DispathAction in Struts) si realizza settando direttamente, come parametro, il nome del metodo.
Vediamo nel Dettaglio l'Action in SmartWeb ????qui forse potrebbe andarci qualche altra informazione sulle action pi� tecnica, restando sempre nel teorico ??? io credo di no rimandiamo il dettaglio all'esempio tecnico. Cerchiamo di tirar fuori un pezzo di doc magari lasciando anche qls di scontato e non completamente evaso cos� da incuriosire l'utente???
Le Action in SmartWeb hanno lo stesso concetto delle Action in Struts, e precisamente un Action � l'insieme delle operazioni da eseguire quando l'utente attraverso le JSP richiede che venga eseguita un'azione. In SmartWeb la differenza sta nell'introduzione di una nuova classe, net.smartlab.web.DynaAction, questa classe ha lo scopo di facilitare lo sviluppatore nel suo utilizzo, per quanto riguarda soprattutto problemi che potrebbero insorgere con l'utilizzo delle DispatchAction e delle LookUpAction, la DynaAction le ingloba dentro di se.
Una DynaAction � infatti una DispatchLookUpAction e viene realizzata per diminuire e rendere molto pi� intuitiva la gestione delle "action dinamiche" di struts. Per realizzare una Action occorre quindi estendere la classe net.smartlab.web.DynaAction e configurarla opportunamente nel file xml di struts. Nel framework SmartWeb esiste una specializzazione di DynaAction che offre dei metodi aggiuntivi per la gestione degli archivi, questa classe � net.smartlab.web.AbstractArchiveAction.