Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


dad2:jsp

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
dad2:jsp [2024/02/13 10:39] – creado thejuanvisudad2:jsp [2024/02/21 12:21] (actual) thejuanvisu
Línea 3: Línea 3:
 Busca separar la lógica de la aplicación de la lógica de presentación. Busca separar la lógica de la aplicación de la lógica de presentación.
 Tenemos páginas compiladas por el servidor que se ejecutan en este. Se invocan como páginas normales y precisan que el servidor entienda JSP. Tenemos páginas compiladas por el servidor que se ejecutan en este. Se invocan como páginas normales y precisan que el servidor entienda JSP.
 +{{drawio>dad2:jspDiagrama.png}}
  
 +===== Implementación =====
 +En la ruta src/main/webapp/WEB-INF crearemos el archivo Index.jsp:
 +<WRAP>
 +{{:dad2:pasted:20240213-105332.png}}
 +</WRAP>
 +Tras eso se nos generará el siguiente archivo:
 +<WRAP>
 +{{:dad2:pasted:20240213-105417.png}}
 +</WRAP>
 +A este archivo podemos añadir código de java introduciéndolo entre "<% %>":
 +<WRAP>
 +{{:dad2:pasted:20240213-105759.png}}
 +</WRAP>
 +<code html>
 +<%
 +out.println("patata");
 +%>
 +</code>
 +
 +===== Otros Ejemplos =====
 +<code html ejemplo.jsp>
 +<body>
 +  El resultado de 5*6 es: <h1><%=5*6%></h1>
 +  <%for (int i=0; i<=4;i++)%>
 +    <%=i%> * 10 = <% i*10%><br>
 +</body>
 +</code> 
 +
 +===== Etiquetas de JSP =====
 +
 +<code html>
 +<%@ Directiva de configuración de la página%>
 +  <%@ page errorPage = "error.jsp"%>
 +
 +<%! Declaración de variables y funciones%>
 +  <%! int i=0; %>
 +  
 +<%Bloque de código Java%>
 +  <%for(i=0;i<5;i++){%> <%}%>
 +  
 +  
 +</code>
 +
 +===== Modificaciones del web.xml para declaración de servlet =====
 +<code xml web.xml>
 +<Servlet>
 +  <servlet-name>Servlet<servlet-name>//nombre del servlet
 +  <servlet-class>paquete.paqueton.servlets.ImplementacionServlet<servlet-class>//Clase que lo implementa
 +</servlet>
 +<servlet-mapping>
 +  <servlet-name>Servlet</servlet-name>
 +  <url-pattern>/servlet</url-pattern>
 +</servlet-mapping>
 +</code>
 +
 +===== Modelo Vista Controlador (MVC) y Paso de Atributos =====
 +Esta parte se centra en la capa de negocio.
 +==== Control ====
 +Es un servlet único que recibirá todas las peticiones y las redirigirá a otra clase. Este servlet comprueba los permisos e invoca las funciones o modelos correspondientes. Para interactuar con el control se usa la URL seguida de un "?" y un "ACTION_ID" que indique la acción a realizar:
 +<code>
 +http://localhost:8080/contexto/control?ACTION_ID=LEER_CORREO
 +</code>
 +En esta URL sería Control el Servlet que controla todas las peticiones y LEER_CORREO el identificador de modelo o acción a ejecutar.
 +
 +==== Modelo ====
 +Realiza toda la funcionalidad, se podría decir que es una clase padre de la que heredan todas las demás. Suele haber varios modelos dentro de una aplicación.
 +{{drawio>dad2:ModeloPadre.png}}
 +===== Implementación MVC =====
 +El proyecto seguirá la siguiente estructura en la que separaremos por un lado el servlet control y por otro lado las clases:
 +<WRAP>
 +{{:dad2:pasted:20240221-115509.png}}
 +</WRAP>
 +==== Servlet Control ====
 +
 +<code java Control.java>
 +package clases;
 +
 +import jakarta.servlet.ServletConfig;
 +import jakarta.servlet.ServletException;
 +import jakarta.servlet.annotation.WebServlet;
 +import jakarta.servlet.http.HttpServlet;
 +import jakarta.servlet.http.HttpServletRequest;
 +import jakarta.servlet.http.HttpServletResponse;
 +import java.io.IOException;
 +import java.util.Hashtable;
 +
 +import acciones.Accion;
 +import acciones.InsertarUsuario;
 +
 +/**
 + * Servlet implementation class Control
 + */
 +public class Control extends HttpServlet {
 + private static final long serialVersionUID = 1L;
 + private Hashtable<String, Accion> acciones; //Tabla hash
 +
 + public static final String PARAM_ACTION_ID = "ID_ACCION";
 +       
 +    /**
 +     * @see HttpServlet#HttpServlet()
 +     */
 +    public Control() {
 +        super();
 +        // TODO Auto-generated constructor stub
 +    }
 +    
 + 
 + @Override
 + public void init(ServletConfig config) throws ServletException {
 + // TODO Auto-generated method stub
 +
 + super.init(config);
 + this.acciones = new Hashtable<String, Accion>();//Tabla de acciones
 + this.acciones.put("INSERTAR_USUARIO", new InsertarUsuario());//insertamos accion en tabla hash
 + }
 +
 +
 + /**
 + * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 + */
 + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 + String jsp = "index.jps";
 + String paramIdAccion = request.getParameter(Control.PARAM_ACTION_ID);//recibimos como parametro el ID de accion
 + Accion accion = this.acciones.get(paramIdAccion);//Obtenemos la accion a realizar de la tabla hash
 + jsp = accion.ejecutar(request, response);//Nos devuelve la JSP a la que hay que ir para realizar la acción
 + request.getRequestDispatcher(jsp).forward(request, response);
 + }
 +
 + /**
 + * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 + */
 + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 + // TODO Auto-generated method stub
 + doGet(request, response);
 + }
 +
 +}
 +
 +</code>
 +
 +==== Clase Accion ====
 +
 +<code java Accion.java>
 +package acciones;
 +
 +import jakarta.servlet.http.HttpServlet;
 +import jakarta.servlet.http.HttpServletRequest;
 +import jakarta.servlet.http.HttpServletResponse;
 +
 +public abstract class Accion {
 + //Esta es la clase Padre
 + public abstract String ejecutar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;
 +
 +}
 +
 +</code>
 +
 +==== Clase InsertarUsuario ====
 +<code java InsertarUsuario.java>
 +package acciones;
 +import java.io.IOException;
 +
 +import jakarta.servlet.ServletException;
 +import jakarta.servlet.http.HttpServletRequest;
 +import jakarta.servlet.http.HttpServletResponse;
 +
 +public class InsertarUsuario extends Accion {
 +
 + @Override
 + public String ejecutar(HttpServletRequest request, HttpServletResponse response)
 + throws ServletException, IOException {
 +
 + System.out.println("Toda la funcionalidad de insertar usuario");
 +
 + return "destino.jsp";
 + }
 +
 +}
 +
 +
 +</code>
 +
 +==== index.jsp ====
 +<code html index.jsp>
 +<%@page import="clases.Control"%>
 +<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 +    pageEncoding="ISO-8859-1"%>
 +<!DOCTYPE html>
 +<html>
 +<head>
 +<meta charset="ISO-8859-1">
 +<title>Insert title here</title>
 +</head>
 +<body>
 +<a href="control?<%= Control.PARAM_ACTION_ID %>=INSERTAR_USUARIO">Insertar</a>
 +</body>
 +</html>
 +</code>
 +
 +==== destino.jsp ====
 +
 +<code html destino.jsp>
 +<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 +    pageEncoding="ISO-8859-1"%>
 +<!DOCTYPE html>
 +<html>
 +<head>
 +<meta charset="ISO-8859-1">
 +<title>Insert title here</title>
 +</head>
 +<body>
 +Destinooo
 +</body>
 +</html>
 +</code>
dad2/jsp.1707820794.txt.gz · Última modificación: 2024/02/13 10:39 por thejuanvisu