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

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
dad2:jsp [2024/02/13 10:54] thejuanvisudad2:jsp [2024/02/21 12:21] (actual) thejuanvisu
Línea 14: Línea 14:
 {{:dad2:pasted:20240213-105417.png}} {{:dad2:pasted:20240213-105417.png}}
 </WRAP> </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.1707821675.txt.gz · Última modificación: 2024/02/13 10:54 por thejuanvisu