SCFramework QUICK START. Data: 06 giu. 04



Documenti analoghi
Manuale utente Volta Monitor

INPS. Area Aziende. Procedura Internet per la trasmissione delle domande relative agli sgravi contrattazione di II livello per l anno 2009

Installazione e creazione sito

Manuale Utente. Data : 06/06/2012 Versione : 1.9

Gestione Agenti. Software per il Calcolo provvigioni per Agenti e Venditori Software GESAGE - Specifiche del prodotto

FYF per Point Manuale Operativo

HR-COMUNICAZIONI rel

e/fiscali - Rel

ROBOMAIL 1.5 Configurazione

Kleos per ipad. Guida rapida. Ver Help Desk: hd.avvocati@wki.it

Informazioni di base e sviluppo di applicazioni web

e/fiscali - Rel

REGIONE BASILICATA UFFICIO S. I. R. S.

Al termine dell operazione verrà visualizzato il modulo aggiunto

ASP RAGUSA - Test verifica Recupero Dati - Patrimonio - Cespiti v1.0.docx. 29/07/2013 Antonio Derna

E.C.M. Educazione Continua in Medicina. Servizi web. Manuale utente

A.s Programma di Informatica

Compilazione. Compilazione del Giornale dei lavori

Progetto Governance delle Risorse Umane-Modelli Innovativi

Pannello di controllo

IToolS AT commands server. Version /11/2012

A.s Programma di Informatica

Novità relative all assessment tool

Procedura Internet per la trasmissione delle domande relative agli sgravi contrattazione di II livello per l anno 2014.

Aggiornamento remoto della chiave hardware

Nota di rilascio protocollo client / server. Vers

E/Fiscali - Rel

INPS. Area Aziende. Funzionalità Contatti del Cassetto Previdenziale. Manuale Utente Funzionalità Contatti

SIMULAZIONE Modulo 2 ECDL In base al nuovo sistema ATLAS

Via F. Lana, FLERO (BS) Tel Fax gruppo axelera.

Microsoft SQL Server 2005, 2008 R2 e 2012 Raccomandazioni Marzo 2013

Modalità di trasferimento dati tra. Amministrazioni Aeroportuali ed INPS

1 INTRODUZIONE SCOPO DEL DOCUMENTO PANORAMICA DI IMAGICLE APPLICATIONSUITE 4 2 IMAGICLE STONEFAX UNA SOLUZIONE DI SERVER FAX IP

INDICE INTRODUZIONE PROVA IL SITO DEMO. Credenziali Amministratore Username: icedolini.it Password: cedolini

CONTROLLO SCADENZA FIRMA DIGITALE. Come visualizzare la scadenza del certificato [data inizio e fine validità] relativo al Gestore certificati utente

SVILUPPARE APPLICAZIONI PER LA PIATTAFORMA JAVA EE

PANEM Panificazione automatizzata rev. 1.0

Regione Calabria Dipartimento n.9 Lavori Pubblici ed Infrastrutture

Stato della Base Informativa di Progetto

4.2.2 Inserimento dipendenze dal repository nexus di Linea Comune

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Suite OmniTouch 8400 Instant Communications One Number Services, accesso dal Web

SCHEDA TECNICA PIANO EXPORT

PROQUOTE CONNECT CLIENT. Requisiti Tecnici di Installazione

3.2.6 Modifica ordine di visualizzazione delle aree Griglia Modelli Prerequisiti... 13

Conversione di nomi e indirizzi. Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A Simone Bassis bassis@dsi.unimi.

LE NUOVE FUNZIONALITA

Moduli di candidatura elettronici LLP Guida del candidato

Aggiornamento Main Office v Aggiornamento Main Office v

Ingegneria del Software: JDBC.

GESTIRE E MANTENERE UN AMBIENTE WINDOWS SERVER 2003 PER MCSA WINDOWS 2000

SenTaClAus - Sentiment Tagging & Clustering Analysis on web & social contents

AD HOC REVOLUTION. Modulo Logistica Remota. Logistica Remota

Guida per l Amministra ScuolaFamiglia

FATTURA ELETTRONICA PA

ESAME DI FONDAMENTI DI INFORMATICA T-2 del 27/06/2011 Proff. E. Denti G. Zannoni Tempo a disposizione: 4 ore MAX

Z3 B1 Message Addon Invio Massivo Documenti via e Fax per SAP Business One

Esame 70284: Implementazione e amministrazione di Exchange Server 2003 (corso MS-2400)

Giuseppe Contu. Conoscenza di base di MS Excel 2003.

SPEDIZIONE CONFIGURAZIONE ED INSTALLAZIONE AMBIENTE SYSINT/W

LABORATORI DI INFORMATICA 1 MANUALE STUDENTE

Formstat Flight. Caratteristiche di Formstat Flight

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Guida Pubblica Amministrazione

SISTEMA INFORMATIVO INPS

Novità: Correzione di errori: Altro

La tecnica FMEA di prodotto

Guida per la compilazione on-line delle domande di partecipazione al concorso

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

e/fiscali - Rel

Guida descrittiva del programma Gestione Magazzino

PROGETTO S.A.I.A. Software XML v.2 - Tracciati AP5

CASSETTO PREVIDENZIALE AZIENDE MANUALE REGOLARITA CONTRIBUTIVA

Cabina MT/BT. Prescrizioni particolari:

E/Fiscali - Rel

MANUALE UTENTE (per il Modello di rilevazione in MS Excel)

ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

QUANDO WINDOWS XP NON SI AVVIA

Acronis Backup & Recovery 10

Laboratorio di Basi di Dati

Mon Ami Gestione della packing list

Obiettivo. Dal problema al risultato Algoritmo. Imparare a PROGRAMMARE

ADEGUAMENTO Gestione TFR per invio ad INPDAP 2008

HTML HTML. HyperText Markup Language. Struttura di un documento. Gli elementi essenziali di un documento HTML sono i seguenti TAG: <HTML>...

CASSETTA DEGLI ATTREZZI STANDARD. Tipo Ente: Comune. Ufficio: Anagrafe. Servizio: Rilascio certificati

Una Promozione è costituita dalla definizione di una proposta di vendita di uno o più Articoli ad un prezzo diverso da quello normale di vendita.

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Firmware Release 1.3.1

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

Collegamenti previsti fra Sistema Impresa e Contabilità di Sistema Professionista

TRASMISSIONE DATI CON PROTOCOLLO XON-XOFF (1)

System Document Console SDC Suite di moduli realizzati in ambiente Lotus Notes/Domino Supporto al PDM

Architettura MVC-2: i JavaBeans

Quale dei seguenti software è opportuno attivare durante il download di un file generico?

L architettura MVC (Model- View-Controller) Introduzione

Registratori di Cassa

STATO CIVILE Ascot Web

Transcript:

SCFramewrk QUICK START Dcument per: Dcument: Us Intern SCFQuickStart.dc Data: 06 giu. 04 Autri: Michele Barbagli

I N D I C E SCFRAMEWORK... 1 1. AMBITO... 3 2. STRUMENTI... 4 3. ANALISI DEI PACKAGE... 7 Package it.sintracnsulting.cmmn.taglib... 7 UML Class Diagram... 7 4. STRUTTURA DI UNA APPLICAZIONE... 8 5. SVILUPPO DI UNA APPLICAZIONE... 10 Step principali per l svilupp di una nuva applicazine... 10 Svilupp di una applicazine di gestine cntatti (Rubrica)... 12 APPENDICE A : DIAGRAMMA UML DELLA SCQUERYACTION (ELENCHI)25 SCFramewrk Quick Start

1. AMBITO La cmplessità e difficltà di gestine delle applicazini Java web based, prta alla necessità di individuare una serie di strumenti che facilitin il cmpit dei prgrammatri; esistn numersi tl nell ambit della cmunità pen-surce ma, in quasi tutti i casi, il cst cgnitiv è particlarmente alt. In particlare, è mlt cmplicat valutare la reale validità di tali strumenti ed integrarli insieme all intern di una applicazine. Si è resa pertant necessaria il prgett di un framewrk di integrazine, che frnisca un pattern unic per la realizzazine di applicazini java web-based,che sian in qualche md standardizzate. Prendend spunt dai sftware in cmmerci, il framewrk ha cme biettiv la semplificazine di alcune delle perazini fndamentali nella creazine di una applicazine: Gestine del lgin / lgut Gestine dei Menu Gestine delle stringhe e delle etichette di test in file di risrse esterni alla applicazine Creazine di elenchi paginati cn funzini di ricerca, rdinament, filtr, cancellazine Creazine di frm di inseriment / aggirnament dati; per la gestine dei dati è stat integrat il Layer di persistenza Hibernate ( www.hibernate.rg ) Gestine unificata degli errri Il framewrk inltre, cntiene anche una serie di classi di utilità che permettn di eseguire prcedure cmuni: Cnvertire un file Excel in XML Cnvertire un ram del file system, una JavaBean, una lista di JavaBean in XML Inviare una e-mail in frmat txt html Inviare un Fax attravers web service di Interfax (www.interfax.net) Cntrllare la crrettezza di una email (Interrgand il Server SMTP) Funzini di maniplazine delle stringhe Inviare un SMS attravers il servizi SMS-Web di Mbyt (www.mbyt.it) Interfacciament cn il Jb scheduler Quartz (quartz.surcefrge.rg) Interfacciament cn la SessinFactry di Hibernate (www.hibernate.rg) SCFramewrk Quick Start

2. STRUMENTI Gli strumenti utilizzati, sn stati selezinati tra le vari librerie dispnibili gratuitamente sulla rete; è stat eseguit un lavr di integrazine ed ttimizzazine delle librerie selezinate. Le librerie utilizzate, da intendersi anche cme prerequisit per la piena cmprensine del framewrk, sn: Struts1.1 (http://jakarta.apache.rg/struts) La libreria principale su cui si basa il framewrk Hibernate ( http://www.hibernate.rg ) Strument di bject t relatinal mapping; permette di mappare le tabelle del database su ggetti Java (Per esempi: tabella cntatti ed ggett Cntatt cn un rapprt 1-1 tra le prprietà dell ggett e le clnne della tabella) Dm4j (www.dm4j.rg) Libreria di maniplazine e parsing delle stringhe XML Lg4j ( http://jakarta.apache.rg/lg4j ) Libreria di gestine delle funzinalità di lgging all intern di una applicazine; permette la cnfigurazine esterna del lgging attravers un file di risrse XML JavaMail ( http://java.sun.cm/javamail ) Libreria Java per la gestine della Psta Elettrnica (Invi, Ricezine, Allegati, etc.) XTags (http://jakarta.apache.rg/taglibs ) Tag da inserire all intern delle pagine JSP (Custm Tag) per la maniplazine die file e stringhe XML. Gli strumenti SW utilizzati sn: PstgreSQL ( www.pstgresql.rg ) e driver jdbc ( http://jdbc.pstgresql.rg ) Tmcat ( http://jakarta.apache.rg/tmcat ) Partend dal mdell MVC (Mdel View Cntrl), vediam quali sn gli strumenti utilizzati e le integrazini eseguite nei tre livelli MVC: Mdel: SCFramewrk Quick Start

Per la persistenza dei dati, è stat utilizzat il framewrk Hibernate ( www.hibernate.rg ); per il salvataggi dei dati di un frm su una tabella singla, sn state sviluppate una classe Frm (SCObjectFrm) ed una Actin (SCObjectActin) che permettn di assciare un ggett persistente (un Java Bean che ha gli stessi campi della tabella assciata) ad un ggett frm e di salvare / mdificare / cancellare l ggett e quindi i recrd della tabella assciata; la lettura e gli elenchi vengn gestiti tramite query sql dirette al database e la classe che esegue tali perazini e la SCQueryActin; Cntrl Per la lgica di cntrll del fluss, è stat utilizzat Jakarta Struts, il nt framewrk di Jakarta e ra di Apache per il cntrll del fluss di esecuzine di una applicazine web; http://jakarta.apache.rg/struts/ ; la versine utilizzata, è la 1.1 che permette anche di assciare dei validatri ai frm direttamente all intern di files xml di cnfigurazine; E stata implementata la SCQueryActin per la gestine degli eventi e la SCFilterFrm (la frm assciata) per le ricerche ed i filtri. Tutte le Actin estendn SCAbstractActin e tutte le Frm estendn SCActinFrm. View Struts Taglib (lgic, html, bean) sn state utilizzate le librerie di tag di struts per la gestine della visualizzazine dei messaggi di errre, per la visualizzazine delle stringhe in multilingua, per la generazine dei frm XTags: Per il parsing ed il rendering di stringhe ed elenchi XML Svilupp di custm tag: Sn stati sviluppati dei tag custm per integrarsi cn le funzinalità sviluppate e per perazini cmuni cme la frmattazine di stringhe, il ridimensinament di immagini, ma sprattutt per l integrazine cn i frm (i tag devn leggere il valre dal frm crrispndente che può essere SCFilterFrm SCObjectFrm), la paginazine degli elenchi XML (SCTNavbarTag); Sn state sviluppate anche una serie di classi di Utilità (Package it.sintracnsulting.cmmn.util) e di interfacciament cn Hibernate (Package it.sintracnsulting.cmmn.db, classe SCHibernateUtil) per l access alla cnnessine; SCFramewrk Quick Start

vengn utilizzate le cnnessini di Hibernate per avere un unic punt di access al pl di cnnessini attravers tale framewrk; Le classi di utilità svlgn una serie di perazini cmuni sulle stringhe (SCStringUtil.java), sugli stream XML (SCXMLUtil), sui files (SCFileUtil), l invi della psta (SCEmailUtil); nel package sn presenti inltre alcune classi di che fungn da interfaccia vers Interfax ( il servizi di invi dei Fax www.interfax.net, SCFaxUtil) e vers il servizi di invi / ricezine di SMS (SCSMSUtil vers www.mbyt.it); il servizi di invi SMS utilizza anche un file di cnfigurazine memrizzat nel package it.sintracnsulting.cmmn.cnf ; A tutti i livelli il lgging è gestit attravers la classe SCLg del package it.sintracnsulting.cmmn.lgging che fa us della libreria lg4j. SCFramewrk Quick Start

3. ANALISI DEI PACKAGE Package it.sintracnsulting.cmmn.taglib UML Class Diagram SCFramewrk Quick Start

4. STRUTTURA DI UNA APPLICAZIONE Una applicazine SCF è strutturata cme una applicazine web standard cn la struttura delle cartelle definita nelle specifiche, più alcuni file aggiuntivi peculiari del framewrk. Di seguit, vediam un esempi: web: cntiene le pagine jsp, le immagini, i file html etc., eventualmente strutturati in cartelle e sttcartelle (nell esempi in figura, tutti i file di frnt-end sn all intern della cartella principale) WEB-INF: cntiene i file web.xml e struts-cnfig.xml. WEB-INF/lib: cntiene le librerie java (jar file) necessari al crrett funzinament della applicazine + 2 JAR file cntenenti le classi cmuni (it.sintracnsulting.cmmn) del Framewrk il prim, e le classi Custm sviluppate su misura per la singla applicazine il secnd; questi file, andrann generati all intern della WEB-INF/lib una vlta sviluppata l applicazine. WEB-INF/classes: cntiene SCCnfig.prperties (il file di cnfig. Della applicazine), lg4j.prperties (il file di cnfigurazine di lg4j), hibernate.cfg.xml e Mapping.cfg.xml (i file di cnfigurazine di Hibernate) WEB-INF/xml : cntiene i file xml validatr.xml e validatr-rules.xml cntenenti le cnfigurazini per il Validatr framewrk di Struts. SCFramewrk Quick Start

WEB-INF/tld : cntiene il file TLD cn le definizini delle Tag Library di Struts e di quella sviluppata ad-hc per il Framewrk. SCFramewrk Quick Start

5. SVILUPPO DI UNA APPLICAZIONE Prendiam cme esempi l svilupp di una applicazine di gestine dei cntatti aziendali (sccntact); seguend i vari passi dell svilupp, andrem ad apprfndire le varie caratteristiche e funzinalità del framewrk. Step principali per l svilupp di una nuva applicazine L svilupp di una applicazine tip, dvrà seguire i seguenti passi: 1. Analisi applicativa e studi dei requisiti 2. Prgettazine E-R e schema lgic del database. 3. Realizzazine del database secnd il prgett E-R su PstgreSQL 4. Creazine del prgett su Netbeans Per il prgett, verrà creata una nuva cartella sul cvs nel mdul custm ; il nme della cartella dvrà permettere di identificare il prgett (sccntact) All intern della cartella principale, ci sarann i srgenti delle classi java e le risrse per il prgett, ed una cartella web cntenente i file della applicazine web. I srgenti java, andrann creati nel package it.sintracnsulting.custm.sccntact ; all intern, ci sarà cnf per le risrse, bject per gli ggetti POJO(Plain Old Java Objects) da mappare su Hibernate, struts cn le eventuali estensini delle classi SCQueryActin SCObjectActin per la gestine degli elenchi e delle anagrafiche; per applicazini standard, nn sarà necessari creare azini Struts. 5. Cpia dei file TLD nella cartella WEB-INF/tld; cpia del file web.xml nella cartella WEB-INF; creazine del file struts-cnfig.xml; cpia dei file validatr-rules.xml e creazine del file validatin.xml nella cartella WEB-INF/xml; i file pssn essere cpiati da un altra applicazine (fatel cn attenzine!). 6. Creazine dei file di cnfigurazine del prgett nella cartella WEB-INF/classes: lg4j.prperties: file di cnfigurazine di Lg4j (jgging) hibernate.cfg.xml: file di cnfigurazine di Hibernate (Cnnessine JDBC) Mapping.hbm.xml: cntiene la mappatura degli ggetti java sulle tabelle. SCCnfig.prperties: file di cnfigurazine della applicazine: vi viene definit il datasurce da utilizzare per gli elenchi, il package cntenente gli ggetti persistenti, una eventuale classe di inizializzazine (Implementa l interfaccia PstInit) SCFramewrk Quick Start

7. Creazine del file cntente la definizine delle tabelle virtuali (sccntact.prperties) Il file cn la definizine delle tabelle virtuali (Query SQL per gli elenchi) andrà creat all intern del package it.sintracnsulting.custm.sccntact.cnf ; cnterrà la definizine delle query strutturata cme nell esempi qui stt riprtat. # Cntatti table.cntatti.id=id table.cntatti.fields=* table.cntatti.frm=cntatti table.cntatti.where= table.cntatti.rder= Oltre a quest file di prperties, il package cnf cnterrà anche un file di risrse (sempre un file di prperties) cntenente le stringhe (multilingua) per l applicazine. 8. Creazine dei file JSP e delle eventuali classi, mdifica dell struts-cnfig.xml Creazine del Frameset ; Creazine del menu.xml e della pagina menu.jsp ; Creazine della pagina cntatti.jsp (elenc e cancellazine) e della pagina setcntatti.jsp (Inseriment e Mdifica) ; analg per gruppi.jsp (elenc e cancellazine) e setgruppi.jsp (Inseriment e Mdifica) Eventuale estensine delle classi SCQueryActin e SCObjectActin ; Creazine degli ggetti Java crrispndenti alle tabelle sul database Inseriment della actin cntatti.d e setcntatti.d all intern del file strutscnfig.xml ; 9. Creazine del Cntext all intern di Tmcat Definizine di un nd Cntext nel file server.xml di tmcat Definizine del datasurce principale della applicazine (per la cnnessine al DB) 10. Avvi di Tmcat e test della applicazine SCFramewrk Quick Start

Svilupp di una applicazine di gestine cntatti (Rubrica) Analisi applicativa e studi dei requisiti ( Punt 1) L applicazine dvrà permettere di gestire una anagrafica gruppi, una anagrafica cntatti, e di raggruppare i cntatti secnd i gruppi definiti; i cntatti dvrann essere ricercabili per nme, cgnme, grupp, email; i gruppi dvrann essere ricercabili per nme; gni cntatt, ptrà infine essere assciat ad un sl grupp. Prgettazine E-R (Punt 2) e schema lgic Vediam l schema E-R iptizzat per sddisfare le esigenze della applicazine di gestine cntatti. datacre idutente Id idutente Id titl, nme,cgnme,email, fax,cellulare,telefn nme Gruppi 1:N Cntatti Successivamente andiam a definire l schema lgic del database, cn il dettagli di tutte le tabelle ed i campi. Andrà quindi creat un database sull istanza PstgreSQL; le tabelle vengn create all intern dell schema dev ( per mtivi legati nn legati alla applicazine ). dev.gruppi(id, idutente, nme, datacre) dev.cntatti(id, titl, nme, cgnme, email, telefn, cellulare, fax,.) Realizzazine del database su PstgreSQL ( schema fisic ) Nella tabella di seguit, si riprtan le definizini SQL delle tabelle da creare sul DB; il prefiss dev. Permette di creare le tabelle all intern dell schema dev precedentemente creat. CREATE TABLE dev.gruppi ( id serial NOT NULL, idutente int4, nme varchar(50), datacre timestamptz DEFAULT nw(), CONSTRAINT gruppi_pkey PRIMARY KEY (id) ) WITH OIDS; GRANT ALL ON TABLE dev.gruppi TO admin WITH GRANT OPTION; GRANT ALL ON TABLE dev.gruppi TO sintra; SCFramewrk Quick Start

CREATE TABLE dev.cntatti ( id serial NOT NULL, idgrupp int4, titl varchar(10), nme varchar(40), cgnme varchar(40), ragine varchar(50), indirizz text, cap varchar(5), cmune varchar(50), citta varchar(50), email text, email_uffici text, telefn varchar(30), telefn_uffici varchar(30), telefn_casa varchar(30), cellulare varchar(20), cellulare_uffici varchar(20), fax varchar(30), fax_uffici varchar(30), piva varchar(16), indirizz_uffici text, cap_uffici varchar(5), citta_uffici varchar(50), CONSTRAINT cntatti_pkey PRIMARY KEY (id) ) WITH OIDS; GRANT ALL ON TABLE dev.cntatti TO admin WITH GRANT OPTION; GRANT ALL ON TABLE dev.cntatti TO sintra; Creazine del prgett su Netbeans Andiam a creare il prgett su Netbeans; Mntare la cartella cmmn Creare una appsita cartella custm (sccntact) per i srgenti java; all intern, creare una cartella web per cntenere i file della applicazine web. Cpiare i file.tld in web/web-inf/tld Cpiare i file validatr-rules.xml e validatr.xml in web/web-inf/xml e mdificare se necessari validatr.xml Creare la cartella web/web-inf/lib e cpiare all intern le librerie necessarie. Cpiare il file web/web-inf/web.xml ed apprtare le pprtune mdifiche per adattarl alla nuva applicazine (in generale è necessari mdificare sl la parte relativa ad una eventuale autenticazine REALM) SCFramewrk Quick Start

Cpiare il file web/web-inf/struts-cnfig.xml per pi apprtare le pprtune mdifiche secnd le azini previste; di seguit, il file struts-cnfig.xml: <?xml versin="1.0" encding="iso-8859-1"?> <!DOCTYPE struts-cnfig PUBLIC "-//Apache Sftware Fundatin//DTD Struts Cnfiguratin 1.1//EN" "http://jakarta.apache.rg/struts/dtds/struts-cnfig_1_1.dtd"> <struts-cnfig> <!-- ================================= Frm Beans Definitins --> <frm-beans> <frm-bean name="filterfrm" type="it.sintracnsulting.cmmn.struts.scfilterfrm"/> <frm-bean name="bjectfrm" type="it.sintracnsulting.cmmn.struts.scobjectfrm" /> <frm-bean name="upladfrm" type="it.sintracnsulting.cmmn.struts.scupladfrm" /> </frm-beans> <!-- ================================= Glbal Exceptin Definitins --> <glbal-exceptins> </glbal-exceptins> <!-- =================================== Glbal Frward Definitins --> <glbal-frwards> <frward name="errr" path="/errr.jsp"/> </glbal-frwards> <!-- =================================== Actin Mapping Definitins --> <actin-mappings> <actin path="/cntatti" scpe="sessin" type="it.sintracnsulting.cmmn.struts.scqueryactin" name="filterfrm" validate="true"> <frward name="success" path="/cntatti.jsp"/> </actin> <actin path="/setcntatti" scpe="request" type="it.sintracnsulting.cmmn.struts.scobjectactin" name="bjectfrm" input="/setcntatti.jsp" validate="true"> <frward name="frm" path="/setcntatti.jsp"/> <frwardname="success" path="/cntatti.d?tablename=table.cntatti&actin=filter"/> </actin> <actin path="/gruppi" scpe="sessin" type="it.sintracnsulting.cmmn.struts.scqueryactin" name="filterfrm" validate="true"> <frward name="success" path="/gruppi.jsp"/> </actin> SCFramewrk Quick Start

<actin path="/setgruppi" scpe="request" type="it.sintracnsulting.cmmn.struts.scobjectactin" name="bjectfrm" input="/setgruppi.jsp" validate="true"> <frward name="frm" path="/setgruppi.jsp"/> <frward path="/gruppi.d?tablename=table.gruppi&actin=filter"/> </actin> name="success" --> <!-- Cnfigurazine della dimensine massima per i file in uplad attravers Struts --> <!-- -1 Sta per illimitata; se nn diversamente specificat, il parametr vale -1 <cntrller maxfilesize="2m"> <!-- The "input" parameter n "actin" elements is the name f a lcal r glbal "frward" rather than a mdule-relative path --> <set-prperty prperty="inputfrward" value="true"/> </cntrller> </actin-mappings> <!-- ================================ Message Resurces Cmuni --> <message-resurces parameter="it.sintracnsulting.cmmn.cnf.scfmessages" null="false" /> <!-- ================================ Message Resurces Custm per questa applicazine --> <message-resurces key="sccntact" parameter="it.sintracnsulting.custm.sccntact.cnf.sccmessages" null="false" /> <!-- ================================ Plugins --> <plug-in classname="rg.apache.struts.validatr.validatrplugin"> <set-prperty prperty="pathnames" value="/web-inf/xml/validatr-rules.xml,/web- INF/xml/validatin.xml"/> </plug-in> </struts-cnfig> Creazine dei file di cnfigurazine del prgett nella cartella WEB-INF/classes: lg4j.prperties: file di cnfigurazine di Lg4j (lgging) hibernate.cfg.xml: file di cnfigurazine di Hibernate (Definizine della Cnnessine JDBC per hibernate) <?xml versin='1.0' encding='utf-8'?> <!DOCTYPE hibernate-cnfiguratin PUBLIC "-//Hibernate/Hibernate Cnfiguratin DTD//EN" "http://hibernate.surcefrge.net/hibernate-cnfiguratin-2.0.dtd"> <hibernate-cnfiguratin> <sessin-factry> <prperty name="cnnectin.datasurce">java:cmp/env/jdbc/sccntact</prperty> <prperty name="shw_sql">true</prperty> <prperty name="dialect">net.sf.hibernate.dialect.pstgresqldialect</prperty> <!-- Mapping files --> <mapping resurce="mapping.hbm.xml"/> SCFramewrk Quick Start

</sessin-factry> </hibernate-cnfiguratin> Mapping.hbm.xml: cntiene la mappatura degli ggetti java sulle tabelle attravers Hibernate. <?xml versin="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.surcefrge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <!-- Gruppi --> <class name="it.sintracnsulting.custm.sccntact.bjects.grupp" table="dev.gruppi"> <id name="id" type="lng" clumn="id"> </id> <generatr class="sequence"> </generatr> <param name="sequence">dev.gruppi_id_seq</param> <prperty name="idutente"/> <prperty name="nme"/> <prperty name="datacre"/> <set name="cntatti" inverse="true" lazy="true"> </set> </class> <!-- Cntatti --> <class table="dev.cntatti"> <key clumn="idgrupp"/> <ne-t-many class="it.sintracnsulting.custm.sccntact.bjects.cntatt"/> <id name="id" type="lng" clumn="id"> </id> <generatr class="sequence"> </generatr> name="it.sintracnsulting.custm.sccntact.bjects.cntatt" <param name="sequence">dev.cntatti_id_seq</param> <prperty name="idutente"/> <prperty name="idgrupp"/> <prperty name="titl"/> <prperty name="nme"/> <prperty name="cgnme"/> <prperty name="ragine"/> <prperty name="indirizz"/> <prperty name="cap"/> <prperty name="cmune"/> <prperty name="citta"/> <prperty name="email"/> <prperty name="email_uffici"/> <prperty name="telefn"/> <prperty name="telefn_uffici"/> <prperty name="cellulare"/> <prperty name="cellulare_uffici"/> <prperty name="fax"/> <prperty name="fax_uffici"/> <prperty name="piva"/> SCFramewrk Quick Start

<prperty name="indirizz_uffici"/> <prperty name="cap_uffici"/> <prperty name="citta_uffici"/> <many-t-ne insert="false" update="false" name="grupp" class="it.sintracnsulting.custm.sccntact.bjects.grupp" clumn="idgrupp" /> </class> </hibernate-mapping> SCCnfig.prperties: file di cnfigurazine della applicazine: vi viene definit il datasurce da utilizzare per gli elenchi, il package cntenente gli ggetti persistenti, una eventuale classe di inizializzazine (Implementa l interfaccia PstInit) #Il Datasurce della Applicazine scf.cnfig.datasurce=java:cmp/env/jdbc/sccntact #Il package cntenente gli ggetti OR Mapped scf.cnfig.bjects.package=it.sintracnsulting.custm.sccntact.bjects #Il file di risrse della applicazine cntenente la definizine delle tabelle virtuali scf.custm.cnfig=it.sintracnsulting.custm.sccntact.cnf.sccntact Creazine del file cntente la definizine delle tabelle virtuali (sccntact.prperties) e di un file di risrse per le stringhe multilingua custm di questa applicazine (vedi la riga sttriprtata sull struts-cnfig.xml) <!-- ================================ Message Resurces Custm per questa applicazine --> <! Quest File di Risrse, viene caricat dalla Struts Actin Servlet e può essere recuperat utilizzand il tab <bean> (Es: <bean:message bundle= sccntact key=. />) dve bundle crrispnde al parametr key di cui stt --> <message-resurces key="sccntact" parameter="it.sintracnsulting.custm.sccntact.cnf.sccmessages" null="false" /> e pi di seguit il file sccntact.prperties. # Cntatti table.cntatti.id=id table.cntatti.fields=* table.cntatti.frm=dev.cntatti table.cntatti.where= table.cntatti.rder= # Gruppi table.gruppi.id=id table.gruppi.fields=* table.gruppi.frm=dev.gruppi table.gruppi.where= table.gruppi.rder= # Select Gruppi # Tabella virtuale utilizzata per la visualizzazine dell'elenc dei gruppi # all'intern delle selectbx tableselect.gruppi.id=id tableselect.gruppi.fields=id,nme as value SCFramewrk Quick Start

tableselect.gruppi.frm=dev.gruppi tableselect.gruppi.where= tableselect.gruppi.rder= Creazine dei file JSP e delle eventuali classi, mdifica dell struts-cnfig.xml Creazine del Frameset; <html> <head> <title>gestine Cntatti</title> <meta http-equiv="cntent-type" cntent="text/html; charset=is-8859-1"> </head> <frameset cls="20%,*" cls="*" framespacing="0" framebrder="no" brder="0"> <frame src="menu.jsp" name="menu" scrlling="no" nresize> <frame src="cntatti.d?tablename=table.cntatti" name="main"> </frameset> <nframes><bdy> </bdy></nframes> </html> Creazine del menu.xml e della pagina menu.jsp ; menu.xml <menu> <cntatti> Gestine Cntatti <cnt href="gruppi.d?tablename=table.gruppi"> Gruppi </cnt> <cnt href="cntatti.d?tablename=table.cntatti"> Cntatti </cnt> </cntatti> </menu> menu.jsp <%@ taglib uri="struts/html" prefix="html" %> <%@ taglib uri="scf/cmmn" prefix="scf" %> <html> <head> <link href="<html:rewrite page="/include/scf.css" />" rel="stylesheet" type="text/css"> </head> <bdy> <%/* XMLMenu name = Il nme simblic del menu target = Il target Frame di destinazine (default) labelstyle = l stile SCC per le label icn,icn = le icne di ram apert/chius */%> SCFramewrk Quick Start

<scf:xmlmenu labelstyle="scf_navbar" name="testmenu" target="parent.main" icn="images/fld.gif" icn="images/fldc.gif"> <%@include file="include/menu.xml"%> </scf:xmlmenu> </bdy> </html> Creazine della pagina cntatti.jsp (elenc e cancellazine) e della pagina setcntatti.jsp (Inseriment e Mdifica) ; analg per gruppi.jsp (elenc e cancellazine) e setgruppi.jsp (Inseriment e Mdifica). Gruppi.jsp <%@ taglib uri="struts/bean" prefix="bean" %> <%@ taglib uri="struts/html" prefix="html" %> <%@ taglib uri="struts/lgic" prefix="lgic" %> <%@ taglib uri="scf/cmmn" prefix="scf" %> <%@ taglib uri="scf/xtags" prefix="xt" %> <html> <head> </head> <bdy> <!-- <link rel="stylesheet" href="./include/scf.css" type="text/css"> Visualizzazine Messaggi e/ errri. Message = True sta per i messaggi; l'altr blcc lgic:lgic:messagespresent è per gli errri. I messaggi e gli errri, sn aggiunti alla request all'intern delle azini struts cme ggetti ActinErrr ActinMessage. Vedere la dcumentazine di Struts per ulteriri infrmazini --> <lgic:messagespresent message="true"> <html:messages id="message" message="true"><div class="scf_message"><bean:write name="message"/> </div></html:messages> <hr/> </lgic:messagespresent> <lgic:messagespresent > <html:messages id="message" ><div class="scf_errr"><bean:write name="message"/> </div></html:messages> <hr/> </lgic:messagespresent> <!-- Frm per le ricerche I parametri tablename (Il nme della tabella virtuale) ed actin (L'azine) sn bbligatri. Pssn essere aggiunti + campi di ricerca che vengn tutti messi in and nella Query risultante. --> <html:frm actin="/gruppi" name="filterfrm" type="it.sintracnsulting.cmmn.struts.scfilterfrm"> <scf:input name="tablename" type="hidden" value="table.gruppi"/> <scf:input name="actin" type="hidden" value="filter"/> <div class='scf_label'> <bean:message key="scf.cmmn.fields.display.name"/>: <scf:inputfilter size='10' styleclass='scf_input' name="nme" type="text" datatype="txt" cmparatr="ilk" /> <html:submit styleclass='scf_buttn' >Cerca</html:submit> SCFramewrk Quick Start

</div> </html:frm> <table width="96%" brder="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td> <table width="300" height="21" brder="0" cellpadding="0" cellspacing="0"> <tr> <td width="9" backgrund="./images/sx_b.gif"> </td> <td class="scf_th_tp" ><bean:message bundle="sccntact" key="sccntact.title.grups"/></td> <td class="scf_th_tp" height="21" > </td> <!-- Barra di paginazine In questa fase, in funzine del parametr "pagen"(numer di pagina) vengn selezinate le righe da visualizzare all'intern della pagina --> <scf:xmlnavbar tablename="table.gruppi" actin="gruppi.d" styleclass='scf_label'/> <td width="10" backgrund="./images/dx_b.gif"> </td> </tr> </table> <table width="100%" cellpadding="2" cellspacing="1" class="scf_table"> <tr class="scf_th"> </tr> <th></th> <th>nme</th> <th width='10%'></th> <!-- Impst il clre iniziale della riga; c'è un p' di lgica per implementare l'alternanza dei clri delle righe --> <scf:setattribute name="trclass" value="scf_tr1" scpe="page" /> <!-- --> Definizine del frm per la cancellazine. Quest frm cmprende tutte le righe della pagina cn le relative checkbx utilizzate per recuperare gli "id" degli ggetti da cancellare. <frm name="ddeletefrm" actin='setgruppi.d'> <html:hidden prperty='actin' value='ddelete'/> <html:hidden prperty='bject' value='grupp'/> <!-- Inizi del cicl di scrriment delle righe --> <xt:freach select="//data/rw"> <xt:chse> <xt:when test="$trclass='scf_tr1'"><scf:setattribute name="trclass" value="scf_tr0" scpe="page" /></xt:when> /></xt:therwise> <xt:therwise><scf:setattribute name="trclass" value="scf_tr1" scpe="page" </xt:chse> <tr class="<xt:valueof select="$trclass"/>"> <td width="10%"><a href='setgruppi.d?actin=update&bject=grupp&bjectid=<xt:valueof select="id"/>'>mdifica</a></td> /> <td><xt:valueof select="nme"/></td> <td > </td> SCFramewrk Quick Start <input type="checkbx" name="bjectid" value="<xt:valueof select="id"/>"

</frm> </table> </tr> </xt:freach> <table width="100%" height="21" brder="0" cellpadding="0" cellspacing="0"> <tr> <td width="10" backgrund="./images/bas_sx_b.gif"> </td> <td align="center" class="scf_th_ft"> <!-- Pulsanti di eliminazine ed inseriment di un nuv ggett --> <html:buttn styleclass='scf_buttn' value="nuv" prperty="nuv" nclick="lcatin.href='setgruppi.d?actin=insert&bject=grupp';"/> <html:buttn styleclass='scf_buttn' value="elimina Selezinati" prperty="elimina" nclick="ddeletefrm.submit()"/> </td> <td width="9" backgrund="./images/bas_dx_b.gif"> </td> </tr> </table> </td> </tr> </table> </bdy> </html> Setgruppi.jsp <%@ taglib uri="struts/bean" prefix="bean" %> <%@ taglib uri="struts/html" prefix="html" %> <%@ taglib uri="struts/lgic" prefix="lgic" %> <%@ taglib uri="scf/cmmn" prefix="scf" %> <%@ taglib uri="scf/xtags" prefix="xt" %> <html> <head> </head> <bdy> <link rel="stylesheet" href="./include/scf.css" type="text/css"> <div class='scf_title'> <bean:message bundle="sccntact" key="sccntact.title.managegrups"/> </div> <!-- Visualizzazine di messaggi di errre e nn --> <lgic:messagespresent message="true"> <html:messages id="message" message="true"><div class="scf_message"><bean:write name="message"/> </div></html:messages> <hr/> </lgic:messagespresent> <lgic:messagespresent > <html:messages id="message" ><div class="scf_errr"><bean:write name="message"/> </div></html:messages> <hr/> </lgic:messagespresent> <!-- Frm di inseriment di un grupp --> <center><table> <html:frm actin="/setgruppi" name='bjectfrm' type='it.sintracnsulting.cmmn.struts.scobjectfrm'> <scf:input name="bject" type="hidden"/> <scf:input name="actin" type="hidden"/> <scf:input name="bjectid" type="hidden"/> SCFramewrk Quick Start

<tr> <!-- Si nti il nme del camp di input che inizia cn "db_"; quest indica al framewrk di memrizzare il valre nell'ggett java POJO assciat ed indicat nel parametr "bject" --> <td class="scf_label">nme: </td><td ><scf:input styleclass='scf_input' name="db_nme" type="text" /> </td> </tr> <tr> <td ><input class='scf_buttn' nclick="histry.g(-1)" type='reset' value="<bean:message key="scf.cmmn.fields.display.reset"/>" /> </td> <td class="scf_label"><input class='scf_buttn' type='submit' value="<bean:message key="scf.cmmn.fields.display.submit"/>" /></td> </tr> </html:frm> </table></center> </bdy> </html> Eventuale estensine delle classi SCQueryActin e SCObjectActin ; in quest cas nn necessitan estensini delle pagine di gestine dei cntatti e dei gruppi. Creazine degli ggetti Java crrispndenti alle tabelle sul database All intern del package it.sintracnsulting.custm.sccntact.bjects vann creati gli ggetti Grupp e Cntatt; per mtivi di brevità nn vengn qui riprtati. Inseriment della actin cntatti.d e setcntatti.d all intern del file strutscnfig.xml ; l stess per gruppi.d e setgruppi.d Creazine del Cntext all intern di Tmcat ed avvi dell applicatin Server. <Cntext path="/sccntact" dcbase="c:\java\cvs\java\custm\sccntact\web" debug="9"> <Resurce name="jdbc/sccntact" auth="cntainer" type="javax.sql.datasurce"/> <ResurceParams name="jdbc/sccntact"> <parameter> <name>factry</name> <value>rg.apache.cmmns.dbcp.basicdatasurcefactry</value> </parameter> <parameter> <name>driverclassname</name> <value>rg.pstgresql.driver</value> </parameter> <parameter> <name>url</name> <value>jdbc:pstgresql://lcalhst/scsintra?charset=utf-8</value> </parameter> <parameter> <name>username</name> <value>admin</value> </parameter> <parameter> <name>passwrd</name> <value>admin</value> </parameter> SCFramewrk Quick Start

<parameter> <name>maxactive</name> <value>100</value> </parameter> <parameter> <name>maxidle</name> <value>10</value> </parameter> <parameter> <name>maxwait</name> <value>-1</value> </parameter> <parameter> <name>remveabandned</name> <value>true</value> </parameter> <parameter> <name>remveabandnedtimeut</name> <value>60</value> </parameter> <parameter> <name>lgabandned</name> <value>true</value> </parameter> </ResurceParams> </Cntext> Screensht SCFramewrk Quick Start