Nødvendig viden for at forstå artiklen: Du har allerede mere eller mindre fundet ud af
Java Core og vil gerne se på
JavaEE-teknologier og
webprogrammering . Det ville give mest mening for dig i øjeblikket at studere Java Collections-questen, som omhandler emner tæt på artiklen.
I øjeblikket bruger jeg
IntelliJ IDEA Enterprise Edition (
redaktørens bemærkning: dette er en betalt udvidet version af IDE; den bruges normalt i professionel udvikling). Det er meget nemmere at arbejde med webprojekter i den end i den gratis
Community Edition . I
Enterprise Edition bygger et klik med musen bogstaveligt talt projektet, dropper det i en servlet-beholder, starter serveren og åbner endda en webside for projektet i browseren. I den gratis version af IDEA skulle du gøre meget af dette på egen hånd, altså "manuelt". Jeg bruger
Apache Mavenat bygge projektet og styre dets livscyklus. Jeg brugte kun en lille del af dens muligheder (pakke/afhængighedsstyring) i dette projekt. Som servlet-container/applikationsserver valgte jeg Apache Tomcat version 9.0.12.
Lad os komme igang
Åbn først
IntelliJ IDEA og opret et tomt
Maven-projekt .
Til venstre skal du vælge
Maven , og kontrollere, at
projektets JDK er valgt ovenfor. Hvis den ikke er der, skal du vælge en fra listen eller klikke på
Ny ... og vælge en fra computeren.
I dette vindue skal du angive
GroupId og ArtifactId . GroupId refererer til den unikke identifikator for den virksomhed
, der udsteder projektet. Den almindelige praksis er at bruge virksomhedens domænenavn, men i omvendt rækkefølge. Dog ikke som et spejl. Hvis f.eks. en virksomheds domænenavn er
maven.apache.org , vil dens gruppe-id være
org.apache.maven. Det vil sige, at vi først skriver topdomænet, tilføjer en prik, derefter andet niveaus domæne og så videre. Dette er den almindeligt accepterede tilgang. Hvis du selv "sliber" projektet (og ikke som en del af en virksomhed), så sætter du dit personlige domænenavn her (også i omvendt rækkefølge!). Hvis du har en, selvfølgelig. :) Hvis ikke, så fortvivl ikke. Du kan faktisk
skrive hvad som helst her .
For en virksomhed med domænenavnet john.doe.org vil GroupId være org.doe.john. Denne navnekonvention er nødvendig for at adskille identisk navngivne projekter produceret af forskellige virksomheder. |
I dette eksempel vil jeg bruge et fiktivt domæne:
fatlady.info.codegym.cc . Derfor indtaster jeg
cc.codergym.info.fatlady i
GroupId- feltet.
ArtifactId er simpelthen vores projekts navn. Du kan bruge bogstaver og visse symboler (f.eks. bindestreger) til at adskille ord. Vores "artefakt" vil hedde præcis det, vi skriver her. I dette eksempel vil jeg bruge
mit-superprojekt . Rør ikke versionsfeltet endnu – bare lad det være som det er.
Og her er standard
IDEA-vinduet , når du opretter et nyt projekt. I overensstemmelse med traditionen, lad os kalde det
mit-superprojekt .
Projektet er skabt!
Pom.xml åbnes straks. Dette er en fil med Maven-indstillinger. Hvis vi vil fortælle Maven, hvad hun skal gøre, eller hvor man kan finde noget, beskriver vi alt det i denne pom.xml-fil. Det er placeret i projektets rod. |
Vi ser, at det nu indeholder de nøjagtige data, vi indtastede, da vi oprettede
Maven-projektet :
groupId ,
artifactId og
version (vi rørte ikke ved den sidste).
Vores projekts struktur
Dette
Maven-projekt har en specifik struktur.
Som du kan se, har roden:
- en .idea- mappe, som indeholder det aktuelle projekts IDEA-indstillinger;
- en src- mappe, hvor vi opretter vores kildekode;
- en my-super-project.iml fil, som er en projektfil oprettet af IDEA;
- pom.xml - filen (Maven-projektfilen, som jeg nævnte tidligere), som nu er åben. Hvis jeg nævner pom.xml et eller andet sted, er det denne fil, jeg taler om.
Inde i
src- mappen er der to undermapper:
- main — for vores kode;
- test - for test af vores kode.
I
main og
test er der en
java- mappe. Du kan tænke på disse som den samme mappe, bortset fra at den i
hoved er til kildekode, og den i
test er til testkode. Indtil videre har vi ingen brug for
ressourcemappen . Vi vil ikke bruge det. Men lad det bare blive der.
At transformere det til et webprojekt
Det er tid for os at konvertere vores
Maven-projekt til et webprojekt. For at gøre dette skal du højreklikke på projektets navn i dette træ og vælge
Tilføj rammestøtte ...
Et vindue åbnes, hvor vi kan tilføje støtte til forskellige rammer til vores projekt. Men vi har kun brug for én:
Webapplikation . Og det er den, vi vælger.
Sørg for, at afkrydsningsfeltet
Webapplikation er markeret, og at hovedvinduet angiver, at vi ønsker, at en
web.xml- fil skal oprettes automatisk (jeg anbefaler at markere afkrydsningsfeltet, hvis det ikke allerede er markeret). Vi ser så, at
webmappen er tilføjet vores projektstruktur.
Dette er roden til vores webprojekt med adressen
/
. Med andre ord, hvis vi indtaster '
localhost ' i browseren (når projektet kører, selvfølgelig), så vil det se her, i roden af webprojektet. Hvis vi indtaster
localhost/addUser , så leder den efter en ressource kaldet
addUser i
webmappen .
Det vigtigste, du skal forstå, er, at webmappen er roden til vores projekt, når vi lægger den ind i Tomcat. Vi har en bestemt mappestruktur nu, men i det færdige projekt, vi skal lave, vil det være lidt anderledes. Specifikt vil webmappen være roden. |
I
web , er der en påkrævet mappe kaldet
WEB-INF , hvor
web.xml filen er placeret, dvs. den vi bad programmet om at oprette i sidste trin. Lad os åbne den.
Du kan se, at den ikke har noget interessant i sig endnu, kun en header. Forresten, hvis du ikke har bedt om at få filen oprettet, så skal du oprette den manuelt, dvs. skrive alle overskrifterne ud i hånden. Eller i det mindste søg efter en færdig version på internettet. Hvad skal vi bruge
web.xml til? Til kortlægning. Det er her, vi vil udskrive for
Tomcat , hvilken URL der anmoder om at sende til hvilke servlets. Men det kommer vi til senere. Lad den stå tom indtil videre. Webmappen
har også en
index.jsp-fil. Åben det.
Dette er den fil, der vil blive udført som standard, så at sige. Det er med andre ord præcis, hvad vi vil se, når vi starter projektet. Grundlæggende er
jsp en almindelig
HTML-fil , bortset fra at du kan udføre Java-kode inde i den.
Lidt om statisk og dynamisk indhold
Statisk indhold er indhold, der ikke ændrer sig over tid. Alt, hvad vi skriver i en
HTML-fil, vises uændret, ligesom det er skrevet. Hvis vi skriver "
hej verden ", vil denne tekst blive vist, så snart vi åbner siden, og om 5 minutter, og i morgen, og om en uge og om et år. Det vil ikke ændre sig. Men hvad nu hvis vi vil vise den aktuelle dato på siden? Hvis vi bare skriver "
27. oktober 2017", så i morgen ville vi se den samme dato, og en uge senere og et år senere. Men vi vil gerne have, at datoen er aktuel. Det er her muligheden for at udføre kode direkte på siden er nyttig. Vi kan få en datoobjekt, konverter det til det ønskede format, og vis det på siden. Så, hver dag, når vi åbner siden, vil datoen altid være aktuel. Hvis vi kun har brug for statisk indhold, så mangler vi bare en almindelig webserver og HTML-filer. Vi har ikke brug for Java, Maven eller Tomcat. Men hvis vi vil bruge dynamisk indhold, så har vi brug for alle disse værktøjer. Men for nu, lad os vende tilbage til vores
index.jsp .
Lad os indikere noget andet end standardtitlen, for eksempel "
Min super web-app! " Så lad os i kroppen skrive "
Jeg er i live! " Vi er næsten klar til at starte vores projekt! Desværre er den sædvanlige grønne trekant til at starte programmet ikke aktiv.
Klik på knappen til venstre for den (angivet på skærmen med en rød pil) og vælg
Rediger konfigurationer ... Det åbner et vindue, hvor vi bliver inviteret til at klikke på et grønt plustegn for at tilføje nogle konfigurationer. Klik på den (i øverste venstre hjørne af vinduet).
Vælg
Tomcat Server >
Lokal . Et vindue med mange muligheder åbnes, men standardindstillingerne passer os til næsten alt.
Vi kan give vores konfiguration et smukt navn i stedet for standarden
Unnamed (helt øverst). Vi skal også bekræfte, at IDEA har fundet Tomcat på vores system (du har allerede
downloadet og installeretdet, ikke?). Hvis det ikke blev fundet (hvilket er usandsynligt), skal du trykke på pil ned og vælge, hvor det er installeret. Eller vælg en anden version, hvis du har mere end én installeret. Jeg har kun en og den er allerede installeret. Det er derfor, det ser ud, som det gør på min skærm. Og helt nederst i vinduet ser vi en advarsel, der advarer os om, at der hidtil ikke er angivet nogen artefakter til udrulning til serveren. Til højre for denne advarsel er der en knap, der foreslår, at vi løser dette. Vi klikker på den og ser, at IDEA var i stand til at finde alt selv, oprettede alt, hvad der manglede af sig selv, og konfigurerede alle indstillinger af sig selv.
Vi kan se, at det flyttede os fra fanen
Server til fanen
Deployment under
Implementering ved serverstartsektion, og vi har nu en artefakt, der skal implementeres.
Klik på Anvend og OK. Og vi ser først, at der nederst i vinduet er dukket en sektion op med vores lokale Tomcat-server, hvor vores artefakt vil blive placeret. Skjul dette afsnit ved at klikke på den tilsvarende knap i højre side af vinduet.
Nu ser vi, at den grønne affyringstrekant er aktiv. For dem, der kan lide at dobbelttjekke alt, kan du klikke på knappen for projektindstillinger (til højre for startknapperne, angivet med en rød pil), gå til sektionen Artefakter
og sikre dig, at artefakten virkelig blev oprettet. Det var der ikke, før vi trykkede på den
Fixknappen, men nu er alt OK. Og denne konfiguration passer os perfekt. I en nøddeskal er forskellen mellem
mit-super-project:krig og
mit-super-projekt:krig eksploderet, at
mit-super-projekt:krig kun består af én
krigsfil (som kun er et arkiv) og versionen med
eksploderet er simpelthen den
"udpakkede" krig . Og personligt er det den mulighed, jeg finder mere praktisk, fordi den lader dig hurtigt fejlfinde mindre ændringer på serveren. I bund og grund er
artefaktet vores projekt, lige kompileret - og hvor en mappestruktur er blevet ændret for at tillade Tomcat at få direkte adgang til det. Det kommer til at se sådan ud:
Nu er alt klar til at lancere vores projekt. Tryk på den dyrebare grønne startknap og nyd resultatet! :)
GO TO FULL VERSION