háborús fájl szerkezet

A webszerverre feltöltött webalkalmazások egyetlen .war fájlba vannak csomagolva. A WAR ma a Web Application Resources rövidítése, bár korábban Webarchívum volt. Valójában ez egy zip-archívum, amely csomagolt webalkalmazást tartalmaz.

Így néz ki egy háborús fájl tipikus tartalma:

/index.html
/guestbook.jsp
/images/logo.png
/js/jquery.js
/WEB-INF/web.xml
/WEB-INF/classes/com/codegym/Util.class
/WEB-INF/classes/com/codegym/MainServlet.class
/WEB-INF/classes/application.properties
/WEB-INF/lib/util.jar
/META-INF/MANIFEST.MF

A háborús fájlban statikus webes források találhatók , például .html, .css, .js fájlok stb. Ezenkívül lehetnek képek, videók és általában bármilyen fájl. Lehetnek a gyökérben vagy az almappákban, nem számít. A Tomcat egyszerűen kiszolgálja őket, ha kérik.

Tegyük fel, hogy a webalkalmazásod apple néven van betöltve a webszerverre, majd a http://localhost/apple/images/logo.png kérésekor a Tomcat az /images/logo.png fájlt adja vissza .

Külön érdemes megjegyezni a WEB-INF mappát . Úgy tervezték, hogy Java kódot tároljon benne. A Tomcat nem adja ki a tartalmát.

/WEB-INF/osztályok/ könyvtár a lefordított nem JAR Java osztályokhoz, beleértve a servlet osztályokat és az erőforrásfájlokat, amelyekre a betöltőnek szüksége van az alkalmazás futtatása előtt
/WEB-INF/lib/ tégelykönyvtárak tárolására szolgáló hely
/WEB-INF/web.xml telepítési leíró

háborús fájlszerkezet és maven projekt

Most térjünk át a Maven projekt könyvtárhierarchiájára. A teljes katalógus elrendezést a hivatalos kézikönyvben tekintheti meg. Itt egy kissé lerövidített változatban ismerkedünk meg vele, a tesztforrások nélkül. Tehát a szabványos Maven könyvtárhierarchia így néz ki:

src/main/java alkalmazásosztályok és könyvtárak forráskódjai az általánosan elfogadott csomaghierarchiának megfelelően
src/main/resources alkalmazási erőforrás fájlok: adatbázisbeállítások, lokalizációs fájlok stb.
src/main/webapp webalkalmazás-erőforrások (JSP-fájlok, szövegfájlok, szkriptek stb.)

Amint láthatja, jelentősen eltér az ismert WAR-fájl szerkezetétől. De ami valójában történik egy webalkalmazás fordításakor, az az, hogy egyszerűen áthelyezzük és összefűzzük a fájlokat a Java EE specifikációjában meghatározott struktúrába.

Az src/main/webapp könyvtár határozza meg a webalkalmazás kontextusgyökérét (kiszolgálóra telepítve a kontextusgyökér megegyezik a WAR fájl nevével), és már tartalmazza a WEB-INF könyvtárat. Vagyis az src/main/webapp tartalma teljesen átkerül a webalkalmazásba.

Az összes Java-osztályt osztályfájlokba fordítják, és csomagstruktúrájukat megtartva a /WEB-INF/classes/ könyvtárba kerülnek . A fent definiált Maven pom.xml függőségekben definiált, benne foglalt könyvtárak JAR-jai a /WEB-INF/lib/ könyvtárba kerülnek .

Az alkalmazás-erőforrások src/main/resources átkerülnek az alkalmazás osztályútvonalába, pontosan ugyanabba a /WEB-INF/classes/ könyvtárba .

A teljes egyértelműség érdekében nézze meg ezt a diagramot, amely segít megérteni, hogyan és mi hová megy egy projekt felépítése során:

háborús fájl eszköz