Sobes.tech
Junior

É possível definir uma classe dentro de uma página JSP?

sobes.tech IA

Resposta da IA

Sim, é possível, usando a tag <%!...%>, que é chamada de "declaração".

<%!
    // Definição de uma classe estática
    public static class MyStaticHelper {
        public static String sayHello(String name) {
            return "Olá, " + name + "!";
        }
    }

    // Definição de uma classe não estática (aninhada)
    public class MyInnerHelper {
        public String greet(String name) {
            return "Saudações da classe interna, " + name + "!";
        }
    }
%>

<%
    // Uso da classe estática
    String greeting = MyStaticHelper.sayHello("Mundo");
    out.println(greeting);

    // Uso da classe não estática
    MyInnerHelper innerHelper = new MyInnerHelper();
    String innerGreeting = innerHelper.greet("Java");
    out.println(innerGreeting);
%>

No entanto, essa abordagem é considerada uma má prática pelos seguintes motivos:

  • Baixa legibilidade e manutenção: Misturar lógica (código Java) e apresentação (HTML, JSP) torna o código difícil de entender e modificar.
  • Dificuldades de teste: O código definido na declaração JSP é mais difícil de isolar para testes unitários.
  • Reutilização: A classe definida em um JSP não está acessível de outros JSPs ou outras partes da aplicação.
  • Violação dos princípios MVC: JSP deve ser responsável pela apresentação dos dados, não pela lógica de negócios ou definição de classes.

Uma abordagem mais preferível é definir classes em arquivos .java separados e usá-las no JSP através de import ou usando JavaBeans e EL (Expression Language).