¿Qué es un Servlet?
Se le llama así a una de las tecnologías proporcionadas por Java que generan componentes independientes que serán empleados en aplicaciones web, estos tienen acceso completo a las API de Java y las bibliotecas de HTTP. Los servlets están intimanente ligados a la plataforma y el servidor.¿Cómo crear un Servlet en NetBeans?
Seguir los pasos:¿Qué debemos modificar?
Cambiar el nombre de acuerdo a la función que hará o tabla que dará mantenimiento, colocarlo por preferencia en un paquete que contendrá a los servlets, en algunos casos podemos llamarlos controllers haciendo referencia al patrón MVC.Modificar el alias del Servlet a uno que no incluya la terminación servlet y finalizar.
Código de ejemplo
Teniendo como base a la tabla "Inquilinos"(clic aquí para ver el DTO) a la que le realizaremos un mantenimiento (CRUD) teniendo como DAO a "DaoInquilinos" y su correspondiente implementación (clic aquí para ver el DAO).Además, las pruebas a las funciones declaradas en el DAO (clic aquí para ver el DAO).Crearemos dos paquetes dentro del paquete web que serán "servlet" y "validator", dentro crearemos respectivamente el servlet llamado "InquilinosServlet" y una clase de apoyo llamada "InquilinosValidator", esta untima clase nos sirve para reducir la cantidad de código en el Servlet y poder tener mejor mantenimiento de este, por lo tanto es opcional.
Tendríamos el código de "InquilinosValidator" considerando las funciones que declaramos en el DAO, de la siguiente forma:
package web.validator;
import biblioteca.DeString;
import dao.DaoInquilinos;
import dao.impl.DaoInquilinosImpl;
import dto.Inquilinos;
import java.time.LocalDate;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
public class InquilinosValidator {
private final HttpServletRequest request;
private final DaoInquilinos daoInquilinos;
public InquilinosValidator(HttpServletRequest request) {
this.request = request;
this.daoInquilinos = new DaoInquilinosImpl();
}
public String inquilinosSel() {
String result = null;
List<Inquilinos> list = daoInquilinos.inquilinosSel();
if (list != null) {
request.setAttribute("list", list);
} else {
result = daoInquilinos.getMessage();
}
return result;
}
public String inquilinosGet() {
String result = null;
Integer idinquilino = DeString.aInteger(request.getParameter("idinquilino"));
Inquilinos inquilino = daoInquilinos.inquilinosGet(idinquilino);
if (inquilino != null) {
request.setAttribute("inquilino", inquilino);
} else {
result = daoInquilinos.getMessage();
}
return result;
}
public String inquilinosInsUpd(boolean upd) {
StringBuilder result = new StringBuilder("<ul>");
Integer idinquilino = DeString.aInteger(request.getParameter("idinquilinos"));
String dni = request.getParameter("dni");
String nombres = request.getParameter("nombres");
String paterno = request.getParameter("paterno");
String materno = request.getParameter("materno");
String telefono = request.getParameter("telefono");
LocalDate fecha_ingreso = LocalDate.parse(request.getParameter("fecha_ingreso"));
String correo = request.getParameter("correo");
Double deuda = DeString.aDouble(request.getParameter("deuda"));
if (upd && idinquilino == null) {
result.append("<li>Id requerido</li>");
}
if (nombres == null || nombres.trim().length() == 0) {
result.append("<li>Nombre requerido</li>");
} else if (nombres.trim().length() < 3 || nombres.trim().length() > 50) {
result.append("<li>La dimensión del nombre debe estar entre")
.append("3 a 50 caracteres</li>");
}
if (paterno == null || paterno.trim().length() == 0) {
result.append("<li>Apellido paterno requerido</li>");
} else if (paterno.trim().length() < 3 || paterno.trim().length() > 50) {
result.append("<li>La dimensión del apellido paterno debe estar entre")
.append("3 a 50 caracteres</li>");
}
if (materno == null || materno.trim().length() == 0) {
result.append("<li>Apellido materno requerido</li>");
} else if (materno.trim().length() < 3 || materno.trim().length() > 50) {
result.append("<li>La dimensión del apellido materno debe estar entre")
.append("3 a 50 caracteres</li>");
}
if (fecha_ingreso == null) {
result.append("<li>Fecha requerida</li>");
}
if (deuda < 0d) {
result.append("<li>La deuda no puede ser negativa</li>");
}
Inquilinos inquilino = new Inquilinos();
inquilino.setIdinquilinos(idinquilino);
inquilino.setDni(dni);
inquilino.setNombres(nombres);
inquilino.setPaterno(paterno);
inquilino.setMaterno(materno);
inquilino.setFecha_ingreso(fecha_ingreso);
inquilino.setTelefono(telefono);
inquilino.setDeuda(deuda);
inquilino.setCorreo(correo);
if (result.length() == 4) {
String msg = upd
? daoInquilinos.inquilinosUpd(inquilino)
: daoInquilinos.inquilinosIns(inquilino);
if (msg != null) {
result.append("<li>").append(msg).append("</li>");
}
}
if (result.length() > 4) {
request.setAttribute("inquilino", inquilino);
}
return result.length() == 4 ? null : result.append("</ul>").toString();
}
public String inquilinosDel() {
List<Integer> ids = DeString.ids(request.getParameter("ids"));
String result = (ids != null)
? daoInquilinos.inquilinosDel(ids)
: "IDs incorrectos";
return result;
}
}
Mientras el código del Servlet sería:
package web.servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import web.validator.InquilinosValidator;
@WebServlet(name = "InquilinosServlet", urlPatterns = {"/Inquilinos"})
public class InquilinosServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String accion = request.getParameter("accion");
accion = (accion == null) ? "" : accion;
String result;
String target = "inquilinosSel.jsp";
InquilinosValidator validator = new InquilinosValidator(request);
switch (accion) {
case "SEL":
result = validator.inquilinosSel();
break;
case "INS":
result = validator.inquilinosInsUpd(false);
target = result == null ? "inquilinos.jsp" : "inquilinosIns.jsp";
break;
case "DEL":
result = validator.inquilinosDel();
target = "inquilinos.jsp";
break;
case "GET":
result = validator.inquilinosGet();
target = "inquilinosUpd.jsp";
break;
case "UPD":
result = validator.inquilinosInsUpd(true);
target = result == null ? "inquilinos.jsp" : "inquilinosUpd.jsp";
break;
case "":
result = "Solicitud requerida";
break;
default:
result = "Solicitud no reconocida";
}
if (result != null) {
request.setAttribute("message", result);
}
RequestDispatcher dispatcher = request.getRequestDispatcher(target);
dispatcher.forward(request, response);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
La estructura de carpetas resultaría en:
La clase DeString es una librería interna. (clic aquí para ver el código), esta permite convertir String a Integer y Double, incluso en colecciones tipo List.
No hay comentarios:
Publicar un comentario