Programiranje

Predloge JSP

Čeprav orodja za spletni razvoj hitro napredujejo, še vedno zaostajajo za večino orodij grafičnega uporabniškega vmesnika (GUI), kot sta Swing ali VisualWorks Smalltalk. Na primer, tradicionalni kompleti orodij GUI v takšni ali drugačni obliki omogočajo upravitelje postavitev, ki omogočajo enkapsulacijo in ponovno uporabo algoritmov postavitve. Ta članek raziskuje mehanizem predloge za strani JavaServer Pages (JSP), ki podobno kot upravitelji postavitev enkapsulira postavitev, tako da jo je mogoče ponovno uporabiti, namesto da bi jo kopirali.

Ker se postavitev skozi razvoj spreminja, je pomembno, da to funkcijo vključite, tako da jo lahko spremenite z minimalnim vplivom na preostali del aplikacije. Dejansko upravitelji postavitev prikazujejo primer enega od načel objektno usmerjenega oblikovanja: vključiti koncept, ki se spreminja, kar je tudi temeljna tema številnih oblikovalskih vzorcev.

JSP ne nudi neposredne podpore za enkapsulacijo postavitve, zato spletne strani z enakimi formati ponavadi podvajajo kodo postavitve; na primer, slika 1 prikazuje spletno stran, ki vsebuje odseke glave, noge, stranske vrstice in glavne vsebine.

Postavitev strani, prikazana na sliki 1, je izvedena z oznakami tabele HTML:

Primer 1. Vključno z vsebino

Predloge JSP 
<%@include file="sidebar.html"%>
<%@include file="header.html"%>
<%@include file="introduction.html"%>
<%@include file="footer.html"%>

V zgornjem primeru je vsebina vključena v JSP vključujejo direktivo, ki omogoča spreminjanje vsebine strani - s spreminjanjem vključenih datotek - brez spreminjanja same strani. Ker je postavitev težko kodirana, spremembe postavitve zahtevajo spremembe strani. Če ima spletno mesto več strani z enakimi formati, kar je običajno, celo preproste spremembe postavitve zahtevajo spremembe vseh strani.

Da bi čim bolj zmanjšali vpliv sprememb postavitve, potrebujemo mehanizem za vključitev postavitve poleg vsebine; na ta način se lahko postavitev in vsebina spreminjata, ne da bi spremenili datoteke, ki jih uporabljajo. Ta mehanizem so predloge JSP.

Uporaba predlog

Predloge so datoteke JSP, ki vključujejo parametrizirano vsebino. Predloge, obravnavane v tem članku, se izvajajo z naborom oznak po meri: predloga: dobite, predloga: dal, in predloga: vstavi. The predloga: dobite tag dostopa do parametrizirane vsebine, kot je prikazano v primeru 2.a, ki ustvarja spletne strani v obliki, prikazani na sliki 1.

Primer 2.a. Predloga

<template: get name = "title"/>
<predloga: dobite name = "header" />

Primer 2.a je skoraj enak primeru 1, le da ga uporabljamo predloga: dobite namesto vključujejo direktive. Poglejmo, kako predloga: dobite deluje.

predloga: dobite pridobi obseg Java z določenim imenom iz obsega zahteve. Fižol vsebuje URI (enotni identifikator vira) spletne komponente, ki jo vključuje predloga: dobite. Na primer, v predlogi, navedeni v primeru 2.a, predloga: dobite pridobi URI - header.html - iz fižola z imenom glava v obsegu zahteve. Nato predloga: dobite vključuje header.html.

predloga: dal postavi fižol v obseg zahteve, ki ga pozneje pridobi predloga: dobite. Predloga je priložena predloga: vstavi. Primer 2.b prikazuje uporabo dal in vstavi oznake:

Primer 2.b. Uporaba predloge iz primera 2.a

<>vstavi template = "/ articleTemplate.jsp"><>dal name = "title" content = "Predloge" direct = "true" /><>dal name = "header" content = "/ header.html" /><>dal name = "sidebar" content = "/ sidebar.jsp" /><>dal name = "content" content = "/ uvod.html" /><>dal name = "footer" content = "/ footer.html" />

The vstavi start tag določa predlogo, ki jo je treba vključiti, v tem primeru predlogo, navedeno v primeru 2.a. Vsak dal tag shrani fižol v obsegu zahteve in vstavi končna oznaka vključuje predlogo. Predloga nato dostopa do fižola, kot je opisano zgoraj.

A neposredno atribut lahko določite za predloga: dal; če neposredno je nastavljeno na prav, vsebina, povezana z oznako, ni vključena predloga: dobite, vendar se natisne neposredno implicitno ven spremenljivka. V primeru 2.b je na primer vsebina naslova - Predloge JSP - uporabljena za naslov okna.

Spletna mesta, ki vsebujejo več strani z enakimi formati, imajo eno predlogo, na primer tisto, navedeno v primeru 2.a, in številne strani JSP, kot je primer 2.b, ki uporabljajo predlogo. Če je oblika spremenjena, so spremembe omejene na predlogo.

Druga prednost predlog in vključevanja vsebine na splošno je modularno oblikovanje. Na primer, datoteka JSP, navedena v primeru 2.b, na koncu vključuje header.html, navedeni v primeru 2.c.

Primer 2.c. header.html


Ker header.html je vključena vsebina, je ni treba replicirati med stranmi, ki prikazujejo glavo. Tudi, čeprav header.html je datoteka HTML, ne vsebuje običajne preambule oznak HTML, na primer ali ker so te oznake določene v predlogi. Se pravi, ker predloga vključuje header.html, teh oznak ne bi smeli ponavljati v header.html.

Opomba: JSP ponuja dva načina za vključitev vsebine: statično s vključujejo in dinamično z vključujejo ukrepanje. The vključujejo Direktiva vključuje vir ciljne strani v času prevajanja in je enakovredna C-jem #include ali Java uvoz. The vključujejo dejanje vključuje odziv cilja, ustvarjen med izvajanjem.

Tako kot JSP vključujejo dejanje, predloge vključujejo vsebino dinamično. Torej, čeprav sta strani JSP v primeru 1 in 2.b funkcionalno enaki, prva statično vključuje vsebino, druga pa dinamično.

Izbirna vsebina

Vsa vsebina predloge ni obvezna, zaradi česar je ena sama predloga uporabna za več spletnih strani. Na sliki 2.a in sliki 2.b sta na primer prikazani dve strani - prijava in inventar -, ki uporabljata isto predlogo. Obe strani imata glavo, nogo in glavno vsebino. Stran z inventarjem ima urejevalno ploščo (ki na strani za prijavo nima) za spreminjanje inventarja.

Spodaj boste našli predlogo, ki jo delijo strani za prijavo in inventar:

 ... 
name = 'editPanel'/>
...

Stran z inventarjem uporablja zgoraj navedeno predlogo in določa vsebino za ploščo za urejanje:

   ...  ...  

Nasprotno stran za prijavo ne določa vsebine za nadzorno ploščo:

Ker stran za prijavo ne določa vsebine za ploščo za urejanje, ni vključena.

Vsebina na podlagi vlog

Spletne aplikacije pogosto diskriminirajo vsebino glede na vlogo uporabnika. Na primer, ista predloga JSP, ki vključuje urejevalno ploščo le, če je vloga uporabnika kustos, ustvari dve strani, prikazani na slikah 3.a in 3.b.

Uporablja se predloga, uporabljena na slikah 3.a in 3.b predloga: dobiteje vlogo atribut:

 ...  ...  ... 
role = 'kustos'/>
...

The dobili Oznaka vključuje vsebino le, če se uporabnikova vloga ujema z vlogo atribut. Oglejmo si, kako ravna z oznako predloga: dobite uporablja vlogo atribut:

javni razred GetTag razširja TagSupport {ime zasebnega niza = null, role = null; ... javna void setRole (vloga niza) {this.role = role; } ... public int doStartTag () vrže JspException {... if (param! = null) {if (roleIsValid ()) { // vključitev ali tiskanje vsebine ... }} ...} zasebno logično roleIsValid ()  } 

Izvajanje predlog

Predloge, obravnavane v tem članku, se izvajajo s tremi oznakami po meri:

  • predloga: vstavi
  • predloga: dal
  • predloga: dobite

The vstavi oznaka vključuje predlogo, preden pa jo dal oznake shranjujejo informacije - ime, URI in logično vrednost, ki določajo, ali naj bo vsebina vključena ali natisnjena neposredno - o vsebini, ki jo vsebuje predloga. predloga: dobite, ki vključuje (ali natisne) določeno vsebino, nato dostopa do informacij.

predloga: dal shrani fižol v obsegu zahteve, vendar ne neposredno ker če dve predlogi uporabljata enaka imena vsebine, lahko ugnezdena predloga prepiše vsebino priložene predloge.

Če želite zagotoviti, da ima vsaka predloga dostop samo do svojih podatkov, predloga: vstavi vzdržuje sveženj hashtables. Vsak vstavi start tag ustvari razpršilno tablico in jo potisne v sklad. Priloženi dal oznake ustvarijo fižol in ga shranijo v novo ustvarjeno razpršilno tablico. Nato dobili oznake v priloženi predlogi dostopajo do fižolov v razpredelnici. Slika 4 prikazuje, kako se sklad vzdržuje za ugnezdene predloge.

Vsaka predloga na sliki 4 dostopa do pravilne noge; footer.html za template_1.jsp in footer_2.html za template_2.jsp. Če bi fižol shranili neposredno v obseg zahteve, bi 5. korak na sliki 4 prepisal grah noge, določen v 2. koraku.

Izvedbe oznak predloge

Preostanek tega članka preučuje izvajanje treh oznak predloge: vstavi, dal, in dobili. Začnemo z diagrami zaporedja, začenši s sliko 5. Ilustrira zaporedje dogodkov za vstavi in dal oznake, ko je uporabljena predloga.

Če sklad predlogov še ne obstaja, vstavi start tag ga ustvari in postavi v obseg zahteve. Hashtable se nato ustvari in potisne na sklad.

Vsak dal start tag ustvari Parameter strani bean, shranjen v razpršilni tabeli, ki jo ustvari priloženi element vstavi oznaka.

Vložek konec Oznaka vključuje predlogo. Predloga uporablja dobili za dostop do zrn, ki jih je ustvaril dal oznake. Po obdelavi predloge se zgoščevalna tabela, ki jo ustvari vstavi start tag se odpre iz sklada.

Slika 6 prikazuje diagram zaporedja za predloga: dobite.

Seznam predlogov oznak

Izvedbe obdelovalcev oznak za oznake predloge so enostavne. Primer 3.a navaja InsertTag class - vodnik oznak za predloga: vstavi.

Primer 3.a. InsertTag.java

$config[zx-auto] not found$config[zx-overlay] not found