CodeGym/Java tanfolyam//Háborús projekt építése

Háborús projekt építése

Szint, Lecke
Elérhető

A háborús és a jar fájlok közötti különbségek

Valójában a jar könyvtár csak egy zip archívum , amely közvetlenül a nevéből következik: Java Archive . Leggyakrabban csak négy dolgot tartalmaz:

  • összeállított osztályok;
  • erőforrások: tulajdonságfájlok és hasonlók;
  • manifeszt MANIFEST.MF;
  • egyéb jar könyvtárak (ritka).

Egy ilyen archívum tipikus felépítése így néz ki:

  META-INF/
  	MANIFEST.MF
  com/
  	codegym/
	      MyApplication.class
  application.properties

Most nézzünk egy tipikus háborús aktát. A háború egyébként nem a háború szóból van, hanem a W eb Archívumból . A háborús akták felépítése általában bonyolultabb. Leggyakrabban két részből áll:

  • Java rész
    • osztályokat állított össze
    • erőforrások a java osztályokhoz: tulajdonságfájlok és hasonlók
    • egyéb jar könyvtárak (gyakran)
    • manifeszt MANIFEST.MF
  • web rész
    • web-xml – webszolgáltatás-telepítési leíró
    • jsp szervletek
    • statikus webes erőforrások: HTML, CSS, JS fájlok

Példa egy tipikus háborús fájlra:

META-INF/
    MANIFEST.MF
WEB-INF/
    web.xml
    jsp/
    	helloWorld.jsp
    classes/
    	static/
    	templates/
    	application.properties
    lib/
    	// *.jar files as libs

Fontos! jar fájl futtatható csak egy java gépen, de egy war fájl futtatásához fel kell tölteni egy webszerverre. Nem indul el magától.

war file plugin a maven-war-plugin-nal

Képzeljük el, hogy van egy egyszerű webprojektünk. Legyen a projekt egy ilyen fájlszerkezetet, hogyan állítsuk össze?

|-- pom.xml
 `-- src
 	`-- main
     	|-- java
     	|   `-- com
     	|   	`-- example
     	|       	`-- projects
     	|           	`-- SampleAction.java
     	|-- resources
     	|   `-- images
     	|   	`-- sampleimage.jpg
     	`-- webapp
         	|-- WEB-INF
         	|   `-- web.xml
         	|-- index.jsp
         	`-- jsp
             	`-- websource.jsp

Először is meg kell mondanunk a Mavennek, hogy mindezt háborús fájlként építse fel, ehhez van egy <package> címke , például:

	<project>
  	...
      <groupId>com.example.projects</groupId>
      <artifactId>simple-war</artifactId>
  	<packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
  	<name>Simple War Project</name>
      <url>http://codegym.cc</url>
  	...
    </project>

Másodszor, bele kell foglalnunk a maven-war-plugin beépülő modult . Példa:

  <build>
	<plugins>
  	<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
    	<version>3.3.2</version>
    	<configuration>
          <webappDirectory>/sample/servlet/container/deploy/directory</webappDirectory>
    	</configuration>
      </plugin>
    </plugins>
  </build>

Itt egyszerűen meghatározunk egy bővítményt, amely a jövőben konfigurálható. Ezenkívül a webappDirectory címke használatával újradefiniáljuk azt a könyvtárat, amelybe a projektet telepíteni kell. Most bővebben elmondom, miről beszélek.

A bővítmény két felépítési módra állítható be (kétféle cél):

  • háború: háború
  • háború: felrobbant

Az első esetben az eredményül kapott háborús fájl egyszerűen a célmappába kerül , és az <artifactId>-<version>.war nevet kapja .

De lehet „kérni” a bővítményt, hogy a háborús fájl tartalma abban az állapotban kerüljön a végső mappába, amelyben a benne lévő webszerver kicsomagolja. Ehhez a goal war:exploded használatos .

A második megközelítést gyakran használják, ha közvetlenül az Intellij IDEA-ból fut vagy hibakeres egy projektet.

Mellesleg, a fenti példában a webappDirectory címke lehetővé teszi, hogy újradefiniáld azt a könyvtárat, ahová a háborús fájlod ki lesz csomagolva, amikor war:exploded módban építkezel.

A plugin egyéb beállításairól a hivatalos oldaláról tájékozódhat .

Webes alkalmazás készítése SpringBoot alapján

Nos, egy igazi összeszerelési példát szeretnék szétszedni. Ne legyünk apróságok, és vegyük ezt fontolóra egy SpringBoot alapú példaalkalmazás segítségével.

Első lépés. Hozzon létre egy üres Maven webprojektet az IDEA segítségével.

Második lépés. Adja hozzá a tavaszi függőségeket a pom.xml fájlhoz.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

Harmadik lépés. Hozzon létre egy com.codegym.spring.MainController osztályt . Az src/main/java mappába kell helyezni :

@Controller
public class MainController {

	@GetMapping("/")
    public String viewIndexPage(Model model) {
        model.addAttribute("header", "Maven Generate War");
    	return "index";
	}
}

Itt 3 dolog van leírva. Először is, a @Controller annotáció közli a SpringBoot keretrendszerrel, hogy ezt az osztályt fogják használni a bejövő webes kérések kiszolgálására.

Másodszor, a @GetMapping annotáció azt jelzi, hogy a metódusunkat a rendszer meghívja egy GET kérés kiszolgálására a gyökér URI-n - /

Harmadszor, a metódus az "index" karakterláncot adja vissza . Ez arra utasítja a SpringBoot keretrendszert, hogy válaszként adja vissza az index.html fájl tartalmát .

Negyedik lépés. Hozzá kell adnia egy index.html fájlt a projekthez a következő tartalommal:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
    <!-- Bootstrap core CSS -->
    <link th:href="@{/css/bootstrap.min.css}" rel="stylesheet">
</head>
<body>
    <nav class="navbar navbar-light bg-light">
    	<div class="container-fluid">
        	<a class="navbar-brand" href="#">
            	CodeGym Tutorial
        	</a>
    	</div>
    </nav>
    <div class="container">
    	<h1>[[${header}]]</h1>
    </div>
</body>
</html>

Ez nem csak html. Mielőtt a tartalmát átadná az ügyfélnek, a Thymeleaf keretrendszer módosítja a szerveren . Ebbe a fájlba speciális címkék vannak beágyazva, amelyek lehetővé teszik a Thymeleaf könyvtár számára, hogy feldolgozza és módosítsa az oldal tartalmát.

A piros színű címkék a Thymeleaf könyvtár által feldolgozott címkék, a zöldek a Bootstrap CSS könyvtár stílusai.

Ötödik lépés. Állítsa be a beépülő modult a pom.xml fájlban:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.3.1</version>
</plugin>

Kicsit túlbecsültem az erőmet. Sok időbe telik egy egyszerű példa teljes elemzése. De letöltheti a projekt teljes kódját a GitHubról, és megpróbálhatja megérteni. Egyébként a munkaidőd 80%-át te csinálod :)

A teljes kódot letöltheti a GitHub linkjéről .

Hozzászólások
  • Népszerű
  • Új
  • Régi
Hozzászólás írásához be kell jelentkeznie
Ennek az oldalnak még nincsenek megjegyzései