Junior
Je možné definovať triedu vnútri stránky JSP?
sobes.tech AI
Odpoveď od AI
Áno, je to možné pomocou značky <%!...%>, ktorá sa nazýva "deklarácia".
<%!
// Definícia statickej triedy
public static class MyStaticHelper {
public static String sayHello(String name) {
return "Ahoj, " + name + "!";
}
}
// Definícia nestatickej (vnorenej) triedy
public class MyInnerHelper {
public String greet(String name) {
return "Pozdravy z vnútornej triedy, " + name + "!";
}
}
%>
<%
// Použitie statickej triedy
String greeting = MyStaticHelper.sayHello("Svet");
out.println(greeting);
// Použitie nestatickej triedy
MyInnerHelper innerHelper = new MyInnerHelper();
String innerGreeting = innerHelper.greet("Java");
out.println(innerGreeting);
%>
Tento prístup je však považovaný za zlú prax z nasledujúcich dôvodov:
- Nízka čitateľnosť a údržba: Miešanie logiky (Java kód) a prezentácie (HTML, JSP) robí kód ťažko pochopiteľným a upraviteľným.
- Ťažkosti pri testovaní: Kód definovaný v deklarácii JSP je ťažšie izolovať pre jednotkové testy.
- Opätovné použitie: Trieda definovaná v JSP nie je dostupná z iných JSP alebo iných častí aplikácie.
- Porušenie princípov MVC: JSP by mal byť zodpovedný za prezentáciu dát, nie za biznis logiku alebo definíciu tried.
Lepší prístup je definovať triedy v samostatných .java súboroch a používať ich v JSP cez import alebo prostredníctvom JavaBeans a EL (Expression Language).