Sei sulla pagina 1di 3

Esempio

Schema: Autore(Codice,Nome,Cognome) Scrive(Codice,ISBN) Libro(ISBN,Titolo,Editore,Prezzo) Si vuole pubblicare una pagina Web che contenga lelenco di tutti gli autori, costruita in modo tale che cliccando su un autore compaia una seconda pagina che mostra tutti i suoi scritti

Script CGI
Usa la CLI del DBMS Postgres: #include<stdio.h> #include<pgsql/libpq-fe.h> /* libreria di accesso */ int main(){ PGconn *conn=PQconnectdb(dbname=Libri); PGresult *result=PQexec(conn, select Codice, None, Cognome from Autore order by Cognome); printf(Content-type text/html\n\n); printf(<HTML>\n<BODY>\n); printf(<H1>Elenco dei libri</H1>\n); int ntuples=PQntuples(result);
1 2

Script CGI
for(int i=0;i<ntuples;i++){ printf(<p><a ref=\mostraLibri.exe?codice=%d\>\n, PQgetvalue(result,i,0)); printf( Nome: %s\n Cognome: %s\n</a></p>\n, PQgetvalue(result, i, 1),PQgetvalue(result,i,2)); } printf(</BODY>\n</HTML>\n); }

Script CGI: mostraLibri.c


void main(){ char ISBN[20], Titolo[100], Editore[100]; float prezzo; int Codice; char* QUERY_STRING; .../* leggi il valore della variabile di ambiente QUERY_STRING */ strcpy(QUERY_STRING,getenv(QUERY_STRING);) /* estrai il valore del codice */ Codice=... /* stampa intestazione e markup fisso */ printf(Content-type text/html\n\n); printf(<HTML>\n<BODY>\n);
4

Script CGI
exec sql declare Libri cursor for select Libro.ISBN, Titolo, Editore, Prezzo from Scrive join Libro on Scrive.ISBN=Libro.ISBN where Scrive.Codice=:Codice; exec sql open Libri; exec sql fetch Libri into :ISBN, :Titolo, :Editore, :Prezzo; printf(<H1>Elenco dei libri dellautore selezionato</H1>\n); while(sqlca.sqlcode==0){ printf(<P> ISBN: %s Titolo: %s Editore: %s Prezzo: %f</P>,ISBN,Titolo,Editore,Prezzo); exec sql fetch Libri into :ISBN, :Titolo, :Editore, :Prezzo; } exec sql close cursor Libri; printf(</BODY>\n</HTML>/n); return 0; }
5

JAVA servlet: mostraLibri.java


Presenta lelenco dei libri scritti da uno specifico autore (parametri passati con il metodo POST) import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class mostraLibri extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { try { String Codice=request.getParameter(codice); Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection conn=DriverManager.getConnection(jdbc:odbc:DB,user, pwd);
6

JAVA servlet
PreparedStatement pstmt=conn.preparedStatement(select + Libro.ISBN, Titolo, Editore, Prezzo from Scrive left join Libro+ on Scrive.ISBN=Libro.ISBN where Scrive.Codice=?); pstmt.setString(1,Codice); ResultSet result=pstmt.executeQuery(); response.setContentType(text/html); PrinterWriter out=response.getWriter(); out.pritnln(<HTML>); out.println(<BODY>); out.println(<H1>Elenco dei libri dellautore</H1>); while (result.next()){ out.println(<P>); out.println( ISBN: + result.getString(ISBN)+ +
7

JAVA Servlet
Titolo: + result.getString(Titolo)+ + Editore: +resutl.getString(Editore)+ + Prezzo: +result.getString(Prezzo)); out.println(</P>); } out.println(</BODY>); out.println(</HTML>); result.close(); pstmt.close(); conn.close(); } catch (ClassNotFoundException e){ throw new ServletException(e);} catch(SQLException e){ throw new ServletException(e);}

Programma JSP
<%@ page language=java %> <%@ page import=java.sql.*%> <% String Codice=request.getParameter(codice); Class.forName(sun.jdbc. odbc.JdbcOdbcDriver); Connection conn=DriverManager.getConnection( jdbc:odbc:DB,user,pwd); PreparedStatement pstmt=conn.preparedStatement( select Libro.ISBN, Titolo, Editore, Prezzo + from Scrive left join Libro on Scrive.ISBN=Libro.ISBN + where Scrive.Codice=?); pstmt.setString(1,Codice); ResultSet result=pstmt.executeQuery(); %>
9

Programma JSP
<% //produci il markup fisso e il contenuto variabile%> <HTML> <BODY> <H1>Elenco dei libri dellautore selezionato</H1> <% while (result.next()){%> <P> ISBN:<%= result.getString(ISBN)%> Titolo:<%=result.getString(Titolo)%> Editore:<%=result.getString(Editore)%> Prezzo:<%=result.getString(Prezzo)%> </P> <% }> </BODY> </HTML> <% result.close();pstmt.close();conn.close();%>

10

Potrebbero piacerti anche