Documentazione Contatti      
Documentazione > Tutorial > Client Web Service per la Validazione dei dati Anagrafici tramite il Cod.Fiscale
Hide
Best Practices
EJB
Frameworks
Howto
J2EE
J2ME and Wireless
J2SE
JSP e Servlet
Java Application Server
Java IDE/Tools
Java Media
Java Security
Java Sys Admin
Java e XML
Java e SQL
OpenSource Java
Patterns
Repository
Tesi
UML
Web Services
Slide
White Paper di jws.it
project management
Eventi
Groovy



I corsi elearning per la certificazione Sun gratuiti


Aristotele
Lo scopo del lavoro è quello di guadagnarsi il tempo libero


Client Web Service per la Validazione dei dati Anagrafici tramite il Cod.Fiscale



  Visualizza Commenti (1) Aggiungi Commento    
 
Client Web Service per la Validazione dei dati Anagrafici tramite il Cod.Fiscale
By Nino Guarnacci
15 novembre 2004

  Client Web Service per la Validazione dei dati Anagrafici tramite il Cod.Fiscale
Program Step 1
Program Step 2
Program Step 3
Program Step 4
Program Step 5
Program Step 6
Program Step 7
Program Documentazione

Ancora client web service, in questo esempio vedremo come realizzare un semplice controllo sui dati anagrafici immessi tramite il check del codice fiscale. Andremo a d interrogare un WS gratuito messo a disposizione dalla http://www.pinellus.it e ideato da Gianluca Pinelli.

Cercando di visionare un pò tutte le possibili tecniche per la produzione di client web services, questa volta utilizzeremo le librerie di axis http://ws.apache.org/axis , ex progetto IBM poi donato alla fondazione APACHE. Attualmente forse lo strumento più friendly sul mercato per l'implementazione dei WS.

L'idea è di realizzare una JSP un Custom Tag e una classe bridge scritta da noi per integrarsi con le classi realizzate per noi da axis per la comunicazione soap con il web service Cod_fiscaleService.


Gli steps da seguire sono:

1- Scaricare la libreria axis all'indirizzo http://ws.apache.org/axis/releases.html
2- Creare la struttura della nostra web application
3- Far generare ad axis le classi stub per la comunicazione con il ws
4- Realizzare un bridge per le classi service di axis
5- Realizzare un nostro custom tag da inserire nella pagina jsp che ci farà da front end per il nostro validatore
6- Compilare il nostro web.xml , un tld per la mappatura del custom tag e realizzare una semplice JSP
7- Compilare e Jarare il tutto e deploiare la nostra applicazione sotto tomcat o altro servlet engine o application server.



Step 1 top
Collegatevi all'indirizzo http://ws.apache.org/axis/releases.html
e scaricate l'ultima versione released del progetto axis, compattatela ed ispezionatene i contenuti.
(Per questi esempi ho utilizzato la ver. axis-1_1RC2)

Step 2 top
Create una cartella con il nome "validatore", all'interno createne un'altra con il nome "WEB-INF".
Dentro quest'ultima realizzate altre 3 cartelle "classes", "lib" e "tlds". Andate ad inserire le 4 librerie necessarie che trovate nella cartella lib del progetto AXIS axis.jar, saaj.jar, commons-discovery.jar, jaxrpc.jar dentro la cartella "lib". Adesso all'interno di classes create altre due cartelle "bridge" e "tags".

Step 3 top
Dovete far in modo che il vostro classpath abbia visibilità sulle librerie (.jar) presenti nella cartella lib all'interno del progetto axis

set CLASSPATH=%CLASSPATH%;.\axis.jar;.\log4j-1.2.4.jar;.\wsdl4j.jar;.\xerces.jar;.\axis-ant.jar;

.\commons-discovery.jar;.\commons-logging.jar;jaxrpc.jar;.\saaj.jar

A questo punto siamo pronti per farci generare le classi stub del servizio passandogli l'URL dove risiede il WSDL del servizio (ovvero l'interfaccia descrittiva).Per questo esempio l'url è http://www.pinellus.com/cfc/Cod_fiscale.cfc?wsdl

Apriamoci un shell e a riga di comando invochiamo la classe che reperirà il WSDL ne leggerà le specifiche e le modalità di comunicazione, ed infine ci genererà gli stub:
java org.apache.axis.wsdl.WSDL2Java http://www.pinellus.com/cfc/Cod_fiscale.cfc?wsdl


Fig. 1 Step 3

A questo punto troveremo all'interno della cartella da cui abbiamo invocato il comando un package con questo nome "cfc" con dentro i java delle nostre classi stub. Non ci resta che compilare i sorgenti e spostare l'intera cartella cfc all'interno della nostra web-application all'interno della cartella classes.



Step 4 top
Adesso realizziamo una classe, che farà da bridge tra la nostra web-app e gli stub di axis per la comunicazione con il servizio. Classe che prenderà in entrata alcuni parametri, quali NOME, COGNOME, SESSO, PROVINCIA, CITTA, DATA DI NASCITA.

package bridge;

import cfc.*;

public class BridgeCFR
{


     public String getCodice(String[] args) {

     String cf=null;
     try{

             // Invochiamo il Locator del servizio
            Cod_fiscaleServiceLocator serviceFac= new Cod_fiscaleServiceLocator();

            // Adesso siamo in grado di ottenere l'istanza dello stub dal locator
           Cod_fiscale pr=serviceFac.getCod_fiscaleCfc();

           // Otteniamo una istanza di Calendar valorizzandola con la data
           // di nascita cosi formata ANNO - MESE - GIORNO
           java.util.Calendar cal=java.util.Calendar.getInstance();
           cal.set(Integer.parseInt(args[7]), Integer.parseInt(args[6])-1, Integer.parseInt(args[5]));

           // A questo punto passiamo al servizio le informazioni di cui necessita
           // cognome, nome, sesso, provincia, citta, data di nascita
           cf=pr.makecod(args[0], args[1], args[2], args[3], args[4], cal);

          }catch(Exception e){
                  e.printStackTrace();
          }
          return cf;
         }

}

Adesso salvate la classe con nome "BridgeCFR" dentro la cartella bridge (validatore/WEB-INF/classes/bridge).



Step 5 top
Subito dopo realizziamo un semplice custom tag che utilizzi la nostra classe bridge passandogli le informazioni. Attenti questa classe, se avete deciso di realizzare un validatore standalone e non un'applicazione per il web non deve essere scritta, basta solamente inserire un metodo main nella classe precedente(BridgeCFR) ed utilizzarla a riga di comando.


package tags;

import javax.servlet.*;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.TagSupport;

import bridge.*;

public class CFTag extends TagSupport{

        //dichiaro gli attributi reperiti dalla form web
          public String cognome;
          public String nome;
          public String sesso;
          public String provincia;
          public String citta;
          public String giorno;
          public String mese;
          public String anno;
          public String codice;


          public void setCodice(String codice){
               this. codice = codice;
          }
          public String getCodice(){
                return codice;
          }


         public void setCognome(String cognome){
              this.cognome=cognome;
         }
         public String getCognome(){
               return cognome;
         }

        public void setNome(String nome){
               this.nome=nome;
        }
        public String getNome(){
               return nome;
        }


        public void setSesso(String sesso){
               this.sesso=sesso;
        }
        public String getSesso(){
               return sesso;
        }

        public void setProvincia(String provincia){
                this. provincia = provincia;
        }
        public String getProvincia(){
                return provincia;
        }


        public void setCitta(String citta){
               this. citta = citta;
        }
       public String getCitta(){
               return citta;
       }

       public void setGiorno(String giorno){
              this.giorno = giorno;
       }
       public String getGiorno(){
               return giorno;
       }



        public void setMese(String mese){
                this. mese = mese;
        }
         public String getMese(){
              return mese;
         }

        public void setAnno(String anno){
             this. anno = anno;
        }
        public String getAnno(){
             return anno;
        }


       public int doEndTag() throws JspException{

         try{



            JspWriter out=pageContext.getOut();


           if("null".equalsIgnoreCase(cognome)||cognome==null)return EVAL_PAGE;

           //mi istanzio il mio bridge
           BridgeCFR cf=new BridgeCFR();

          //e ne invoco il metodo che mi permette di effettuare la generazione del
          //codice fiscale
          String result=cf.getCodice(new String[]{cognome,nome,sesso,provincia,citta,giorno,mese,anno});

          if(result==null)return EVAL_PAGE;


           // Adesso faccio un banale controllo di uguaglianza tra il cf fornito e quello
           // generato dal WS e restituisco un messggio
            if(result.equalsIgnoreCase(codice))
            out.println("<h3>I dati inseriti risultano VALIDI</h3>");
            else{
                    out.println("<h3>I dati inseriti NON SONO VALIDI il Codice risultante è "+ result +"</h3>");
                    out.println("<h3>per "+ cognome +" "+nome+" nato a "+citta+" il                            "+giorno+"-"+mese+"-"+anno+"</h3>");
            }

            }catch(Exception ex){

                   ex.printStackTrace();
             }
             return EVAL_PAGE;
        }
}

Adesso salvate la classe con il nome "CFTag" dentro la cartella tags.



Step 6 top

Realizziamo il file tld che mappa il nostro custom tag:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
     <tlibversion>1.0</tlibversion>
     <jspversion>1.1</jspversion>
     <shortname>validanz</shortname>
     <tag>
          <name>valida</name>
          <tagclass>tags.CFTag</tagclass>
          <bodycontent>JSP</bodycontent>
          <attribute>
              <name>codice</name>
              <required>true</required>
              <rtexprvalue>true</rtexprvalue>
          </attribute>
         <attribute>
              <name>cognome</name>
              <required>true</required>
              +<rtexprvalue>true</rtexprvalue>
         </attribute>
         <attribute>
              <name>nome</name>
              <required>true</required>
             <rtexprvalue>true</rtexprvalue>
      </attribute>
      <attribute>
            <name>sesso</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
       </attribute>
       <attribute>
               <name>provincia</name>
               <required>true</required>
               <rtexprvalue>true</rtexprvalue>
       </attribute>
       <attribute>
                <name>citta</name>
                <required>true</required>
                <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
              <name>giorno</name>
              <required>true</required>
             <rtexprvalue>true</rtexprvalue>
       </attribute>
       <attribute>
            <name>mese</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
       </attribute>
       <attribute>
            <name>anno</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
      </attribute>
   </tag>
</taglib>

Adesso salvate il file con nome "validatore.tld" dentro la cartella tlds

Realizziamo il nostro web.xml:


<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
<!-- la mia libreria di custom tag sarà richiamabile dalle jsp con il nome validatore -->
   <taglib>
      <taglib-uri>validatore</taglib-uri>
      <taglib-location>/WEB-INF/tlds/validatore.tld</taglib-location>
   </taglib>

</web-app>

Adesso salvate il file con il nome "web.xml" dentro la cartella "WEB-INF".

Infine realizziamo la nostra complicatissima jsp che ci permetterà di effettuare le validazioni:


<%@taglib uri="validatore" prefix="validatore"%>
<html>
  <body>

   <!-- creo un form che richiami la stessa pagina fornendo le informazioni al custom tag -->
   <form action="#" method="post">
      Codice Fiscale : <input type="text" name="codice"><br>
      Cognome : <input type="text" name="cognome"> <br>
      Nome : <input type="text" name="nome"> <br>
      Sesso : <select name="sesso">
     <option value="m">Maschio</option>
     <option value="f">Femmina</option>
     </select><br>
     Citta : <input type="text" name="citta"> <br>
     Provincia : <input type="text" name="provincia" size="2"> <br>
     Giorno/Mese/Anno : <input type="text" name="giorno" size="2">/
     <input type="text" name="mese" size="2">/ <input type="text" name="anno" size="4"><br>

     <input type="submit" name="valida" value="Valida"><br>
  </form>

  <!-- richiamo il custom tag di validazione-->
  <validatore:valida   codice='<%=request.getParameter("codice")==null?"null":request.getParameter("codice")%>'   cognome='<%=request.getParameter("cognome")==null?"null":request.getParameter("cognome")%>'
  nome='<%=request.getParameter("nome")==null?"null":request.getParameter("nome")%>'   sesso='<%=request.getParameter("sesso")==null?"null":request.getParameter("sesso")%>'
  citta='<%=request.getParameter("citta")==null?"null":request.getParameter("citta")%>'   provincia='<%=request.getParameter("provincia")==null?"null":request.getParameter("provincia")%>'
  giorno='<%=request.getParameter("giorno")==null?"null":request.getParameter("giorno")%>'   mese='<%=request.getParameter("mese")==null?"null":request.getParameter("mese")%>'
  anno='<%=request.getParameter("anno")==null?"null":request.getParameter("anno")%>'

  />

  </body>
</html>

Adesso salvate quest'ultimo file con il nome "index.jsp" dentro la cartella validatore.



Step 7 top
A questo punto aprite una shell e mettetevi nella cartella classes e lanciare il compilatore java passandogli nel classpath le diverse librerie che sono nella cartella lib della vostra web-app (javac -classpath %CLASSPATH%;..\lib\axis.jar;..\lib\commons-discovery.jar;..\lib\saaj.jar;..\lib\jaxrpc.jar tags/*.java bridge/*.java).

Dopo aver corretto il centinaio di errori che il compilatore gentilmente vi mostrerà, sempre nella vostra shell tornate nella cartella di root (validatore/) e realizzate il war della vostra nuova web application (jar -cvf validatore.war *).

A questo punto non vi resta che allocare il vostro file validatore.war che risiede nella cartella validatore, dentro la cartella webapps di tomcat (o qualsiasi altro servlet engine o application server stiate usando) e startare il server.

http://localhost:8080/validatore/index.jsp è il vostro risultato ………….

Potete comunque scaricare qui la vostra web-application già pronta per essere testata.
Fai il DownLoad del validatore.war

Ciao ………Nino Guarnacci !!!!!!!



Documentazione top
WSDL
http://api.google.com/GoogleSearch.wsdl
Proprietario xmethods.net
Descrizione Interfaccia per il motore di ricerca di Google


 Attachments List
Generic Documentvalidatore.war.zip



JavaPortal è ideato da:    
K-Tech Logo










LICENZA



Eccetto dove diversamente specificato, i contenuti di questo sito sono rilasciati sotto licenza Creative Commons

Sitemap  © 2002-2004 Copyright Information. Privacy . Today is sabato 19 giugno 2010