Scriplets en una aplicación web con Java

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Hola mundo con Scriptlet

Hola mundo con Scriptlet

Comentarios

<h1>Página con comentarios</h1>
<%
//Esto es un comentario de una sola línea
/*
* y esto un comentario de varias líneas
*/
%>

Variables en Scriplet

<h1>JSP Scriplet</h1>
<%
 String texto = "Soy una cadena";
 int i = 5;
 int j = 3;
%>
<%=texto %><br/>
<%=i %>+<%=j %>=<br/>
<%=i+j %><br/>
<%=i+""+j %>

El contenedor transforma un JSP en un servlet

JSP   Servlet

   public class basicCounter_jsp extends SomeSpecialHttpServlet{
    public void _jspService(HttpServletRequest request,
    HttpServletResponse response) 
    throws java.io.IOException, ServletException{
     PrintWriter out = response.getWriter();
     response.setContenType("text/html");
<html><body>  ->    out.println("<html><body>");
<% int count=0; %>  ->   int count = 0;  
This page count is now: ->   out.write("This page count is now:");
<%= ++ count %>  ->   out.print(++count);
</body></html>  ->   out.write("</body></html>");

Todo el código de un scriplet cae dentro del método service.

Por tanto, las variables declaradas en un scriplet son locales.

Declaración de variables y métodos miembro

Todo lo que vaya precedido de una admiración irá declarado directamente dentro de la clase, por tanto usaré el signo de exclamación para declarar variables miembro y métodos

<html>       
<body>     public class basicCounter_jsp extends SomeSpecialHttpServlet{
<%! int doubleCount(){    int doubleCount(){  
 count = count*2;   count = count*2;
 return count;    return count;
}     }
%>
<%! int count=1; %>    int count=1;
     public void _jspService(HttpServletRequest request,
      HttpServletResponse response throws java.io.IOException){
      PrintWriter out = response.getWriter();
      response.setContentType("text/html");
      out.write("<html><body>");
The page count is now:    out.write("The page count is now:");
<%= doubleCount() %>    out.print(doubleCount());
</body>      out.write("</body></html>");
</html>

Objetos implícitos

JspWriter   -> out
HttpServletRequest  -> request
HttpServletResponse -> response
HttpSession   -> session
ServletContext   -> application
ServletConfig  -> config
Throwable  -> exception

JSP API

jspInit(); -> ejecutado al cargar el jsp

jspDestroy();   -> ejecutado tras cargar el jsp

_jspService();  -> desde aquí se llama al código del jsp.

Desventajas de los scriplets

  • Son difíciles de comprender por alguien que no sea programador java.
  • Es necesario hacer el Casting de objetos y esto ocasiona que tengamos que importar más Clases en los JSP. En el siguiente ejemplo habrá que importar la clase Libro.
<% Libro libro = (Libro)request.getAttribute("libro"); %>
<%=libro.getTitulo()%><br/>
← Scriplets en una aplicación web con Java
EL (Expresion Language en JSP) →