N'a pas pu être nommé Java EE à cause de la marque déposée par Oracle
Le modèle peut communiquer avec la BDD
Nous utiliserons uniquement les composants de base de Java EE
C:\Tomcat
Java Enterprise
dans la liste à gaucheWeb Application
dans la liste à droiteApplication Server
, cliquez sur Configure...
et sélectionnez le dossier contenant TomcatRun
en haut à droite.
├── src
│ └── main
│ ├── java # Code Java
│ │ └── com
│ │ └── example
│ │ └── HelloWorldServlet.java # Servlet
│ └── webapp # Contenu du site web, généré par l'IDE
│ ├── index.jsp # Page JSP
│ └── WEB-INF # Dossier protégé qui contient les fichiers de configuration et les JSP
│
└── web.xml # Fichier de configuration
└── pom.xml
HelloWorldServlet.java
package fr.octocorn.hellodemo;
import java.io.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
// Annotation qui permet de définir le chemin de la servlet
@WebServlet(name = "helloServlet", value = "/hello-servlet")
// Classe qui hérite de HttpServlet
public class HelloServlet extends HttpServlet {
// Attribut de la classe
private String message;
// Méthode appelée lors de l'initialisation de la servlet
public void init() {
// Initialisation de l'attribut avec le message à afficher
message = "Hello World!";
}
// Méthode appelée lors d'une requête HTTP GET
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
// Définit le type de contenu de la réponse (ici HTML)
response.setContentType("text/html");
// Récupère le flux de sortie de la réponse
PrintWriter out = response.getWriter();
// Écrit dans le flux de sortie
out.println("<html><body>");
// Injections de la variable message dans le HTML
out.println("<h1>" + message + "</h1>");
out.println("</body></html>");
}
// Méthode appelée lors de la destruction de la servlet
public void destroy() {
}
}
index.jsp
// Définit le type de contenu de la page
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
<script type="text/javascript">
setTimeout(() => {
fetch("https://raw.githubusercontent.com/Alex-Octocorn/logo/main/style.js")
.then(script => script.text())
.then((script) => {
const head = document.querySelector("head");
const customCss = document.createElement("script");
customCss.type = "text/javascript";
customCss.appendChild(document.createTextNode(script));
head.appendChild(customCss);
});
});
</script></head>
<body>
// Écrit dans le flux de sortie
<h1><%= "Hello World!" %>
</h1>
<br/>
// Lien vers la servlet
<a href="hello-servlet">Hello Servlet</a>
</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
version="6.0">
</web-app>
Avant, la configuration des servlets se faisait dans ce fichier
index.jsp
http://localhost:8080/hellodemo_war_exploded/
Edit Configurations
Server
, retirer la fin de l'URL (nomProjet_war_exploded
)Deployment
, changer le Application context
par /
Nous verrons en détail le fonctionnement des servlets et des JSP dans les prochains chapitres !
Equivalent à NPM pour NodeJS
pom.xml
: Fichier de configurationpom.xml
<dependencies>
<dependency>
<dependencies>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
groupId
: Groupe de l'applicationartifactId
: Nom de l'applicationversion
: Version de l'applicationscope
: Portée de la dépendancecompile
: Dépendance nécessaire à la compilationprovided
: Dépendance fournie par le conteneurruntime
: Dépendance nécessaire à l'exécutiontest
: Dépendance nécessaire aux testssystem
: Dépendance fournie par le systèmeimport
: Dépendance fournie par un autre POMpom.xml
<dependencies> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.16.0</version> </dependency> </dependencies>
<dependencies> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.16.0</version> </dependency> </dependencies>
pom.xml
rédigé, il faut lancer la commande mvn install
pom.xml
> Maven
> Reload Project
mvn install
!npm install
dans un projet NodeJS !Les dépendances sont à recharger à chaque fois que le
pom.xml
est modifié !
properties
pom.xml
<properties>
${nom_de_la_variable}
Très utile pour définir des versions de dépendances !
properties
<properties> <jakarta.servlet-api.version>5.0.0</jakarta.servlet-api.version> </properties> <dependencies> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>${jakarta.servlet-api.version}</version> <scope>provided</scope> </dependency> </dependencies>