JHTML
JHTML è la sigla di Java HTML. Questo linguaggio (estensione dell'HTML) permette di inserire istruzioni dinamiche all'interno di pagine HTML, che avviene attraverso il tag <servlet></servlet>, che vengono poi eseguite dal server.
Questa tecnologia potrebbe essere usata per sostituire le limitazioni di performance dei programmi CGI. È molto efficiente perché, essendo Java, non dipende dalla piattaforma hardware, e può essere installato dovunque.
Descrizione
[modifica | modifica wikitesto]Il meccanismo di funzionamento di JHTML deriva dalla vecchia modalità di programmazione CGI che permette ad un'applicazione eseguita sul server web di generare dinamicamente del codice HTML. JHTML è una tecnologia proprietaria di ATG. Sun Microsystems ha acquisito parte di questa tecnologia e ha sviluppato JavaServer Pages partendo proprio dalla metodologia di compilazione delle pagine di ATG.
Funzionamento
[modifica | modifica wikitesto]Quando viene fatta una richiesta per la pagina, esempio, index.jhtml, il server HTTP trasferisce la chiamata all'applicazione Java che prima compila il file in un file della classe (.class), poi lo esegue. Il file della classe produce il codice html della pagina oltre alle istruzioni date tramite il tag <servlet></servlet>.
La classe Joomla's JHTML
[modifica | modifica wikitesto]JHTML è anche una classe molto nota del framework Joomla!.[1]
Tecnologia successiva
[modifica | modifica wikitesto]Sebbene molti siti continuino ad utilizzare JHTML, questa tecnologia è stata ampiamente superata da JavaServer Pages.
Descrizione
[modifica | modifica wikitesto]JHTML è uno standard JavaSoft per combinare Java con pagine HTML. In particolare, JHTML rende facile intercalare dati dinamici all'interno delle pagine HTML. JHTML consente di incorporare Java in una pagina web standard. L'implementazione di JHTML da parte di WebLogic è molto simile a quella utilizzata nel WebServer di JavaSoft[2].
JHTML viene implementato utilizzando uno speciale servlet HTML fornito di serie con WebLogic Server, chiamato PageCompileServlet. Il PageCompileServlet è configurato per impostazione predefinita per gestire tutte le richieste HTTP per i file che terminano con ".jhtml".
Il PageCompileServlet chiama il compilatore JHTML per compilare il file JHTML in un servlet HTTP Java standard ed esegue il nuovo servlet al volo. Il servlet HTTP risultante fornisce una pagina web in risposta al browser del client.
Il file JHTML viene compilato solo quando viene visitato per la prima volta o quando il file JHTML è stato modificato dall'ultima volta che è stato compilato. Altrimenti, viene utilizzata la classe servlet JHTML compilata in precedenza, rendendo le risposte successive molto più rapide. È possibile utilizzare lo stand alone del compilatore JHTML.
Prima di poter richiedere un file .jhtml, è necessario configurare WebLogic Server con le seguenti proprietà nel file weblogic.properties.
Registrare il PageCompileServlet
[modifica | modifica wikitesto]PageCompileServlet è un servlet HTTP standard incluso con WebLogic Server. È necessario registrarlo per gestire tutte le richieste HTTP per i file che terminano con il suffisso ".jhtml" utilizzando la riga:
weblogic.httpd.register. *. jhtml = \ weblogic.servlet.jhtmlc.PageCompileServlet
È possibile aggiungere ulteriori registrazioni per istruire il PageCompileServlet a gestire altri suffissi di file (come "* .htm", "* .html" e "* .txt") utilizzando una sintassi simile a quella sopra. L'utilizzo di un'estensione ha la precedenza su qualsiasi registrazione servlet predefinita.
Impostare gli argomenti di inizializzazione per PageCompileServlet utilizzando la proprietà initArgs del servlet standard come mostrato di seguito:
weblogic.httpd.initArgs. *. jhtml = \ compileCommand = percorso del compilatore , \ workingDir = percorso della directory delle classi .jhtml compilate, \ verbose = [true | false] , \ pageCheckSeconds = intervallo WebLogic controlla la ricompilazione , \ packagePrefix = nome del pacchetto dei file (predefinito: "jhtmlc")
Dove i nomi degli argomenti sono definiti come:
- compileCommand
- (Obbligatorio) Specifica il compilatore Java che deve essere utilizzato da PageCompileServlet. Ad esempio, per utilizzare il compilatore Java Symantec:
compileCommand = / VisualCafe / bin / sj.exe
- workingDir
- (Obbligatorio) Specifica il percorso assoluto di una directory locale in cui vengono inseriti i file ".class" e ".java" compilati dal compilatore JHTML. Per esempio:
workingDir = / weblogic / myserver / jhtml_classes
- Questa directory conterrà i file ".java" e ".class" generati da tutte le pagine JHTML.
- verbose
- (Facoltativo) il valore predefinito è false. Se impostato su true, le informazioni di debug vengono stampate nella console e nel file di registro di WebLogic Server.
- keepgenerated
- (Facoltativo) il valore predefinito è false. Quando è impostato su true, i file di origine ".java" generati vengono memorizzati con i file di classe nella directory specificata dal parametro workingDir .
- pageCheckSeconds
- (Facoltativo) il valore predefinito è 0. Imposta l'intervallo in cui WebLogic verifica se i file JHTML sono stati modificati e devono essere ricompilati. Le dipendenze vengono verificate e ricaricate in modo ricorsivo se modificate. Se pageCheckSeconds è -1, le pagine non vengono controllate dopo essere state compilate.
- packagePrefix
- (Facoltativo) il valore predefinito è "jhtmlc". Imposta un nome di pacchetto per le pagine compilate automaticamente. Ciò dovrebbe evitare conflitti tra il nome della classe e gli altri servlet e applet, a condizione che non li compili anche in un pacchetto con lo stesso nome.
Proprietà correlate
[modifica | modifica wikitesto]Le seguenti sono proprietà correlate al file weblogic.properties. Queste proprietà vengono utilizzate da altri servizi di WebLogic Server. Quando si modificano le impostazioni, è necessario considerare l'impatto su altri servizi[2].
Impostazione della radice del documento
[modifica | modifica wikitesto]Questa è la directory in cui si possono pubblicare i file ".jhtml" su WebLogic Server. Lo si imposta usando la proprietà:
weblogic.httpd.documentRoot = percorso
dove path è un percorso di directory assoluto o un percorso di directory relativo dalla directory myserver / nell'installazione di WebLogic. Ad esempio, se si imposta la proprietà su:
weblogic.httpd.documentRoot = jhtml
Si pubblicano i file JHTML nella directory: $ WEBLOGICROOT / myserver / public_html / jhtml .
Se non si imposta questa proprietà, verrà impostata automaticamente sulla directory $ WEBLOGICROOT / myserver / public_html . La radice del documento è la directory di livello superiore in cui WebLogic Server cerca tutte le pagine Web pubblicate. Questa proprietà viene utilizzata anche dal FileServlet, che viene registrato per impostazione predefinita per fornire tutti gli altri tipi di supporti HTTP.
Configurazione del monitoraggio della sessione
[modifica | modifica wikitesto]Per abilitare il monitoraggio della sessione, si imposta questa proprietà su "true":
weblogic.httpd.session.enable = true
Altre proprietà e dettagli relativi al monitoraggio della sessione sono disponibili nella guida per gli sviluppatori "Utilizzo dei servlet HTTP WebLogic" .
Tag JHTML supportati in WebLogic
[modifica | modifica wikitesto]Di seguito è riportato un elenco di riferimento rapido dei tag utilizzati in WebLogic JHTML. Tutti questi tag <java> richiedono un tag </java> finale . Tutti questi tag possono essere inclusi all'interno o combinati con i commenti java. Ad esempio, i tag:
<java> . . . </java>
può anche essere scritto come:
<! - java> . . . </java-->
| Tag JHTML | Descrizione |
|---|---|
| <java> o
<java type = code> </java> |
Delimita il codice sorgente Java dal codice della pagina HTML. Le ultime due varianti possono essere utilizzate per nascondere il codice Java in un blocco di commenti agli editor di pagine visive. |
| <java type = package> </java> | Assegna un nome al pacchetto per la classe in cui questo file verrà eventualmente compilato, ad esempio:
<java type = package> tutorial.servlet.jhtml </java> |
| <java type = import> </java> | Designa un pacchetto o una classe da importare. Utilizza istruzioni di importazione regolari per tutti i pacchetti all'interno di un solo set di tag per file JHTML, separati da punto e virgola. |
| <java type = extends><java type = implements> </java> | Indica il nome di una classe da estendere o un elenco di interfacce da implementare. Il servlet che risulta dalla compilazione del file JHTML estenderà questa classe o implementerà le interfacce. |
| <java type = class> </java> | Consente di aggiungere variabili di classe e definire metodi di classe per una pagina. |
| <java type = method> </java> | Sostituisce il nome del metodo service () ; il metodo della superclasse può quindi essere utilizzato per la pre e la post-elaborazione del metodo specificato dall'utente. |
| <java type = print> </java> | Stampa l'espressione Java inclusa nel flusso di output. Questo è molto simile all'uso del backtick. |
| ` (backtick) | Operatore. Si può incorporare un'espressione Java in qualsiasi tag HTML arbitrario racchiudendola tra apici. L'espressione viene valutata e quindi convertita in una stringa. |
Parole riservate in JHTML
[modifica | modifica wikitesto]JHTML si riserva l'uso di queste parole all'interno del codice Java incorporato. In questo caso, usi queste parole come oggetti nel codice Java.
- out
- out rappresenta il flusso di output della risposta HTTP, attraverso il quale il servlet JHTML invia la risposta al browser. Tecnicamente è una sottoclasse dell'oggetto java.io.OutputStream, una classe astratta che definisce come gestire i flussi di byte. L'oggetto out ha diversi metodi utilizzabili, incluso
write (), che prende un valoreStringe lo stampa su una pagina, eflush ()che permette di cancellare il flusso prima di stampare qualcosa di nuovo. - request
- request è l'oggetto HttpServletRequest. Contiene informazioni sulla richiesta del browser e dispone di diversi metodi utili per ottenere cookie, intestazione e dati di sessione.
- response
- response rappresenta l'oggetto HttpServletResponse. L'oggetto risposta viene utilizzato per restituire l'output del servlet al browser web. Ha diversi metodi utili per impostare i cookie e ottenere un flusso di output.