Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Corso di Ingegneria del Web A A
Corso di Ingegneria del Web A A Domenico Rosaci WS e Java Beans Esercitazione N°3
2
Riprendiamo il WS dell’esercitazione num
Riprendiamo il WS dell’esercitazione num. 1, per il quale avevamo inserito il client provaClient() D. Rosaci Ingegneria del Web
3
Aggiungiamo al progetto una pagina JSP
D. Rosaci WS e JSP
4
Salvare la jsp in WebContent
D. Rosaci WS e JSP
5
Applichiamo il template standard
D. Rosaci WS e JSP
6
Completare la JSP D. Rosaci WS e JSP
7
Eseguire la JSP D. Rosaci WS e JSP
8
Considerazioni Di fatto abbiamo collegato il WS ad un client java per poi inserire questo client in una JSP Il web service resta comunque disponibile per essere usato da altri client, anche non basati su java D. Rosaci WS e JSP
9
Java Beans Le JSP sono estensioni dei servlet Java, di conseguenza consentono di ottenere tutti i risultati di questi ultimi. Lo svantaggio dei Servlet è però rappresentato dalla difficoltà di manutenzione del codice HTML delle applicazioni eccessivamente complesse, in quanto il più delle volte contengono una quantità di codice scriptless eccessiva per un programmatore non esperto in Java. Soluzione a questo problema è rappresentata dai Java Beans, componenti software contenenti una classe Java, che possono venire inclusi in una pagina JSP, permettendo quindi un ottimo incapsulamento del codice, peraltro riutilizzabile. Al Web Designer quindi sarà pressochè invisibile la sezione di codice puro, sostituito da richiami ai metodi delle classi incluse. I Bean sono costituiti esclusivamente da codice Jav, salvati con estensione .java e compilati generando un file di estensione .class. Sarà il file .class che dovrà venire incluse nella pagina JSP. D. Rosaci WS e JSP
10
jsp:useBean Es. <jsp:useBean id=”nomeBean” scope=”session” class=”classe” /> Permette di associare un’istanza di un JavaBean (associata ad un determinato ID) ad una variabile. In pratica offre la possibilità di associare la classe contenuta nel JavaBean ad un oggetto visibile all’interno della pagina, in modo da poter richiamare i suoi metodi. Attributi: Id: identità dell’istanza dell’oggetto nell’ambito specificato. Scope: ambito dell’oggetto, le opzioni sono: page: gli oggetti con questo ambito sono accessibili solo all’interno della pagina in cui sono stati creati, in pratica possono venire paragonati alle variabili locali di un qualsiasi linguaggio di programmazione, vengono distrutte alla chiusura della pagina e i dati saranno persi; request: gli oggetti con questo ambito sono accessibili esclusivamente nelle pagine che elaborano la stessa richiesta di quella in cui è stato creato l’oggetto, quest’ultimo inoltre rimane nell’ambito anche se la richiesta viene inoltrata ad un’altra risorsa; session: gli oggetti in quest’ambito sono accessibili solo alle pagine che elaborano richieste all’interno della stessa sessione di quella in cui l’oggetto è stato creato per poi venire rilasciati alla chiusura della sessione a cui si riferiscono, in pratica restano visibili in tutte le pagine aperte nella stessa istanza (finestra) del Browser, fino alla sua chiusura. Solitamente i bean istanziati in questo modo vengono utilizzati per mantere le informazioni di un utente di un sito; application: gli oggetti definiti in quest’ambito sono accessibili alle pagine che elaborano richieste relative alla stessa applicazione, in pratica sono validi dalla prima richieta di una pagina al server fino al suo shotdown. class: nome della classe che definisce l’implementazione dell’oggetto nomeBean D. Rosaci WS e JSP
11
jsp:setProperty Permette di impostare il valore di una delle proprietà di un bean. Attributi: name: nome dell’istanza di bean definita in un’azione <jsp:useBean> property: rappresenta la proprietà di cui impostare il valore value: valore assegnato alla proprietà specificata Esempio: <jsp:setProperty name=”nome_bean” property=”prop” value=”v” /> permette di assegnare il valore v alla proprietà prop del bean di nome nome_bean. D. Rosaci WS e JSP
12
Jsp:getProperty Prende il valore di una proprietà di una data istanza di bean e lo inserisce nell’oggetto out implicito (in pratica lo stampa a video). Attributi: name: nome dell’istanza di bean da cui proviene la proprietà definita da un’azione <jsp:useBean> property: rappresenta la proprietà del bean di cui si vuole ottenere il valore D. Rosaci WS e JSP
13
Esempio: InfoUtente public class InfoUtente {
private String nome = null; private String = null; private int pagineViste; public InfoUtente() { pagineViste=0; } public aggiornaPV() { pagineViste++; } public int getPagineViste(){ return pagineViste; } public void setNome(String value) { nome = value; } public String getNome() { return nome; } public void set (String value) { = value; } public String get () { return ; } public String riassunto(){ String riassunto = null; riassunto = "Il nome dell'utente è"+nome+","; riassunto+= "il suo indirizzo è: "+ ; riassunto+= " e ha visitato "+pagineViste+" del sito"; return riassunto; } }//InfoUtente D. Rosaci WS e JSP
14
Uso del Java Bean nella JSP
<html> <head><title>Utilizzo del Bean</title></head> <body> <jsp:useBean id="utente" scope="session" class="InfoUtente"/> <jsp:setProperty name="utente" property="nome" value=“Mario"/> in alternativa usare i metodi pubblici della classe: <% utente.setNome(«mario"); %> La lettura dei valori si può fare così: <jsp:getProperty name="utente" property="nome"/> Oppure così: <% out.println(utente.getNome()); out.println(utente.riassunto()); %> D. Rosaci WS e JSP
15
Altro Es. RubricaStudenti
package it.domenicorosaci; class Info{ private String nome; private String cognome; private String ; private String telefono; public String getNome() { return nome; } public String getCognome() {return cognome;} public String get () {return ;} public String getTelefono() {return telefono;} public void setNome(String n) {nome=n;} public void setCognome(String c) {cognome=c;} public void set (String e) { =e;} public void setTelefono(String t) {telefono=t;} (Aggiungere come nuova classe in file separato nel progetto RubricaStudenti dell’esercitazione WS 2) D. Rosaci WS e JSP
16
AGGIUNGERE ALLA CLASSE RubricaStudenti public ArrayList<Info> trovaInfo(String matricola) { ArrayList<Info> risultato=new ArrayList<Info>(); Info tmp; try {new com.mysql.jdbc.Driver(); Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/studenti"; Connection con = DriverManager.getConnection(url, "root", "poirot75db"); Statement cmd = con.createStatement(); String query = "SELECT studenti.Nome,studenti.Cognome,recapiti.telefono,recapiti. FROM recapiti INNER JOIN studenti ON studenti.matricola=recapiti.matricola WHERE matricola="+matricola; ResultSet res = cmd.executeQuery(query); while(res.next()){tmp=new Info(); tmp.setNome(res.getString("Nome")); tmp.setCognome(res.getString("Cognome")); tmp.setTelefono(res.getString("telefono")); tmp.set (res.getString(" ")); risultato.add(tmp); } res.close(); cmd.close(); con.close(); catch (Exception e) { System.out.println("errore di connessione: "+e); e.printStackTrace(); return risultato;} D. Rosaci WS e JSP
17
Scrivere la pagina JSP import="it.domenicorosaci.RubricaStudenti"%> import="it.domenicorosaci.Info"%> import="java.util.ArrayList"%> page language="java" contentType="text/html; charset=ISO " pageEncoding="ISO "%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO "> <title>Rubrica Studenti</title> </head> <body> (CONTINUA) D. Rosaci WS e JSP
18
<% String m=request.getParameter("matricola");
if((m==null)||(m.length()==0)){%> <form action="" > <br>Matricola:<input type= "text" name="matricola"> <br><input type= "submit"> </form> <%}else{ ArrayList<Info> res = RubricaStudenti.trovaInfo(m); if(res!=null) {%> lo studente avente matricola <%=m%> si chiama <%=res.get(0).getNome()%> <%=res.get(0).getCognome()%> <br> recapiti: <%for(int i=0;i<res.size();i++){%> <br>num: <%=i+1%>: <%if(res.get(i).getTelefono()!=null)%> telefono: <%=res.get(i).getTelefono()%> <%if(res.get(i).get ()!=null)%> <%=res.get(i).get ()%> <%} } else%> non esiste uno studente con tale matricola <%}%> </body> </html> D. Rosaci WS e JSP
19
Considerazioni Stavolta non abbiamo usato alcun WS
L’approccio con il Java Beans si è posto come alternativa al WS E’ un approccio che non si presta ad essere usato con altre tecnologie D. Rosaci WS e JSP
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.