View Single Post
Old 25-05-2005, 15:53   #13
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9945
Autore Matrixbob 2004/2005

JSP (Java Server Pages): San Francisco 1998.

Come qualche saggio disse: "... le Servlet sono per i programmatori, mentre le JSP son per i webmaster/webdesigner"!

Se PERL-CGI e Servlet sono simili allora anche PHP/ASP e JSP son simili.

Noi scriviamo la pagina.jsp in stile "XHTML like" e Jasper la trasforma automaticamente in Servlet al momento del primissimo richiamo, ovviamente tutto in maniera trasparente all'utente.

JSP: quali possibilità?!
Sicuramente le + diffuse, se ben non le sole, sono:
[1] Scriptlet.
[2] Standard actions: include, forward, plugin & useBean.

[NB]
Java Bean: codice riusabile scritto, probabilmente da altri, secondo determinate regole. A noi interessano principalente le sue interfacce.
La scrittura di questa "particolare" classe ci permette di separare la logica dalla presentazione nella nostra applicazione.
Per saperne di più:
http://www.mokabyte.it/1997/01/beans.htm
http://java.sun.com/products/javabeans/

[3] Direttive: page & include.
[4] Librerie di TAG: di tipo DBTAG, di tipo JSLT & di tipo custom (cioè scritte da noi).

Trovate parte della descrizione qui:
JspItalia
JSP Area

Oggetti impliciti
Per tutte le 4 entità sopra elencate esistono degli oggetti già implicitamente istanziati, tra i + importanti: config, out, response e request.
La cui visibilità (il famoso scope della variabile) può essere di tipo:
[1] application: sempre visibile.
[2] page: visibile nella pagina.
[3] request: visibile per la singola richiesta.
[4] session: visibile per tutta la sessione.


[NB]
° Dato che già in molti hanno cercato di spiegarli (anche se pasticciando troppo) come, tra i + famosi:
http://www.risorse.net/jsp/
http://www.html.it/jsp/
http://www.latoserver.it/eventi/plut...sp/slide1.html
allora io trattero solo qualche "cosina" e magari come al solito dal punto di vista pratico e curioso, cercando di essere anche "pedantico" nella sostanza.

° Vi consiglio comunque di procurarvi un libro decente al riguardo, io solitamente uso quelli da 4 soldi della Mondadori o Apogeo anche se sarebbe consigliabile un bel testo come il Deitel.


VELOCE PANORAMICA
[1] Scriptlet: vanno bene quando il contenuto statico di 1 pagina "XHTML like" è per la maggior parte statico e con qualche macchia di dinamicità.

Es di file "date.jsp":
Codice HTML:
Inizio codice XHTML
...
<%= new java.util.Date(); %>
...
Fine codice XHTML
dove il carattere "=" mi trasforma in stringa il risultato.

[2] Standard actions: le azioni sono quelle citate in precedenza, si differenziano dalle direttive per il fatto che sono estremamente dinamiche, vengono rieseguite ad ogni richiesta HTTP, mentre le direttive vengono eseguite solo alla prima richiesta HTTP.

Es di file "include.jsp":
Codice HTML:
Inizio codice XHTML
...
<jsp:include page = "bunner.html" flash = "true" />
...
Fine codice XHTML
dove bunner.html è un bunner e flash = "true" deve per forza essere settato così.

Es di file "forward.jsp":
Codice HTML:
Inizio codice XHTML
...
<jsp:forward page = "elabora.jsp" flash = "true">
<jsp:param name = "date" value = "<%= new java.util.Date(); %>" />
</jsp:forward>
...
Fine codice XHTML
dove in elabora.jsp avrò un bel: <%= request.getParameter("date") %>

Es di file "useBean.jsp":
Codice HTML:
<?xml version = "1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<jsp:useBean id = "rotator" scope = "application" class = "Rotator" />
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>AdRotator Example</title>
<%-- update advertisement --%>
<% rotator.nextAd(); %>
</head>
...
altro codice XHTML
dove Rotator è il nome del mio bean Rotator.java costituito da variabili private e metodi pubblici.
id = "rotator" mi crea l'istanza del bean Rotator.java e la chiama rotator.
Codice HTML:
altro codice XHTML
...
<jsp:getProperty name = "rotator" property = "link" />
...
<jsp:getProperty name = "rotator" property = "image" />
...
Fine codice XHTML
dove ho l'equivalenza con "rotator.getLink();" e "rotator.getImage();"

[3] Direttive: Utilizza la sintassi <%@ qualcosa %> sono meno dinamiche rispetto alle standard actions che vengono eseguite ad ogni refresh del browser, mentre le direttive sono eseguite solo al primo richiamo e quindi alla prima compilazione in Servlet dal JSP.

[4] TAG libreries: si dividono in DBTAG (semplici ma deprecate), JSLT (complesse in stile "C like", ma standard) & custom (quelle che definiamo noi).

# Delle DBTAG ho scaricato queste:
jakarta-taglibs-dbtags-20050605.zip
da qui:
http://cvs.apache.org/builds/jakarta...ojects/dbtags/
e sembrano andare bene.

# Per le JSLT ho deciso di scaricare queste:
jakarta-taglibs-standard-1.1.2.zip
da:
http://jakarta.apache.org/site/downl...s-standard.cgi

[NB]
I rispettivi file.JAR andranno inseriti in D:\www\public_html\WEB-INF\lib.
Per la loro documentazione invece visitate il sito ufficiale:
http://jakarta.apache.org/taglibs/index.html

# Quando invece lavoriamo con la custom avremo sempre a che fare con 3 file:
[i] 1 file.tld che è scritto in XML. Dice quel file.class eseguire per 1 determinato TAG.
[II] 1 file.java che è una Servlet implementante il nostro "effetto" TAG. Ovviamente andrà compilato in 1 file.class.
[III] 1 file.jsp che utilizza i TAG custom da noi realizzati.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 21-06-2005 alle 17:44.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso