Bevezetés az Apache sebességébe
1. Áttekintés
A Velocity Java alapú sablonmotor.
Ez egy nyílt forráskódú webkeret, amelyet az MVC architektúrájának nézetkomponenseként terveztek használni, és alternatívát kínál néhány létező technológiához, például a JSP-hez.
A sebesség használható XML fájlok, SQL, PostScript és a legtöbb más szöveges formátum előállítására.
Ebben a cikkben azt vizsgáljuk, hogy miként lehet dinamikus weboldalakat létrehozni.
2. Hogyan működik a sebesség?
A sebesség fő osztálya a VelocityEngine.
Az adatmodell és a sebességsablon segítségével a tartalom olvasásának, elemzésének és létrehozásának teljes folyamatát hangszereli.
Egyszerűen fogalmazva, itt vannak a lépések, amelyeket meg kell követnünk bármilyen tipikus sebesség-alkalmazásnál:
- Inicializálja a sebességmotort
- Olvassa el a sablont
- Helyezze az adatmodellt a context objectbe
- Egyesítse a sablont a kontextusadatokkal, és renderelje a nézetet
Menjünk át egy példát kövesse ezeket az egyszerű lépéseket:
VelocityEngine velocityEngine = új VelocityEngine (); velocityEngine.init (); Sablon t = velocityEngine.getTemplate ("index.vm"); VelocityContext context = új VelocityContext (); context.put ("név", "Világ"); StringWriter író = new StringWriter (); t.merge (kontextus, író);
3. Maven-függőségek
A Velocity-vel való együttműködéshez a következő függőségeket kell hozzáadnunk a Maven-projektünkhöz:
org.apache.velocity sebesség 1.7 org.apache.velocity speed-tools 2.0
Mindkét függőség legújabb verziója itt lehet: sebesség és sebesség eszközök.
4. Sebesség sablon nyelve
A Velocity Template Language (VTL) a legegyszerűbb és legtisztább módja annak, hogy a dinamikus tartalmat egy weboldalba beépítsük VTL hivatkozások segítségével.
A VTL referencia a sebességsablonban a-val kezdődik $ és az adott referenciához társított érték lekérésére szolgál. A VTL irányelveket is tartalmaz, amelyek felhasználhatók a Java kód kimenetének manipulálására. Ezek az irányelvek kezdődnek #.
4.1. Hivatkozások
A Velocity-ben háromféle hivatkozás létezik, változók, tulajdonságok és módszerek:
- változók - az oldalon belül definiálva #készlet a Java objektum mezőjéből visszaadott irányelv vagy érték:
#set ($ message = "Hello World")
- tulajdonságait - hivatkozás az objektumon belüli mezőkre; utalhatnak a getter az ingatlan módszere:
$ customer.name
- mód - lásd a Java objektumon található módszert:
$ customer.getName ()
Az egyes hivatkozásokból származó végső értékeket karakterláncokká konvertáljuk, amikor az a végső kimenetbe kerül.
4.2. Irányelvek
A VTL gazdag irányelveket tartalmaz:
- készlet - felhasználható referenciaérték beállítására; ez az érték hozzárendelhető egy változóhoz vagy egy tulajdonság referenciához:
#set ($ message = "Hello World") #set ($ customer.name = "Brian Mcdonald")
- feltételes – #if, #elseif és #más az irányelvek lehetőséget nyújtanak a tartalom feltételes ellenőrzéseken alapuló előállítására:
#if ($ worker.designation == "Menedzser")
Menedzser
#elseif ($ worker.designation == "Senior Developer")Vezető szoftvermérnök
#másGyakornok
# vége - hurkok – #az egyes irányelv lehetővé teszi az objektumok gyűjteménye közötti hurkolást:
- #foreach ($ termék a $ productList-ben)
- $ termék # vége
- tartalmazza – #include elem lehetővé teszi fájlok importálását a sablonba:
#include ("one.gif", "two.txt", "three.html" ...)
- elemzés – #parse utasítás lehetővé teszi a sablontervező számára egy másik helyi fájl importálását, amely VTL-t tartalmaz; A Velocity majd elemzi a tartalmat és megjeleníti:
#parse (sablon)
- értékelni – #értékelés irányelv használható a VTL dinamikus értékelésére; ez lehetővé teszi a sablon értékelését a Húr rendereléskor, például a sablon nemzetközivé tétele érdekében:
#set ($ firstName = "David") #set ($ lastName = "Johnson") #set ($ dynamicsource = "$ firstName $ lastName") #értékelés ($ dynamicsource)
- szünet – #szünet irányelv megállítja a jelenlegi végrehajtási hatókör (azaz #az egyes, #parse)
- álljon meg – #álljon meg irányelv megállítja a sablon további előállítását és végrehajtását.
- velocimacros – #makró irányelv lehetővé teszi a sablontervező számára, hogy meghatározza a VTL ismételt szegmensét:
#macro (tablerows)
# végeEz a makró mostantól a sablon tetszőleges helyére #táblázatok ():
#macro (tablerows $ color $ productList) #foreach ($ product in $ productList)
# vég # vég$ product.name
4.3. Más funkciók
- matek - néhány beépített matematikai függvény, amely sablonokban használható:
#set ($ percent = $ number / 100) #set ($ maradék = $ osztalék% $ osztó)
- tartomány üzemeltetője - amely együtt használható a #készlet és #az egyes:
#set ($ array = [0..10]) #foreach ($ elem in $ arr) $ elem # vég
5. Velocity Servlet
A Velocity Engine elsődleges feladata a sablon alapján tartalom létrehozása.
A Motor önmagában nem tartalmaz webes funkciókat. Egy webalkalmazás megvalósításához servlet vagy servlet alapú keretrendszert kell használnunk.
A Velocity a dobozon kívüli megvalósítást biztosítja VelocityViewServlet, amely a sebesség-eszközök alprojekt része.
A beépített funkcionalitás kihasználása VelocityViewServlet, -től meghosszabbíthatjuk a servletünket VelocityViewServlet és felülírja a handleRequest () módszer:
public class ProductServlet kiterjeszti a VelocityViewServlet {ProductService service = new ProductService (); A @Override public Template handleRequest (HttpServletRequest kérés, HttpServletResponse válasz, kontextus kontextus) kivételt dob a {List products = service.getProducts (); context.put ("termékek", termékek); return getTemplate ("index.vm"); }}
6. Konfiguráció
6.1. Webkonfiguráció
Most nézzük meg, hogyan kell konfigurálni a VelocityViewServlet ban,-ben web.xml.
Meg kell adnunk az opcionális inicializálási paramétereket, amelyek tartalmazzák sebesség.tulajdonságok és toolbox.xml:
apache-velocity // ... sebesség org.apache.velocity.tools.view.VelocityViewServlet org.apache.velocity.properties /WEB-INF/velocity.properties // ...
Meg kell adnunk ennek a szervletnek a leképezését is. A sebességsablonok összes kérése (* .vm) a sebesség szervletnek kell kiszolgálnia:
sebességelrendezés * .vm
6.2. Erőforrás-betöltő
A Velocity rugalmas erőforrás-betöltő rendszert biztosít. Lehetővé teszi egy vagy több erőforrás-betöltő egyidejű működését:
- FileResourceLoader
- JarResourceLoader
- ClassPathResourceLoader
- URLResourceLoader
- DataSourceResourceLoader
- WebappResourceLoader
Ezek az erőforrás-betöltők itt vannak konfigurálva sebesség.tulajdonságok:
resource.loader = webapp webapp.resource.loader.class = org.apache.velocity.tools.view.WebappResourceLoader webapp.resource.loader.path = webapp.resource.loader.cache = true
7. Sebességsablon
A sebességsablon az a hely, ahol az összes nézetgenerálási logika meg van írva. Ezek az oldalak a Velocity Template Language (VTL) segítségével íródnak:
... ... $ products.size () Akciós termékek!
Büszkék vagyunk arra, hogy ezeket a kiváló termékeket csodálatos áron kínáljuk. ... #set ($ count = 1)
Sorozatszám termék név Ár #foreach ($ termék $ termékben) $ count) $ product.getName () $ product.getPrice () # set ($ count = $ count + 1) # vég
8. Az oldalelrendezés kezelése
A Velocity egyszerű elrendezésvezérlést és testreszabható hibaképernyőket biztosít a Velocity Tool alapú alkalmazáshoz.
VelocityLayoutServlet ezt a képességet foglalja magában a megadott elrendezések megjelenítésére. VelocityLayoutServlet kiterjesztése a VelocityViewServlet.
8.1. Webkonfiguráció
Lássuk, hogyan kell konfigurálni a VelocityLayoutServlet. A kiszolgáló kisalkalmazás a sebességsablon-oldalak kéréseinek elfogására van meghatározva, az elrendezésspecifikus tulajdonságok pedig a sebesség.tulajdonságok fájl:
// ... velocityLayout org.apache.velocity.tools.view.VelocityLayoutServlet org.apache.velocity.properties /WEB-INF/velocity.properties // ... velocityLayout * .vm // ...
8.2. Elrendezési sablonok
Az elrendezési sablon meghatározza a sebesség oldal tipikus felépítését. Alapértelmezés szerint a VelocityLayoutServlet keres Alapértelmezett.vm az elrendezés mappa alatt. Néhány tulajdonság felülírása megváltoztathatja ezt a helyet:
tools.view.servlet.layout.directory = layout / tools.view.servlet.layout.default.template = Alapértelmezett.vm
Az elrendezési fájl fejlécsablonból, láblécsablonból és egy sebességváltozóból áll $ screen_content amely megjeleníti a kért sebesség oldal tartalmát:
Velocity #parse ("/ fragments / header.vm") $ screen_content #parse ("/ fragments / footer.vm")
8.3. Elrendezés specifikáció a kért képernyőn
Egy adott képernyő elrendezése meghatározható sebességváltozóként az oldal elején. Ezt úgy tehetjük meg, hogy ezt a sort betesszük az oldalra:
#set ($ layout = "MyOtherLayout.vm")
8.4. Elrendezés specifikáció a kérelem paraméterben
Hozzáadhatunk egy kérési paramétert a lekérdezési karakterlánchoz layout = MyOtherLayout.vm és a VLS megtalálja, és az alapértelmezett elrendezés keresése helyett az adott elrendezésen belül rendereli a képernyőt.
8.5. Hiba képernyők
A testreszabott hiba képernyő a sebesség elrendezésével valósítható meg. VelocityLayoutServlet két változót nyújt $ error_cause és $ stack_trace hogy bemutassam a kivétel részleteit.
A Hiba oldal itt konfigurálható sebesség.tulajdonságok fájl:
tools.view.servlet.error.template = Hiba.vm
9. Következtetés
Ebben a cikkben megtudtuk, hogy a Velocity hogyan hasznos eszköz a dinamikus weboldalak megjelenítéséhez. Emellett különböző módon láttuk a sebességgel biztosított kiszolgálók használatát.
Van egy cikkünk, amely a Velocity konfigurációra összpontosít a Spring MVC-vel itt, Baeldungban.
Az oktatóanyag teljes kódja elérhető a GitHub oldalon.