close

JHTML

Hop til navigation Hop til søgning

JHTML er forkortelsen for Java HTML . Dette sprog (udvidelse af HTML ) giver dig mulighed for at indsætte dynamiske instruktioner inde i HTML-sider, hvilket sker gennem tagget <servlet></servlet>, som derefter udføres af serveren.

Denne teknologi kan bruges til at erstatte ydeevnebegrænsningerne for CGI- programmer . Det er meget effektivt, fordi det, da det er Java, ikke afhænger af hardwareplatformen og kan installeres hvor som helst.

Beskrivelse

Driftsmekanismen for JHTML stammer fra den gamle CGI -programmeringstilstand, som tillader en applikation, der kører på webserveren , dynamisk at generere HTML-kode. JHTML er ATGs proprietære teknologi. Sun Microsystems har erhvervet en del af denne teknologi og udviklet JavaServer Pages med udgangspunkt i ATG-sidernes kompileringsmetodologi.

Operation

Når der laves en anmodning om siden, f.eks. index.jhtml, overfører HTTP -serveren opkaldet til Java-applikationen, som først kompilerer filen til en klasse (.class) fil og derefter udfører den. Klassefilen producerer sidens html-kode samt instruktionerne givet gennem tagget <servlet></servlet>.

Joomlas JHTML klasse

JHTML er også en meget kendt klasse af Joomla! Framework . . [1]

Efterfølgende teknologi

Selvom mange websteder fortsætter med at bruge JHTML, er denne teknologi stort set blevet afløst af JavaServer Pages .

Beskrivelse

JHTML er en JavaSoft-standard til at kombinere Java med HTML-sider. Især JHTML gør det nemt at sammenflette dynamiske data i HTML-sider. JHTML giver dig mulighed for at indlejre Java i en standard webside. WebLogics implementering af JHTML ligner meget den, der bruges i JavaSoft WebServer [2] .

JHTML er implementeret ved hjælp af en speciel HTML-servlet, der leveres som standard med WebLogic Server, kaldet PageCompileServlet. PageCompileServlet er som standard konfigureret til at håndtere alle HTTP-anmodninger for filer, der ender på ".jhtml".

PageCompileServlet kalder JHTML-kompileren for at kompilere JHTML-filen til en standard Java HTTP-servlet og udfører den nye servlet i farten. Den resulterende HTTP-servlet giver en webside som svar på klientens browser.

JHTML-filen kompileres kun, når den besøges første gang, eller når JHTML-filen er blevet ændret, siden den sidst blev kompileret. Ellers bruges den tidligere kompilerede JHTML-servletklasse, hvilket gør efterfølgende svar meget hurtigere. Du kan bruge den selvstændige JHTML-kompiler.

Før du kan anmode om en .jhtml-fil, skal WebLogic-serveren konfigureres med følgende egenskaber i weblogic.properties-filen.

Registrer PageCompileServlet

PageCompileServlet er en standard HTTP-servlet, der følger med WebLogic Server. Du skal registrere den for at håndtere alle HTTP-anmodninger for filer, der slutter med suffikset ".jhtml" ved hjælp af linjen:

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

Yderligere registreringer kan tilføjes for at instruere PageCompileServlet til at håndtere andre filsuffikser (såsom "* .htm", "* .html" og "* .txt") ved hjælp af syntaks svarende til den ovenfor. Brug af en udvidelse har forrang over enhver standard servlet-registrering.

Indstil initialiseringsargumenterne for PageCompileServlet ved hjælp af egenskaben initArgs for standardservlet'en som vist nedenfor:

weblogic.httpd.initArgs. *. jhtml = \
    compileCommand = compilersti , \
    workingDir = bibliotekssti for kompilerede .jhtml-klasser, \  
  verbose = [true | falsk] , \
  pageCheckSeconds = WebLogic interval kontrollerer rekompilering , \
  packagePrefix = pakkenavn på filer (standard: "jhtmlc")

Hvor argumentnavne er defineret som:

compileCommand
(Påkrævet) Angiver den Java-kompiler, der skal bruges af PageCompileServlet. For eksempel, for at bruge Symantec Java Compiler:
compileCommand = / VisualCafe / bin / sj.exe
arbejderDir
(Påkrævet) Angiver den absolutte sti til en lokal mappe, hvor ".class"- og ".java"-filerne, der er kompileret af JHTML-kompileren, placeres. For eksempel:
  workingDir = / weblogic / myserver / jhtml_classes
Denne mappe vil indeholde filerne ".java" og ".class" genereret af alle JHTML-sider.
ordrig
( Valgfrit ) standarden er falsk. Hvis den er indstillet til sand, udskrives fejlfindingsoplysninger i konsollen og i WebLogic Server-logfilen.
holdegenereret
( Valgfrit ) standarden er falsk. Når den er sat til true, gemmes de genererede ".java"-kildefiler med klassefilerne i det bibliotek, der er angivet af workingDir- parameteren .
pageCheckSeconds
(Valgfrit) standarden er 0. Indstiller det interval, hvor WebLogic kontrollerer, om JHTML-filer er ændret og skal genkompileres. Afhængigheder kontrolleres og genindlæses rekursivt, hvis de ændres. Hvis pageCheckSeconds er -1, kontrolleres siderne ikke, efter at de er kompileret.
pakkepræfiks
(Valgfrit) standarden er "jhtmlc". Indstil et pakkenavn for automatisk udfyldte sider. Dette bør undgå konflikter mellem klassenavnet og andre servlets og applets, så længe du ikke også kompilerer dem til en pakke med samme navn.

Relaterede egenskaber

Følgende er egenskaber relateret til filen weblogic.properties. Disse egenskaber bruges af andre WebLogic Server-tjenester. Når du ændrer indstillinger, skal du overveje indvirkningen på andre tjenester [2] .

Indstilling af dokumentroden

Dette er den mappe, hvor ".jhtml"-filer kan publiceres på WebLogic-serveren. Du indstiller det ved hjælp af egenskaben:

weblogic.httpd.documentRoot = sti

hvor sti er en absolut katalogsti eller en relativ katalogsti fra myserver / bibliotek i WebLogic installationen. Hvis du f.eks. indstiller egenskaben til:

weblogic.httpd.documentRoot = jhtml

Vi udgiver JHTML-filerne i mappen: $ WEBLOGICROOT / myserver / public_html / jhtml.

Hvis du ikke indstiller denne egenskab, vil den automatisk blive sat til mappen $ WEBLOGICROOT / myserver / public_html. Dokumentroden er biblioteket på øverste niveau, hvor WebLogic Server søger efter alle offentliggjorte websider. Denne egenskab bruges også af FileServlet, som er registreret som standard til at levere alle andre typer HTTP-medier.

Konfiguration af sessionsovervågning

For at aktivere sessionsovervågning skal du indstille denne egenskab til "true":

weblogic.httpd.session.enable = sand

Yderligere egenskaber og detaljer for sessionsovervågning er tilgængelige i "Using WebLogic HTTP Servlets" udviklervejledningen.

JHTML-tags understøttet i WebLogic

Nedenfor er en hurtig referenceliste over de tags, der bruges i WebLogic JHTML. Alle disse <java>-tags kræver et sidste </java>-tag. Alle disse tags kan inkluderes i eller kombineres med java-kommentarer. For eksempel tags:

  <java>
  .
  .
  .
  </java>

det kan også skrives som:

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

<java type = kode> </java>

Afgrænser Java-kildekoden fra HTML-sidekoden. De sidste to variationer kan bruges til at skjule Java-kode i en kommentarblok til visuelle sideredaktører.
<java type = pakke> </java> Navngiv pakken for den klasse, som denne fil til sidst vil kompilere til, for eksempel:

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

<java type = import> </java> Angiv en pakke eller klasse, der skal importeres. Brug almindelige importinstruktioner til alle pakker inden for et enkelt sæt JHTML-fil-tags, adskilt af semikolon.
<java type = udvider> <java type = implementerer> </java> Angiver navnet på en klasse, der skal udvides, eller en liste over grænseflader, der skal implementeres. Den servlet, der er resultatet af kompilering af JHTML-filen, vil enten udvide denne klasse eller implementere grænseflader.
<java type = klasse> </java> Giver dig mulighed for at tilføje klassevariabler og definere klassemetoder for en side.
<java type = metode> </java> Tilsidesætter navnet på tjenesten ()-metoden; superklassemetoden kan så bruges til for- og efterbehandling af den brugerspecificerede metode.
<java type = print> </java> Udskriv Java-udtrykket inkluderet i outputstrømmen. Dette minder meget om at bruge backtick.
` (tilbagemærke) Operatør. Du kan indlejre et Java-udtryk i et hvilket som helst vilkårligt HTML-tag ved at sætte det i anførselstegn. Udtrykket evalueres og konverteres derefter til en streng.

Reserverede ord i JHTML

JHTML forbeholder sig brugen af ​​disse ord i den indlejrede Java-kode. I dette tilfælde bruger du disse ord som objekter i Java-koden.

ud
out repræsenterer outputstrømmen af ​​HTTP-svaret, hvorigennem JHTML-servlet'en sender svaret til browseren. Teknisk set er det en underklasse af objektet java.io.OutputStream, en abstrakt klasse, der definerer, hvordan man håndterer bytestrømme. Out-objektet har flere brugbare metoder, herunder write ()at tage en værdi Stringog udskrive den på en side og flush ()give dig mulighed for at rydde streamen, før du udskriver noget nyt.
anmodning
request er objektet HttpServletRequest. Den indeholder information om browseranmodningen og har flere nyttige metoder til at indhente cookies, header og sessionsdata.
respons
respons repræsenterer HttpServletResponse-objektet. Responsobjektet bruges til at returnere servlet-outputtet til webbrowseren. Det har flere nyttige metoder til at indstille cookies og få en outputstrøm.

Eksempel

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

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

Sådan ser den resulterende side ud, når den er udfyldt:

Hello World Test

Hello World genereret af Java

Dette er ikke Java!

Centrale elementer på siden

Dette er en Java-loop! 1

Dette er en Java-loop! 2

Dette er en Java-loop! 3

Dette er en Java-loop! 4

Dette er en Java-loop! 5

Import af pakker

Det er muligt kun at have ét tag <java type = import>i en JHTML-fil, men det er muligt at have mange import-sætninger i det tag. Selvom du kan indsætte importmærket hvor som helst i JHTML-filen, anbefales det, at du indsætter det i begyndelsen af ​​filen, ligesom en normal ".java"-fil.

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

Service Method Body Definition

Som beskrevet ovenfor kompileres JHTML først til en standard HTTP Java servlet-fil og kompileres derefter ved hjælp af en standard java-compiler. Rækkefølgen af ​​HTML og Java på JHTML-siden opretholdes, når den oversættes til Java-kildekode.

Enhver Java-konstruktion kan bruges i JHTML, såsom loops eller betingede sætninger. Du kan skifte fra Java til HTML for at integrere HTML-output i en Java-konstruktion. For eksempel:

  <html> <body>
  <java>
    for (int i = 0; i <10; i ++) {
  </java>
  <h1> Hej verden! </h1>
  <P>
  <java>
    } // Slut på for-løkken
  </java> </body> </html>

Dette vil resultere i et "Hej verden!" skrevet 10 gange på en HTML-side.

Klasseomfanget objekterklæring

Du kan erklære objekter med klasseomfang som variabler, metoder og indre klasser mellem tags <java type = class>i en JHTML-fil. Et hvilket som helst antal af denne type java-tag kan bruges i JHTML:

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

I de fleste situationer er det bedre at bruge metodeomfangede variabler på grund af problemer med servlet-trådning. Dette betyder at deklarere variabler i andre metoder eller direkte i servicemetodens krop (dvs. kun inden for simple <java>-tags).

Indlejring af en Java-metode i en JHTML-fil

Dette eksempel illustrerer, hvordan man definerer en klassemetode i JHTML-filen, der kaldes fra hovedblokken <java>.

Den korte getCon ()-metode initialiserer et JDBC-forbindelsesobjekt, der bruges andre steder i servlet'en.

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

  sikker forbindelse getCon () {
    Forbindelse conn = null;
    prøve {
      Class.forName (jdbcClass) .newInstance ();
      conn = DriverManager.getConnection (jdbcURL,
                                         bruger, adgangskode);
    }
    catch (undtagelse f) {
    }
    returnere forbindelse;
  }
</java>

Du kan kalde denne metode fra enhver anden Java-kode i JHTML. Bemærk, at de andre variabler, der er erklæret i denne blok, er klasseomfang, så du kan også henvise til enhver <java>-blok i din JHTML.

Brug af backtikken

Som standard understøtter WebLogic brugen af ​​backtick i Java-tags. Vilkårlige backticks kan indsættes hvor som helst i HTML. En Java-sætning i et backtick evalueres, konverteres til en streng og sendes til servletens outputstrøm. Backticks er afgørende for at indsætte dynamisk indhold i HTML-tags, såsom et link til et andet dokument, baseret på en variabel værdi [2] .

Backtikken i WebLogic

Under Java WebServer kan du indlejre et Java-udtryk i et hvilket som helst vilkårligt HTML-tag ved at omslutte det i bageste anførselstegn. Vi tager denne funktionalitet et skridt videre i WebLogic JHTML, og backticks er gyldige i og uden for java-tags. Dette er nyttigt til at indlejre små stykker Java i HTML for at generere dynamisk indhold, da det holder HTML i et læsbart format.

Brug af backtick på denne måde betyder, at du ikke længere kan bruge et backtick-tegn direkte i HTML-koden. Løsningen er at udskrive et backtick til outputstrømmen inde i <java> tags. Da backtick sjældent bruges, overvinder bekvemmeligheden ved at bruge backtick-java-udtryk i HTML denne ulempe.

Du kan aktivere og deaktivere udvidet brug af backticks ved at indstille følgende egenskab i filen weblogic.properties:

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

Brug af sessionsovervågning

WebLogics HTTP-server understøtter også sessionsovervågning, som gør det muligt at spore oplysninger om en bruger, efterhånden som de skrider frem gennem webapplikationen. For eksempel kan en onlineauktion eller handelsapplikation bruge sessionssporing til at holde trit med, hvad en bruger har tilføjet til en indkøbskurv, eller hvilke bud en bruger afgiver på en salgsvare.

En session tilgås fra anmodningsnøgleordet med metoden , getSession ()som returnerer et objekt HttpSession. Du kan tilføje eller hente data fra HttpSession-objektet ved at bruge vilkårlige navn = værdi-par. Følgende eksempel illustrerer, hvordan man inkluderer indholdet af en session i HTML-svaret på en anmodning [2] .

<html>
<hoved>
<title> Brug af sessionsovervågning </title> <java type = package> tutorial.servlets.jhtml </java>
</head>
<body bgcolor = # FFFFFF>
<h3> Værdier allerede i session: </h3>
<tabelkant = 1 bredde = "100 %"> <java>
    HttpSession session = request.getSession (true);
    String [] værdinavne = session.getValueNames ();
    for (int i = 0; i <værdinavne.længde; i ++) {
      Strengnavn = værdiNavne [i];
      Strengværdi = session.getValue (navn) .toString ();
      out.print ("<tr> <td>" + navn + "</td> <td>" +
                værdi + "</td> </tr>

Data føjes til en session på en lignende måde, men ved hjælp af putValue () metoden. Dette eksempel henter alle navneparrene parametro = valore dai datii anmodningsforespørgslen og gemmer dem i én session.

<h3> Værdier at tilføje til sessionen: </h3>

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

Henter data med JDBC

Dette eksempel viser, hvordan man får adgang til en database fra JHTML for at inkludere dynamisk indhold på websider.

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

  password = "tiger";
  Class.forName (jdbcClass) .newInstance ();
  Tilslutningsforbindelse =
    DriverManager.getConnection (jdbcURL, bruger, adgangskode);
  out.print ("& lt; p & gt; Den første" +
            "loginforsøg lykkedes for");
  out.print (bruger + "/" + adgangskode);

  password = "tigger";
  Class.forName (jdbcClass) .newInstance ();
  Forbindelse conn2 =
    DriverManager.getConnection (jdbcURL, bruger, adgangskode);
  out.print ("& lt; p & gt; Andet loginforsøg" +
            "var vellykket for");
  out.print (bruger + "/" + adgangskode);
  }

catch (undtagelse f) {
  out.print ("& lt; p & gt; Login mislykkedes for" +
            bruger + "/" + adgangskode);
  out.print ("& gt; p & gt;");
  f.printStackTrace (ny PrintStream (ud));
  }

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

WebLogic JHTML Compiler

Da PageCompileServletden automatisk kalder WebLogics JHTML-kompiler efter behov, er det generelt ikke nødvendigt at få direkte adgang til den. Der kan dog være situationer (såsom debugging), hvor direkte adgang til compileren kan være nyttig. Dette afsnit er givet som reference til compileren.

WebLogics JHTML-kompiler parser den producerede .jhtml-fil til en Java-fil og kompilerer derefter Java-filen til en klassefil, alt sammen i ét trin [2] .

Syntaks

JHTML-compilatoren fungerer stort set på samme måde, som andre WebLogic-compilatorer (inklusive RMI- og EJB-compilatorerne) fungerer:

$ java weblogic.jhtmlc -options   filnavn

hvor filnavn er navnet på den .jhtml -fil, du vil kompilere. Indstillingerne kan være før eller efter destinationsfilnavnet. Her er et eksempel, der kompilerer "myFile" i målmappen (en af ​​mulighederne) "weblogic / classes".

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

emner

De tilgængelige muligheder er:

-Hjælp
Udsender en liste over alle tilgængelige flag.
-backticks
Parse tekst hvor som helst i .jhtml-filen, f.eks. Java, i stedet for kun inde i tags. Dette giver dig mulighed for at indlejre elementer såsom tabel- og kolonnenavne i HTML. Sand som standard.
-ordrig
Udskriv fejlfindingsoplysninger i shell-vinduet, når flaget er til stede. Standarden er slået fra.
-klassesti
Tilføj en semikolon-separeret liste over mapper, der udgør den ønskede CLASSPATH. For eksempel (skal indsættes på én linje):
$ java weblogic.jhtmlc \  
    -classpath java / classes.zip; /weblogic/classes.zip \  
    myFile.jhtml
-d
Destination for det kompilerede output (klassefilen). En genvej til at placere kompilerede klasser i en mappe, der allerede er i CLASSPATH.
-vedvarende genereret
Behold de oprettede Java-filer som et mellemtrin i byggeprocessen.
-kompilator
Den erstatter en anden compiler til javac til kompilering af Java til klasse.
- varsel
Deaktiver advarselsmeddelelser fra Java-kompiler.
-skriv nu
Den udfører byggeprocessen uden egentlig at producere en fil .class. Hvis du kombinerer det med keepgenerated flag , vil compileren kun oprette den .javamellemliggende fil. Dette kan være nyttigt til fejlretning.
-afskrivning
Får Java-kompileren til at udskrive en advarsel om enhver forældet klasse eller metode kaldet eller brugt af filen .jhtml.
-J
Tilføjer andre muligheder, som den specifikke compiler vil parse.

Noter

  1. ^ Joomla Utility -klasse for alle HTML-tegneklasser Arkiveret 19. januar 2009 på Internet Archive .
  2. ^ a b c d og Brug af WebLogic JHTMLdocs.oracle.com . Hentet 27. februar 2021 .

Relaterede emner

Eksterne links