JHTML
JHTML este abrevierea pentru Java HTML . Acest limbaj (extensia HTML ) vă permite să inserați instrucțiuni dinamice în paginile HTML, ceea ce se întâmplă prin intermediul etichetei <servlet></servlet>, care sunt apoi executate de server.
Această tehnologie ar putea fi utilizată pentru a înlocui limitările de performanță ale programelor CGI . Este foarte eficient deoarece, fiind Java, nu depinde de platforma hardware, putând fi instalat oriunde.
Descriere
Mecanismul de operare al JHTML derivă din vechiul mod de programare CGI care permite unei aplicații care rulează pe serverul web să genereze în mod dinamic cod HTML. JHTML este tehnologia proprietară ATG. Sun Microsystems a achiziționat o parte din această tehnologie și a dezvoltat JavaServer Pages pornind de la metodologia de compilare a paginilor ATG.
Operațiunea
Când se face o solicitare pentru pagină, de exemplu, index.jhtml, serverul HTTP transferă apelul către aplicația Java, care mai întâi comilează fișierul într-un fișier de clasă (.class), apoi îl execută. Fișierul de clasă produce codul html al paginii, precum și instrucțiunile date prin etichetă <servlet></servlet>.
Clasa JHTML Joomla
JHTML este, de asemenea, o clasă foarte cunoscută a cadrului Joomla!. . [1]
Tehnologia ulterioară
Deși multe site-uri continuă să folosească JHTML, această tehnologie a fost în mare măsură înlocuită de JavaServer Pages .
Descriere
JHTML este un standard JavaSoft pentru combinarea Java cu pagini HTML. În special, JHTML facilitează intercalarea datelor dinamice în paginile HTML. JHTML vă permite să încorporați Java într-o pagină web standard. Implementarea JHTML de către WebLogic este foarte similară cu cea utilizată în JavaSoft WebServer [2] .
JHTML este implementat folosind un servlet HTML special care vine standard cu WebLogic Server, numit PageCompileServlet. PageCompileServlet este configurat implicit pentru a gestiona toate solicitările HTTP pentru fișierele care se termină în „.jhtml”.
PageCompileServlet apelează compilatorul JHTML pentru a compila fișierul JHTML într-un servlet standard Java HTTP și execută noul servlet din mers. Servletul HTTP rezultat oferă o pagină web ca răspuns la browserul clientului.
Fișierul JHTML este compilat numai atunci când este prima vizitat sau când fișierul JHTML a fost modificat de la ultima compilare. În caz contrar, se folosește clasa de servlet JHTML compilată anterior, făcând răspunsurile ulterioare mult mai rapide. Puteți utiliza compilatorul JHTML autonom.
Înainte de a putea solicita un fișier .jhtml, serverul WebLogic trebuie configurat cu următoarele proprietăți în fișierul weblogic.properties.
Înregistrați PageCompileServlet
PageCompileServlet este un servlet HTTP standard inclus cu WebLogic Server. Trebuie să îl înregistrați pentru a gestiona toate solicitările HTTP pentru fișierele care se termină cu sufixul „.jhtml” folosind linia:
weblogic.httpd.register. *. jhtml = \ weblogic.servlet.jhtmlc.PageCompileServlet
Pot fi adăugate înregistrări suplimentare pentru a instrui PageCompileServlet să gestioneze alte sufixe de fișiere (cum ar fi „* .htm”, „* .html” și „* .txt”) folosind o sintaxă similară cu cea de mai sus. Utilizarea unei extensii are prioritate față de orice înregistrare implicită de servlet.
Setați argumentele de inițializare pentru PageCompileServlet folosind proprietatea initArgs a servlet-ului standard, așa cum se arată mai jos:
weblogic.httpd.initArgs. *. jhtml = \
compileCommand = calea compilatorului , \
workingDir = calea directorului claselor .jhtml compilate, \
verbose = [true | fals] , \
pageCheckSeconds = Recopilare verificări de interval WebLogic , \
packagePrefix = numele pachetului de fișiere (implicit: "jhtmlc")
Unde numele argumentelor sunt definite ca:
- compileCommand
- (Obligatoriu) Specifică compilatorul Java care va fi utilizat de PageCompileServlet. De exemplu, pentru a utiliza Symantec Java Compiler:
compileCommand = / VisualCafe / bin / sj.exe
- workingDir
- (Obligatoriu) Specifică calea absolută a unui director local în care sunt plasate fișierele „.class” și „.java” compilate de compilatorul JHTML. De exemplu:
workingDir = / weblogic / myserver / jhtml_classes
- Acest director va conține fișierele „.java” și „.class” generate de toate paginile JHTML.
- verboroasă
- ( Opțional ) valoarea implicită este false. Dacă este setată la true, informațiile de depanare sunt tipărite în consolă și în fișierul jurnal WebLogic Server.
- păstrați generat
- ( Opțional ) valoarea implicită este false. Când este setată la true, fișierele sursă „.java” generate sunt stocate împreună cu fișierele de clasă în directorul specificat de parametrul workingDir .
- pageCheckSeconds
- (Opțional) valoarea implicită este 0. Setează intervalul la care WebLogic verifică dacă fișierele JHTML s-au modificat și trebuie să fie recompilate. Dependențele sunt verificate și reîncărcate recursiv dacă sunt modificate. Dacă pageCheckSeconds este -1, paginile nu sunt verificate după ce au fost compilate.
- pachetPrefix
- (Opțional) implicit este „jhtmlc”. Setați un nume de pachet pentru paginile completate automat. Acest lucru ar trebui să evite conflictele între numele clasei și alte servlet-uri și applet-uri, atâta timp cât nu le compilați într-un pachet cu același nume.
Proprietăți înrudite
Următoarele sunt proprietăți legate de fișier weblogic.properties. Aceste proprietăți sunt utilizate de alte servicii WebLogic Server. Când schimbați setările, trebuie să luați în considerare impactul asupra altor servicii [2] .
Setarea rădăcinii documentului
Acesta este directorul în care fișierele „.jhtml” pot fi publicate pe WebLogic Server. Îl setați folosind proprietatea:
weblogic.httpd.documentRoot = cale
unde cale este o cale de director absolută sau o cale de director relativă de la myserver / directorul din instalarea WebLogic. De exemplu, dacă setați proprietatea la:
weblogic.httpd.documentRoot = jhtml
Publicăm fișierele JHTML în directorul: $ WEBLOGICROOT / myserver / public_html / jhtml.
Dacă nu setați această proprietate, va fi setată automat în directorul $ WEBLOGICROOT / myserver / public_html. Rădăcina documentului este directorul de nivel superior în care WebLogic Server caută toate paginile Web publicate. Această proprietate este folosită și de FileServlet, care este înregistrat în mod implicit pentru a furniza toate celelalte tipuri de media HTTP.
Configurarea monitorizării sesiunii
Pentru a activa monitorizarea sesiunii, setați această proprietate la „adevărat”:
weblogic.httpd.session.enable = adevărat
Proprietăți și detalii suplimentare de monitorizare a sesiunii sunt disponibile în ghidul pentru dezvoltatori „Utilizarea WebLogic HTTP Servlets”.
Etichete JHTML acceptate în WebLogic
Mai jos este o listă de referință rapidă a etichetelor utilizate în WebLogic JHTML. Toate aceste etichete <java> necesită o etichetă </java> finală. Toate aceste etichete pot fi incluse în interior sau combinate cu comentarii java. De exemplu, etichetele:
<java> . . . </java>
se mai poate scrie ca:
<! - java> . . . </java-->
| Etichetă JHTML | Descriere |
|---|---|
| <java> o
<java type = code> </java> |
Delimitează codul sursă Java de codul paginii HTML. Ultimele două variante pot fi folosite pentru a ascunde codul Java într-un bloc de comentarii pentru editorii vizuali de pagini. |
| <java type = package> </java> | Denumiți pachetul pentru clasa în care se va compila în cele din urmă acest fișier, de exemplu:
<java type = package> tutorial.servlet.jhtml </java> |
| <java type = import> </java> | Desemnați un pachet sau o clasă de importat. Utilizați instrucțiuni obișnuite de import pentru toate pachetele dintr-un singur set de etichete de fișier JHTML, separate prin punct și virgulă. |
| <java type = extins> <java type = implements> </java> | Indică numele unei clase de extins sau o listă de interfețe de implementat. Servletul care rezultă din compilarea fișierului JHTML fie va extinde această clasă, fie va implementa interfețe. |
| <java type = class> </java> | Vă permite să adăugați variabile de clasă și să definiți metode de clasă pentru o pagină. |
| <java type = method> </java> | Suprascrie numele metodei service (); metoda superclasă poate fi apoi utilizată pentru pre- și post-procesare a metodei specificate de utilizator. |
| <java type = print> </java> | Tipăriți expresia Java inclusă în fluxul de ieșire. Acest lucru este foarte asemănător cu utilizarea backtick-ului. |
| ` (backtick) | Operator. Puteți încorpora o expresie Java în orice etichetă HTML arbitrară prin includerea acesteia între ghilimele. Expresia este evaluată și apoi convertită într-un șir. |
Cuvinte rezervate în JHTML
JHTML își rezervă utilizarea acestor cuvinte în codul Java încorporat. În acest caz, utilizați aceste cuvinte ca obiecte în codul Java.
- afară
- out reprezintă fluxul de ieșire al răspunsului HTTP, prin care servletul JHTML trimite răspunsul către browser. Din punct de vedere tehnic, este o subclasă a obiectului java.io.OutputStream, o clasă abstractă care definește modul de gestionare a fluxurilor de octeți. Obiectul out are mai multe metode utilizabile, inclusiv
write ()luarea unei valoriStringși imprimarea acesteia pe o pagină șiflush ()permițându-vă să ștergeți fluxul înainte de a imprima ceva nou. - cerere
- cererea este obiectul HttpServletRequest. Conține informații despre solicitarea browserului și are mai multe metode utile pentru obținerea cookie-urilor, a datelor de antet și de sesiune.
- raspuns
- răspunsul reprezintă obiectul HttpServletResponse. Obiectul răspuns este folosit pentru a returna ieșirea servlet-ului în browserul web. Are mai multe metode utile pentru setarea cookie-urilor și obținerea unui flux de ieșire.
Exemplu
< html >
< head > < title > Hello World Test </ title > </ head >
< body >
< h1 > < font color = # DB1260 > Hello World Test </ font > </ h1 > < java >
out . print ( „Hello World generate de Java” );
</ java >
< p > Acesta nu este Java !
< p > < i > Elemente centrale în pagină </ i >
< p > < java >
for ( int i = 1 ; i <= 5 ; i ++ ) {
out . print ( "Aceasta este o buclă Java!" + i + "<p>" );
}
</ java >
</ body >
</ html >
Iată cum va arăta pagina rezultată după ce este completată:
Hello World TestHello World generat de Java Acesta nu este Java! Elemente centrale pe pagină Aceasta este o buclă Java! 1 Aceasta este o buclă Java! 2 Aceasta este o buclă Java! 3 Aceasta este o buclă Java! 4 Aceasta este o buclă Java! 5 |
Importul pachetelor
Este posibil să aveți o singură etichetă <java type = import>într-un fișier JHTML, dar este posibil să aveți mai multe instrucțiuni de import în cadrul acelei etichete. Deși puteți insera eticheta de import oriunde în fișierul JHTML, este recomandat să o introduceți la începutul fișierului, la fel ca un fișier normal „.java”.
<tip java = import> import java.io. *; import java.sql. *; </java>
Definiția corpului metodei serviciului
După cum este descris mai sus, JHTML este mai întâi compilat într-un fișier servlet standard HTTP Java, apoi compilat folosind un compilator java standard. Ordinea HTML și Java în pagina JHTML este menținută atunci când este tradus în codul sursă Java.
Orice construct Java poate fi folosit în JHTML, cum ar fi bucle sau instrucțiuni condiționale. Puteți trece de la Java la HTML pentru a încorpora rezultatul HTML într-o construcție Java. De exemplu:
<html> <corp>
<java>
pentru (int i = 0; i <10; i ++) {
</java>
<h1> Bună lume! </h1>
<P>
<java>
} // Sfârșitul buclei for
</java> </body> </html>
Acest lucru va avea ca rezultat un „Hello World!” scris de 10 ori într-o pagină HTML.
Declarație de obiect cu domeniul de clasă
Puteți declara obiecte cu domeniul de clasă ca variabile, metode și clase interioare între etichete <java type = class>într-un fișier JHTML. Orice număr de acest tip de etichetă java poate fi folosit în JHTML:
<java type = class> String jdbcClass = "weblogic.jdbc.oci.Driver"; String jdbcURL = "jdbc: weblogic: oracle: goldengate"; String user = „scott”; Parola șir = ""; </java>
În cele mai multe situații, este mai bine să folosiți variabile cu domeniul de aplicare al metodei din cauza problemelor de threading servlet. Aceasta înseamnă declararea variabilelor în alte metode sau direct în corpul metodei de serviciu (adică numai în etichetele simple <java>).
Încorporarea unei metode Java într-un fișier JHTML
Acest exemplu ilustrează cum se definește o metodă de clasă în fișierul JHTML care este apelat din blocul principal <java>.
Metoda scurtă getCon () inițializează un obiect de conexiune JDBC care este utilizat în altă parte în servlet.
<java type = class>
șir final static jdbcClass =
„weblogic.jdbc.oci.Driver”;
șir final static jdbcURL =
„jdbc: weblogic: oracle: goldengate”;
utilizator String final static = "scott";
parola șir final static = "tigru";
conexiune sigură getCon () {
Conexiune conn = nul;
proces {
Class.forName (jdbcClass) .newInstance ();
conn = DriverManager.getConnection (jdbcURL,
Parolă de utilizator);
}
prinde (excepție f) {
}
return conn;
}
</java>
Puteți apela această metodă din orice alt cod Java în JHTML. Rețineți că celelalte variabile declarate în acest bloc sunt domeniul de aplicare al clasei, așa că vă puteți referi și la orice bloc <java> din JHTML.
Folosind backtick
În mod implicit, WebLogic acceptă utilizarea backtick-ului în etichetele Java. Backtick-urile arbitrare pot fi inserate oriunde în HTML. O instrucțiune Java dintr-un backtick este evaluată, convertită într-un șir și trimisă în fluxul de ieșire al servlet-ului. Backtick-urile sunt esențiale pentru inserarea conținutului dinamic în etichetele HTML, cum ar fi un link către un alt document, bazat pe o valoare variabilă [2] .
Backtick-ul în WebLogic
Sub Java WebServer, puteți încorpora o expresie Java în orice etichetă HTML arbitrară prin includerea acesteia între ghilimele din spate. Luăm această funcționalitate cu un pas mai departe în WebLogic JHTML și backtick-urile sunt valabile în interiorul și în afara etichetelor java. Acest lucru este util pentru încorporarea unor bucăți mici de java în HTML pentru a genera conținut dinamic, deoarece păstrează HTML-ul într-un format care poate fi citit.
Utilizarea backtick-ului în acest fel înseamnă că nu mai puteți utiliza un caracter backtick direct în codul HTML. Soluția este să imprimați un backtick la fluxul de ieșire în interiorul etichetelor <java>. Deoarece backtick-ul este rar folosit, comoditatea utilizării backtick-java-expression în HTML depășește acest dezavantaj.
Puteți activa și dezactiva utilizarea extinsă a backtick-urilor setând următoarea proprietate în fișierul weblogic.properties:
weblogic.httpd.initArgs. *. jhtml = backtick = adevărat | fals
Utilizarea monitorizării sesiunii
Serverul HTTP WebLogic acceptă, de asemenea, monitorizarea sesiunii, ceea ce permite ca informațiile despre un utilizator să fie urmărite pe măsură ce progresează prin aplicația web. De exemplu, o licitație online sau o aplicație de tranzacționare ar putea folosi urmărirea sesiunii pentru a ține pasul cu ceea ce un utilizator a adăugat într-un coș sau cu ofertele pe care un utilizator le face pentru un articol de vânzare.
O sesiune este accesată din cuvântul cheie request , cu metoda getSession (), care returnează un obiect HttpSession. Puteți adăuga sau prelua date din obiectul HttpSession folosind perechi arbitrare nume = valoare. Următorul exemplu ilustrează cum să includeți conținutul unei sesiuni în răspunsul HTML la o solicitare [2] .
<html>
<cap>
<title> Utilizarea monitorizării sesiunii </title> <java type = package> tutorial.servlets.jhtml </java>
</cap>
<body bgcolor = # FFFFFF>
<h3> Valori deja în sesiune: </h3>
<chenarul tabelului = 1 lățime = „100%”> <java>
Sesiune HttpSession = request.getSession (adevărat);
String [] valueNames = session.getValueNames ();
pentru (int i = 0; i <valueNames.length; i ++) {
Nume șir = valueNames [i];
Valoare șir = session.getValue (nume) .toString ();
out.print ("<tr> <td>" + nume + "</td> <td>" +
valoare + „</td> </tr>
Datele sunt adăugate la o sesiune într-un mod similar, dar folosind metoda putValue (). Acest exemplu preia toate perechile parametro = valore dai datide nume ale interogării de solicitare și le stochează într-o singură sesiune.
<h3> Valori de adăugat la sesiune: </h3>
<chenarul tabelului = 1 lățime = „100%”> <java>
Enumerare paramNames = request.getParameterNames ();
while (paramNames.hasMoreElements ()) {
Nume șir = (String) paramNames.nextElement ();
String [] values = request.getParameterValues (nume);
session.putValue (nume,
(valori! = nul? valori [0]: „null”));
out.print ("<tr> <td>" + nume + "</td> <td>" +
valoare + "</td> </tr>");
}
</java>
</tabel>
</corp>
</html>
Preluarea datelor cu JDBC
Acest exemplu arată cum să accesați o bază de date din JHTML pentru a include conținut dinamic în paginile web.
<java>
proces {
String jdbcClass = "weblogic.jdbc.oci.Driver";
String jdbcURL = "jdbc: weblogic: oracle: goldengate";
String user = „scott”;
Parola șir = "";
parola = "tigru";
Class.forName (jdbcClass) .newInstance ();
Conexiune conn =
DriverManager.getConnection (jdbcURL, utilizator, parolă);
out.print ("& lt; p & gt; Primul" +
"tentativa de conectare a avut succes pentru");
out.print (utilizator + "/" + parola);
parola = "tigger";
Class.forName (jdbcClass) .newInstance ();
Conexiune conn2 =
DriverManager.getConnection (jdbcURL, utilizator, parolă);
out.print ("& lt; p & gt; A doua încercare de conectare" +
„a avut succes pentru”);
out.print (utilizator + "/" + parola);
}
prinde (excepție f) {
out.print ("& lt; p & gt; Conectarea a eșuat pentru" +
utilizator + "/" + parola);
out.print ("& gt; p & gt;");
f.printStackTrace (nou PrintStream (out));
}
la sfarsit {
încercați {conn.close ();}
prinde (excepție g) {}
încercați {conn2.close ();}
prinde (Excepție h) {}
}
</java>
Compilatorul WebLogic JHTML
Deoarece PageCompileServletapelează automat compilatorul JHTML al WebLogic după cum este necesar, în general nu este necesar să îl accesați direct. Cu toate acestea, pot exista situații (cum ar fi depanarea) în care accesul direct la compilator poate fi util. Această secțiune este oferită ca referință pentru compilator.
Compilatorul JHTML de la WebLogic analizează fișierul .jhtml produs într-un fișier Java și apoi compilează fișierul Java într-un fișier de clasă, totul într-un singur pas [2] .
Sintaxă
Compilatorul JHTML funcționează în același mod în care funcționează alte compilatoare WebLogic (inclusiv compilatoarele RMI și EJB):
$ java weblogic.jhtmlc -opțiuni nume fișier
unde fileName este numele fișierului .jhtml pe care doriți să îl compilați. Opțiunile pot fi înainte sau după numele fișierului de destinație. Iată un exemplu care compilează „myFile” în directorul țintă (una dintre opțiuni) „weblogic / classes”.
$ java weblogic.jhtmlc -d / weblogic / classes-jdk110 \ myFile.jhtml
subiecte
Opțiunile disponibile sunt:
- -Ajutor
- Afișează o listă cu toate steagurile disponibile.
- -ticurile din spate
- Analizați textul oriunde în fișierul .jhtml, cum ar fi Java, și nu doar în interiorul etichetelor. Acest lucru vă permite să încorporați elemente precum nume de tabel și coloane în HTML. Adevărat în mod implicit.
- -verbos
- Imprimați informațiile de depanare în fereastra shell-ului când este prezent steag. Valoarea implicită este dezactivată.
- -calea de clasă
- Adăugați o listă delimitată de puncte și virgulă de directoare care alcătuiesc CLASSPATH-ul dorit. De exemplu (de inserat pe o singură linie):
$ java weblogic.jhtmlc \
-classpath java / classes.zip; /weblogic/classes.zip \
myFile.jhtml
- -d
- Destinația rezultatului compilat (fișierul de clasă). O comandă rapidă pentru plasarea claselor compilate într-un director care este deja în CLASSPATH.
- -keepgenerated
- Păstrați fișierele Java create ca pas intermediar în procesul de construire.
- -compilator
- Acesta înlocuiește un alt compilator pentru javac pentru compilarea Java în clasă.
- - acum avertizează
- Dezactivați mesajele de avertizare din compilatorul Java.
- -acum scrie
- Efectuează procesul de construire fără a produce efectiv un fișier
.class. Dacă îl combinați cu indicatorul keepgenerated , compilatorul va crea doar.javafișierul intermediar. Acest lucru poate fi util pentru depanare. - -dezaprobare
- Determină compilatorul Java să imprime un avertisment despre orice clasă sau metodă depreciată numită sau utilizată de fișier
.jhtml. - -J
- Adaugă alte opțiuni pe care compilatorul specific le va analiza.
Note
- ^ Clasa Joomla Utility pentru toate clasele de desen HTML Arhivat 19 ianuarie 2009 la Internet Archive .
- ^ a b c d și Utilizarea WebLogic JHTML , pe docs.oracle.com . Preluat la 27 februarie 2021 .
Articole înrudite
Link- uri externe
- ( RO ) Site oficial , la jhtml.sourceforge.net .