Sobes.tech
Junior

Kann man eine Klasse innerhalb einer JSP-Seite definieren?

sobes.tech KI

Antwort von AI

Ja, das ist möglich, indem man das Tag <%!...%> verwendet, das als "Deklaration" bezeichnet wird.

<%!
    // Definition einer statischen Klasse
    public static class MyStaticHelper {
        public static String sayHello(String name) {
            return "Hallo, " + name + "!";
        }
    }

    // Definition einer nicht-statischen (innere) Klasse
    public class MyInnerHelper {
        public String greet(String name) {
            return "Grüße von der inneren Klasse, " + name + "!";
        }
    }
%>

<%
    // Verwendung der statischen Klasse
    String greeting = MyStaticHelper.sayHello("Welt");
    out.println(greeting);

    // Verwendung der nicht-statischen Klasse
    MyInnerHelper innerHelper = new MyInnerHelper();
    String innerGreeting = innerHelper.greet("Java");
    out.println(innerGreeting);
%>

Diese Vorgehensweise gilt jedoch als schlechte Praxis aus folgenden Gründen:

  • Geringe Lesbarkeit und Wartbarkeit: Die Vermischung von Logik (Java-Code) und Präsentation (HTML, JSP) macht den Code schwer verständlich und änderbar.
  • Schwierigkeiten bei Tests: Der in der JSP-Deklaration definierte Code ist schwer zu isolieren für Unit-Tests.
  • Wiederverwendbarkeit: Die in einer JSP definierte Klasse ist nicht aus anderen JSPs oder Teilen der Anwendung zugänglich.
  • Verstoß gegen MVC-Prinzipien: JSP sollte für die Darstellung der Daten verantwortlich sein, nicht für die Geschäftslogik oder Klassendefinitionen.

Eine bevorzugte Methode ist, Klassen in separaten .java-Dateien zu definieren und sie in JSPs mittels Import oder durch Verwendung von JavaBeans und EL (Expression Language) zu nutzen.