Junior
Peut-on définir une classe à l'intérieur d'une page JSP?
sobes.tech IA
Réponse de l'IA
Oui, c'est possible en utilisant la balise <%!...%>, appelée "déclaration".
<%!
// Définition d'une classe statique
public static class MyStaticHelper {
public static String sayHello(String name) {
return "Bonjour, " + name + "!";
}
}
// Définition d'une classe non statique (imbriquée)
public class MyInnerHelper {
public String greet(String name) {
return "Salutations de la classe interne, " + name + "!";
}
}
%>
<%
// Utilisation de la classe statique
String greeting = MyStaticHelper.sayHello("Monde");
out.println(greeting);
// Utilisation de la classe non statique
MyInnerHelper innerHelper = new MyInnerHelper();
String innerGreeting = innerHelper.greet("Java");
out.println(innerGreeting);
%>
Cependant, cette approche est considérée comme une mauvaise pratique pour les raisons suivantes :
- Lisibilité et maintenabilité faibles : Mélanger logique (code Java) et présentation (HTML, JSP) rend le code difficile à comprendre et à modifier.
- Difficultés de test : Le code défini dans la déclaration JSP est plus difficile à isoler pour les tests unitaires.
- Réutilisation : La classe définie dans un JSP n'est pas accessible depuis d'autres JSP ou autres parties de l'application.
- Violation des principes MVC : JSP doit gérer la présentation des données, pas la logique métier ou la définition de classes.
Une approche plus recommandée consiste à définir des classes dans des fichiers .java séparés et à les utiliser dans JSP via import ou en utilisant JavaBeans et EL (Expression Language).