Sobes.tech
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).