close

JHTML

Hopp til navigasjon Hopp til søk

JHTML er forkortelsen for Java HTML . Dette språket (utvidelse av HTML ) lar deg sette inn dynamiske instruksjoner på HTML-sider, noe som skjer gjennom taggen <servlet></servlet>, som deretter kjøres av serveren.

Denne teknologien kan brukes til å erstatte ytelsesbegrensningene til CGI - programmer . Det er veldig effektivt fordi det er Java, og det er ikke avhengig av maskinvareplattformen og kan installeres hvor som helst.

Beskrivelse

Driftsmekanismen til JHTML stammer fra den gamle CGI -programmeringsmodusen som lar en applikasjon som kjører på webserveren dynamisk generere HTML-kode. JHTML er ATGs proprietære teknologi. Sun Microsystems har anskaffet en del av denne teknologien og utviklet JavaServer Pages med utgangspunkt i kompileringsmetodikken til ATG-sidene.

Operasjon

Når en forespørsel blir gjort for siden, for eksempel index.jhtml, overfører HTTP -serveren kallet til Java-applikasjonen som først kompilerer filen til en klassefil (.class) og deretter kjører den. Klassefilen produserer html-koden til siden samt instruksjonene gitt gjennom taggen <servlet></servlet>.

Joomlas JHTML-klasse

JHTML er også en veldig kjent klasse av Joomla! -rammeverket . . [1]

Etterfølgende teknologi

Selv om mange nettsteder fortsetter å bruke JHTML, har denne teknologien i stor grad blitt erstattet av JavaServer Pages .

Beskrivelse

JHTML er en JavaSoft-standard for å kombinere Java med HTML-sider. Spesielt JHTML gjør det enkelt å flette dynamiske data på HTML-sider. JHTML lar deg bygge inn Java i en standard nettside. WebLogics implementering av JHTML er veldig lik den som brukes i JavaSoft WebServer [2] .

JHTML er implementert ved hjelp av en spesiell HTML-servlet som leveres som standard med WebLogic Server, kalt PageCompileServlet. PageCompileServlet er som standard konfigurert til å håndtere alle HTTP-forespørsler for filer som slutter på ".jhtml".

PageCompileServlet kaller JHTML-kompilatoren for å kompilere JHTML-filen til en standard Java HTTP-servlet og kjører den nye servleten umiddelbart. Den resulterende HTTP-servleten gir en nettside som svar på klientens nettleser.

JHTML-filen kompileres bare når den først besøkes eller når JHTML-filen har blitt endret siden den sist ble kompilert. Ellers brukes den tidligere kompilerte JHTML-servletklassen, noe som gjør påfølgende svar mye raskere. Du kan bruke den frittstående JHTML-kompilatoren.

Før du kan be om en .jhtml-fil, må WebLogic-serveren konfigureres med følgende egenskaper i weblogic.properties-filen.

Registrer PageCompileServlet

PageCompileServlet er en standard HTTP-servlet som følger med WebLogic Server. Du må registrere den for å håndtere alle HTTP-forespørsler for filer som slutter med ".jhtml"-suffikset ved å bruke linjen:

weblogic.httpd.register. *. jhtml = \
  weblogic.servlet.jhtmlc.PageCompileServlet

Ytterligere registreringer kan legges til for å instruere PageCompileServlet til å håndtere andre filsuffikser (som "* .htm", "* .html" og "* .txt") ved å bruke syntaks som ligner på den ovenfor. Bruk av en utvidelse har forrang over enhver standard servletregistrering.

Angi initialiseringsargumentene for PageCompileServlet ved å bruke initArgs-egenskapen til standardservleten som vist nedenfor:

weblogic.httpd.initArgs. *. jhtml = \
    compileCommand = kompilatorbane , \
    workingDir = katalogbane for kompilerte .jhtml-klasser, \  
  verbose = [true | usant] , \
  pageCheckSeconds = WebLogic intervall sjekker rekompilering , \
  packagePrefix = pakkenavn på filer (standard: "jhtmlc")

Der argumentnavn er definert som:

compileCommand
(Obligatorisk) Spesifiserer Java-kompilatoren som skal brukes av PageCompileServlet. For eksempel, for å bruke Symantec Java Compiler:
compileCommand = / VisualCafe / bin / sj.exe
arbeiderDir
(Obligatorisk) Spesifiserer den absolutte banen til en lokal katalog der ".class"- og ".java"-filene kompilert av JHTML-kompilatoren er plassert. For eksempel:
  workingDir = / weblogic / myserver / jhtml_classes
Denne katalogen vil inneholde filene ".java" og ".class" generert av alle JHTML-sider.
ordrik
( Valgfritt ) standarden er falsk. Hvis satt til true, skrives feilsøkingsinformasjon ut i konsollen og i WebLogic Server-loggfilen.
holdegenerert
( Valgfritt ) standarden er falsk. Når satt til true, lagres de genererte ".java"-kildefilene med klassefilene i katalogen spesifisert av workingDir- parameteren .
pageCheckSeconds
(Valgfritt) standarden er 0. Angir intervallet som WebLogic sjekker om JHTML-filer er endret og må kompileres på nytt. Avhengigheter kontrolleres og lastes inn på nytt rekursivt hvis de endres. Hvis pageCheckSeconds er -1, kontrolleres ikke sidene etter at de er kompilert.
pakkeprefiks
(Valgfritt) standarden er "jhtmlc". Angi et pakkenavn for automatisk utfylte sider. Dette bør unngå konflikter mellom klassenavnet og andre servlets og appleter, så lenge du ikke også kompilerer dem til en pakke med samme navn.

Relaterte egenskaper

Følgende er egenskaper relatert til filen weblogic.properties. Disse egenskapene brukes av andre WebLogic Server-tjenester. Når du endrer innstillinger, må du vurdere innvirkningen på andre tjenester [2] .

Sette dokumentroten

Dette er katalogen der ".jhtml"-filer kan publiseres på WebLogic-serveren. Du angir det ved å bruke egenskapen:

weblogic.httpd.documentRoot = bane

der banen er en absolutt katalogbane eller en relativ katalogbane fra myserver / katalogen i WebLogic-installasjonen. Hvis du for eksempel setter egenskapen til:

weblogic.httpd.documentRoot = jhtml

Vi publiserer JHTML-filene i katalogen: $ WEBLOGICROOT / myserver / public_html / jhtml.

Hvis du ikke angir denne egenskapen, vil den automatisk bli satt til katalogen $ WEBLOGICROOT / myserver / public_html. Dokumentroten er katalogen på øverste nivå der WebLogic Server søker etter alle publiserte websider. Denne egenskapen brukes også av FileServlet, som er registrert som standard for å gi alle andre typer HTTP-medier.

Konfigurere øktovervåking

For å aktivere øktovervåking, setter du denne egenskapen til "true":

weblogic.httpd.session.enable = sant

Ytterligere sesjonsovervåkingsegenskaper og detaljer er tilgjengelige i utviklerveiledningen "Bruke WebLogic HTTP Servlets".

JHTML-tagger støttes i WebLogic

Nedenfor er en hurtigreferanseliste over taggene som brukes i WebLogic JHTML. Alle disse <java>-taggene krever en siste </java>-tag. Alle disse taggene kan inkluderes i eller kombinert med java-kommentarer. For eksempel, taggene:

  <java>
  .
  .
  .
  </java>

det kan også skrives som:

  <! - java>
  .
  .
  .
  </java-->
JHTML-tag Beskrivelse
<java> o

<java type = code> </java>

Avgrenser Java-kildekoden fra HTML-sidekoden. De to siste variantene kan brukes til å skjule Java-kode i en kommentarblokk for visuelle sideredigerere.
<java type = package> </java> Gi navn til pakken for klassen denne filen til slutt vil kompilere til, for eksempel:

<java type = package> tutorial.servlet.jhtml </java>

<java type = import> </java> Angi en pakke eller klasse som skal importeres. Bruk vanlige importinstruksjoner for alle pakker innenfor et enkelt sett med JHTML-filkoder, atskilt med semikolon.
<java type = utvider> <java type = implements> </java> Indikerer navnet på en klasse som skal utvides eller en liste over grensesnitt som skal implementeres. Servleten som resulterer fra kompilering av JHTML-filen vil enten utvide denne klassen eller implementere grensesnitt.
<java type = class> </java> Lar deg legge til klassevariabler og definere klassemetoder for en side.
<java type = metode> </java> Overstyrer navnet på tjenesten ()-metoden; superklassemetoden kan da brukes til for- og etterbehandling av den brukerspesifiserte metoden.
<java type = print> </java> Skriv ut Java-uttrykket som er inkludert i utdatastrømmen. Dette er veldig likt å bruke backtick.
` (backtick) Operatør. Du kan bygge inn et Java-uttrykk i en hvilken som helst vilkårlig HTML-tag ved å sette den i anførselstegn. Uttrykket blir evaluert og deretter konvertert til en streng.

Reserverte ord i JHTML

JHTML forbeholder seg bruken av disse ordene i den innebygde Java-koden. I dette tilfellet bruker du disse ordene som objekter i Java-koden.

ute
ut representerer utdatastrømmen til HTTP-svaret, gjennom hvilken JHTML-servleten sender svaret til nettleseren. Teknisk sett er det en underklasse av java.io.OutputStream-objektet, en abstrakt klasse som definerer hvordan man skal håndtere bytestrømmer. Ut-objektet har flere brukbare metoder, inkludert write ()å ta en verdi Stringog skrive den ut på en side, og flush ()la deg tømme strømmen før du skriver ut noe nytt.
be om
request er HttpServletRequest-objektet. Den inneholder informasjon om nettleserforespørselen og har flere nyttige metoder for å skaffe informasjonskapsler, overskrifter og øktdata.
respons
respons representerer HttpServletResponse-objektet. Responsobjektet brukes til å returnere servletutgangen til nettleseren. Den har flere nyttige metoder for å sette informasjonskapsler og få en utdatastrøm.

Eksempel

< html >  
< head >  < title >  Hello  World  Test  </ title >  </ head >  
< body > 

< h1 >  < font  color  =  #  DB1260 >  Hello  World  Test  </ font >  </ h1 >  < java >  
ut . print  ( "Hello World generert av Java" );  
</ java >  
< p >  Dette  er ikke  Java ! < p > < i > Sentrale elementer i siden </ i > < p > < java > for ( int i = 1 ; i <= 5 ; i ++ ) { out . print ( "Dette er en Java-løkke!" + i + "<p>" ); } </ java > </ body > </ html >  
       
  
           
        
 
 
 

Slik ser den resulterende siden ut etter at den er fylt ut:

Hello World Test

Hello World generert av Java

Dette er ikke Java!

Sentrale elementer på siden

Dette er en Java-løkke! 1

Dette er en Java-løkke! 2

Dette er en Java-løkke! 3

Dette er en Java-løkke! 4

Dette er en Java-løkke! 5

Importere pakker

Det er mulig å ha bare én tag <java type = import>i en JHTML-fil, men det er mulig å ha mange importsetninger innenfor den taggen. Selv om du kan sette inn importkoden hvor som helst i JHTML-filen, anbefales det at du setter den inn i begynnelsen av filen, akkurat som en vanlig ".java"-fil.

<java type = import>
importer java.io. *;
importer java.sql. *;
</java>

Tjenestemetode Brødtekstdefinisjon

Som beskrevet ovenfor blir JHTML først kompilert til en standard HTTP Java-servletfil, deretter kompilert ved hjelp av en standard java-kompilator. Rekkefølgen på HTML og Java på JHTML-siden opprettholdes når den oversettes til Java-kildekode.

Enhver Java-konstruksjon kan brukes i JHTML, for eksempel looper eller betingede setninger. Du kan bytte fra Java til HTML for å bygge inn HTML-utdata i en Java-konstruksjon. For eksempel:

  <html> <body>
  <java>
    for (int i = 0; i <10; i ++) {
  </java>
  <h1> Hei verden! </h1>
  <P>
  <java>
    } // Slutten av for-løkken
  </java> </body> </html>

Dette vil resultere i en "Hello World!" skrevet 10 ganger på en HTML-side.

Klasseomfanget objekterklæring

Du kan deklarere objekter med klasseomfang som variabler, metoder og indre klasser mellom tagger <java type = class>i en JHTML-fil. Et hvilket som helst antall av denne typen java-tag kan brukes i JHTML:

<java type = klasse>
String jdbcClass = "weblogic.jdbc.oci.Driver";
String jdbcURL = "jdbc: weblogic: oracle: goldengate";
String bruker = "scott";
String passord = "";
</java>

I de fleste situasjoner er det bedre å bruke metodeomfangede variabler på grunn av problemer med servlet-tråding. Dette betyr å deklarere variabler i andre metoder eller direkte i tjenestemetodekroppen (dvs. bare innenfor enkle <java>-tagger).

Innbygging av en Java-metode i en JHTML-fil

Dette eksemplet illustrerer hvordan du definerer en klassemetode i JHTML-filen som kalles fra hovedblokken <java>.

Den korte getCon ()-metoden initialiserer et JDBC-tilkoblingsobjekt som brukes andre steder i servleten.

<java type = klasse>
  statisk siste streng jdbcClass =
        "weblogic.jdbc.oci.Driver";
  statisk endelig streng jdbcURL =
        "jdbc: weblogic: oracle: goldengate";
  static final String user = "scott";
  statisk siste streng passord = "tiger";

  sikker tilkobling getCon () {
    Connection conn = null;
    prøve {
      Class.forName (jdbcClass) .newInstance ();
      conn = DriverManager.getConnection (jdbcURL,
                                         bruker passord);
    }
    catch (unntak f) {
    }
    returnere tilkobling;
  }
</java>

Du kan kalle denne metoden fra en hvilken som helst annen Java-kode i JHTML. Merk at de andre variablene som er deklarert i denne blokken er klasseomfang, så du kan også referere til hvilken som helst <java>-blokk i JHTML-en din.

Ved å bruke tilbaketikken

Som standard støtter WebLogic bruk av backtick i Java-tagger. Vilkårlige backticks kan settes inn hvor som helst i HTML-en. En Java-setning i en backtick blir evaluert, konvertert til en streng og sendt til servletens utdatastrøm. Backticks er avgjørende for å sette inn dynamisk innhold i HTML-tagger, for eksempel en lenke til et annet dokument, basert på en variabelverdi [2] .

Backtikken i WebLogic

Under Java WebServer kan du legge inn et Java-uttrykk i en hvilken som helst vilkårlig HTML-tag ved å omslutte den i anførselstegn bak. Vi tar denne funksjonaliteten ett skritt videre i WebLogic JHTML og backticks er gyldige i og utenfor java-tagger. Dette er nyttig for å bygge inn små deler av java i HTML-en for å generere dynamisk innhold, da det holder HTML-en i et lesbart format.

Å bruke backtick på denne måten betyr at du ikke lenger kan bruke et backtick-tegn direkte i HTML-koden. Løsningen er å skrive ut en backtick til utdatastrømmen inne i <java>-taggene. Siden backtick sjelden brukes, overvinner bekvemmeligheten av å bruke backtick-java-uttrykk i HTML denne ulempen.

Du kan aktivere og deaktivere utvidet bruk av backticks ved å angi følgende egenskap i weblogic.properties-filen:

weblogic.httpd.initArgs. *. jhtml = backtick = sant | falsk

Bruke øktovervåking

WebLogics HTTP-server støtter også øktovervåking, som gjør at informasjon om en bruker kan spores mens de går gjennom nettapplikasjonen. For eksempel kan en nettauksjon eller handelsapplikasjon bruke øktsporing for å holde tritt med hva en bruker har lagt til i en handlekurv eller hvilke bud en bruker gir på en salgsvare.

En økt åpnes fra søkeordet forespørsel , med metoden getSession (), som returnerer et objekt HttpSession. Du kan legge til eller hente data fra HttpSession-objektet ved å bruke vilkårlige navn = verdipar. Følgende eksempel illustrerer hvordan du inkluderer innholdet i en økt i HTML-svaret på en forespørsel [2] .

<html>
<hode>
<title> Bruk av øktovervåking </title> <java type = package> tutorial.servlets.jhtml </java>
</head>
<body bgcolor = # FFFFFF>
<h3> Verdier allerede i økten: </h3>
<tabellkant = 1 bredde = "100 %"> <java>
    HttpSession session = request.getSession (true);
    String [] verdinavn = session.getValueNames ();
    for (int i = 0; i <verdinavn.lengde; i ++) {
      Strengnavn = verdinavn [i];
      String value = session.getValue (navn) .toString ();
      out.print ("<tr> <td>" + navn + "</td> <td>" +
                verdi + "</td> </tr>

Data legges til en økt på lignende måte, men ved å bruke putValue ()-metoden. Dette eksemplet henter alle navneparene parametro = valore dai datitil forespørselsspørringen og lagrer dem i én økt.

<h3> Verdier å legge til økten: </h3>

<tabellkant = 1 bredde = "100 %"> <java>
    Enumeration paramNames = request.getParameterNames ();
    while (paramNames.hasMoreElements ()) {
      String name = (String) paramNames.nextElement ();
      String [] verdier = request.getParameterValues ​​(navn);
      session.putValue (navn,
                       (verdier! = null? verdier [0]: "null"));
      out.print ("<tr> <td>" + navn + "</td> <td>" +
                verdi + "</td> </tr>");
    }
</java>
</table>
</body>
</html>

Henter data med JDBC

Dette eksemplet viser hvordan du får tilgang til en database fra JHTML for å inkludere dynamisk innhold på nettsider.

<java>
prøve {
  String jdbcClass = "weblogic.jdbc.oci.Driver";
  String jdbcURL = "jdbc: weblogic: oracle: goldengate";
  String bruker = "scott";
  String passord = "";

  passord = "tiger";
  Class.forName (jdbcClass) .newInstance ();
  Tilkobling =
    DriverManager.getConnection (jdbcURL, bruker, passord);
  out.print ("& lt; p & gt; Den første" +
            "påloggingsforsøk var vellykket for");
  out.print (bruker + "/" + passord);

  passord = "tigger";
  Class.forName (jdbcClass) .newInstance ();
  Tilkobling 2 =
    DriverManager.getConnection (jdbcURL, bruker, passord);
  out.print ("& lt; p & gt; Andre påloggingsforsøk" +
            "var vellykket for");
  out.print (bruker + "/" + passord);
  }

catch (unntak f) {
  out.print ("& lt; p & gt; Innlogging mislyktes for" +
            bruker + "/" + passord);
  out.print ("& gt; p & gt;");
  f.printStackTrace (ny PrintStream (out));
  }

til slutt {
  prøv {conn.close ();}
  catch (unntak g) {}
  prøv {conn2.close ();}
  catch (unntak h) {}
  }
</java>

WebLogic JHTML Compiler

Siden PageCompileServletden automatisk kaller WebLogics JHTML-kompilator etter behov, er det vanligvis ikke nødvendig å få direkte tilgang til den. Det kan imidlertid være situasjoner (som feilsøking) der direkte tilgang til kompilatoren kan være nyttig. Denne delen er gitt som en referanse for kompilatoren.

WebLogics JHTML-kompilator analyserer den produserte .jhtml-filen til en Java-fil og kompilerer deretter Java-filen til en klassefil, alt i ett trinn [2] .

Syntaks

JHTML-kompilatoren fungerer omtrent på samme måte som andre WebLogic-kompilatorer (inkludert RMI- og EJB-kompilatorene) fungerer:

$ java weblogic.jhtmlc -options   filnavn

der filnavn er navnet på .jhtml -filen du vil kompilere. Alternativene kan være før eller etter målfilnavnet. Her er et eksempel som kompilerer "myFile" inn i målkatalogen (ett av alternativene) "weblogic / classes".

$ java weblogic.jhtmlc -d / weblogic / classes-jdk110 \  
  myFile.jhtml

emner

De tilgjengelige alternativene er:

-hjelp
Sender ut en liste over alle tilgjengelige flagg.
-backticks
Parse tekst hvor som helst i .jhtml-filen som Java, i stedet for bare i koder. Dette lar deg bygge inn elementer som tabell- og kolonnenavn i HTML-en. Sann som standard.
-ordlig
Skriv ut feilsøkingsinformasjon i skallvinduet når flagget er tilstede. Standard er av.
-klassesti
Legg til en semikolon-separert liste over kataloger som utgjør den ønskede CLASSPATH. For eksempel (som skal settes inn på én linje):
$ java weblogic.jhtmlc \  
    -classpath java / classes.zip; /weblogic/classes.zip \  
    myFile.jhtml
-d
Destinasjon for den kompilerte utdata (klassefilen). En snarvei for å plassere kompilerte klasser i en katalog som allerede er i CLASSPATH.
-holdegenerert
Behold Java-filene som er opprettet som et mellomtrinn i byggeprosessen.
-kompilator
Den erstatter en annen kompilator for javac for kompilering av Java til klasse.
-nowarn
Deaktiver advarselsmeldinger fra Java-kompilatoren.
-skriv nå
Den utfører byggeprosessen uten å produsere en fil .class. Hvis du kombinerer det med keepgenerated- flagget , vil kompilatoren bare lage den .javamellomliggende filen. Dette kan være nyttig for feilsøking.
-avskrivning
Får Java-kompilatoren til å skrive ut en advarsel om enhver utdatert klasse eller metode kalt eller brukt av filen .jhtml.
-J
Legger til andre alternativer som den spesifikke kompilatoren vil analysere.

Merknader

  1. ^ Joomla Utility -klasse for alle HTML-tegneklasser Arkivert 19. januar 2009 på Internet Archive .
  2. ^ a b c d og Bruke WebLogic JHTML , på docs.oracle.com . Hentet 27. februar 2021 .

Relaterte elementer

Eksterne lenker