SlideShare ist ein Scribd-Unternehmen logo
1 von 7
RequestParamExample con Acceso a BBDD mediante un servlet que delega
temporalmente el procesamiento de la petición a un segundo servlet que
conecta y realiza operaciones con la base de datos.
En esta práctica un servlet recoge los datos del formulario y delega
temporalmente el procesamiento de la petición a un segundo servlet que es el
que realiza la conexión y las consultas (insert, select, …) con la base de
datos mydb creada previamente con HSQLDB, la cual contiene la tabla ALUMNO
(NOMBRE,APELLIDOS).
Vamos a extender el servlet RequestParamExample para que realice un acceso a
BBDD en el que inserte una fila con el valor de los parámetros del
formulario.
RequestParamExample.java
package pkgServlets;
import java.io.IOException;
import java.io.PrintWriter;
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;
/**
* Servlet implementation class RequestParamExample
*/
@WebServlet("/RequestParamExample")
public class RequestParamExample extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RequestParamExample() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
String title = "Ejemplo de parámetros de Request";
out.println("<title>" + title + "</title>");
out.println("</head>");
out.println("<body bgcolor="white">");
out.println("<h3>" + title + "</h3>");
String firstName = request.getParameter("firstname");
String lastName = request.getParameter("lastname");
String paramsInRed = "Parametros en este Request:";
out.println(paramsInRed + "<br>");
String nombre = "Nombre ";
String apellidos = "Apellidos";
String noParams="No hay parámetro, por favor usa alguno";
if (firstName != null || lastName != null){
if(firstName.length()!=0 || lastName.length()!=0){
out.println(nombre);
out.println(" = " + firstName + "<br>");
out.println(apellidos);
out.println(" = " + lastName);
//<EXTENSION>------------------------------------------------------
pintarFormulario(out,nombre,apellidos);
RequestDispatcher rd = request.getRequestDispatcher("/DBServlet");
rd.include(request, response);
//------------------------------------------------------------------
}else{
out.println(noParams);
pintarFormulario(out,nombre,apellidos);
}
} else {
out.println(noParams);
pintarFormulario(out,nombre,apellidos);
}
out.println("</body>");
out.println("</html>");
}
/**
* @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);
}
//<EXTENSION>---------------------------------------------------------------------------
private void pintarFormulario(PrintWriter obj, String nom, String apel){
obj.println("<P>");
obj.print("<form action="");
obj.print("RequestParamExample" ");
obj.println("method=POST>");
obj.println(nom);
obj.println("<input type=text size=20 name=firstname>");
obj.println("<br>");
obj.println(apel);
obj.println("<input type=text size=20 name=lastname>");
obj.println("<br>");
obj.println("<input type=submit>");
obj.println("</form>");
//--------------------------------------------------------------------------------------
-
}
}
DBServlet.java
package pkgServlets;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class DBServlet
*/
@WebServlet("/DBServlet")
public class DBServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private Connection con;
private PrintWriter out;
public void init(ServletConfig conf) throws ServletException {
super.init(conf);
try {
Class.forName("org.hsqldb.jdbcDriver");
this.con =
DriverManager.getConnection("jdbc:hsqldb:file:C:/J2EE_UNED/hsqldb/lib/mydb", "SA", "");
} catch (Exception e) {
e.printStackTrace();
return;
}
}
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
try {
out = res.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title> Una demostración de como usar JDBC con un Servlet" +
"</title>");
out.println("</head>");
out.println("<body>");
Statement stmt = con.createStatement();
//<EXTENSION>---------------------------------------------------------------
String firstName = req.getParameter("firstname");
String lastName = req.getParameter("lastname");
String sql = "INSERT INTO Alumno VALUES ('" + firstName + "','" + lastName + "');";
stmt.executeUpdate(sql);
//--------------------------------------------------------------------------
out.println("<H3>");
out.println("Resultados");
out.println("</H3>");
ResultSet rs = stmt.executeQuery("SELECT * FROM Alumno");
out.println("<UL>");
while (rs.next()) {
out.println("<LI>" + rs.getString("Nombre") + "|" +
rs.getString("Apellidos") );
}
out.println("</UL>");
rs.close();
stmt.close();
} catch (SQLException e) {
out.println("Ha habido un error de SQL...");
out.println(e.getMessage());
} catch (IOException e) {
System.err.println("Ha habido una IOException...");
e.printStackTrace();
}
out.println("</body>");
out.println("</html>");
out.close();
}
public void destroy() {
try {
con.close();
} catch (SQLException e) {
out.println(e.getMessage());
}
}
}
Resultado de la ejecución…
Al pulsar en el botón “Enviar consulta” se realiza el insert en la bbdd.
Delegar peticiones a otros recursos
RequestDispatcher rd = request.getRequestDispatcher("/DBServlet");
rd.include(request, response);
En el esquema de trabajo típico de los servlets, un servlet recibe una
petición http, ejecuta código ubicado en los métodos de servicio para generar
la respuesta html y la envía al cliente.
En muchas ocasiones, los servlets no generan la respuesta sino que actúan
como gestores de la petición mediante la ejecución de código de control con
instrucciones if condicionales. En función del bloque condicional que se
ejecute se delega la generación de respuesta a otros recursos tales como
páginas html, páginas jsp u otros servlets.
La interface javax.servlet.RequestDispatcher contiene dos métodos que
permiten delegar la generación de respuestas a otros recursos.
• El método forward, que permite delegar el procesamiento de la petición
a una página html, jsp u otro servlet.
• El método include, que permite incluir la respuesta generada por uno
de estos recursos en el servlet sobre el que se aplica.
Explicación detallada de ambos métodos:
• void forward(ServletRequest request, ServletResponse response): delega
el procesamiento de la petición al recurso especificado en el
argumento del objeto RequestDispatcher sobre el que se aplica. Toda
respuesta vertida al flujo de salida mediante el objeto out asociada a
líneas anteriores y posteriores a la del método no se considera. El
resto de código, sí.
• void include(ServletRequest request, ServletResponse response): delega
“temporalmente” el procesamiento de la petición al recurso
especificado en el argumento del objeto RequestDispatcher sobre el que
se aplica, incluyendo en el servlet en el que se encuentra definido,
además de la respuesta generada hasta la línea del include, una página
html, jsp o la respuesta html generada por otro servlet. Muy usado
para incorporar encabezados (headers) y pies de página (footers)
comunes a todos los recursos de una aplicación web.
Para poder aplicar estos métodos es necesario obtener un objeto de la
interface RequestDispatcher.
• RequestDispatcher getRequestDispatcher(String
rutaRecursoAlQueSeDelega): se emplea, sobre todo, cuando se desea
delegar en ficheros html o jsps. También sirve para servlets.
javax.servlet
Interface RequestDispatcher
public interface RequestDispatcher
Defines an object that receives requests from the client and sends them to any resource
(such as a servlet, HTML file, or JSP file) on the server. The servlet container creates
the RequestDispatcher object, which is used as a wrapper around a server resource
located at a particular path or given by a particular name.
This interface is intended to wrap servlets, but a servlet container can create
RequestDispatcher objects to wrap any type of resource.
Method Summary
void forward(ServletRequest request, ServletResponse response)
Forwards a request from a servlet to another resource (servlet, JSP file, or
HTML file) on the server.
void include(ServletRequest request, ServletResponse response)
Includes the content of a resource (servlet, JSP page, HTML file) in the
response.

Weitere ähnliche Inhalte

Was ist angesagt?

Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLjubacalo
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBancojubacalo
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptjubacalo
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desdejbersosa
 
Conectar java con una base de datos
Conectar java con una base de datosConectar java con una base de datos
Conectar java con una base de datosjbersosa
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbcjbersosa
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportjbersosa
 
Ejemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper reportEjemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper reportjbersosa
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jspdtbadboy0
 
Comunicacion entre formularios HTML y paginas JSP
Comunicacion entre formularios HTML y paginas JSPComunicacion entre formularios HTML y paginas JSP
Comunicacion entre formularios HTML y paginas JSPDanii Rodriguez
 
Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012Gustavo Inocente Chacón
 
Django: el framework web definitivo
Django: el framework web definitivoDjango: el framework web definitivo
Django: el framework web definitivoAnder Beaskoetxea
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysqlI LG
 
Guia N5 Proyectos Web Consultas Php Y My Sql
Guia N5   Proyectos Web   Consultas Php Y My SqlGuia N5   Proyectos Web   Consultas Php Y My Sql
Guia N5 Proyectos Web Consultas Php Y My SqlJose Ponce
 
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANSWilliam Diaz S
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.comoctabio
 

Was ist angesagt? (20)

Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScript
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 
Conectar java con una base de datos
Conectar java con una base de datosConectar java con una base de datos
Conectar java con una base de datos
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbc
 
Funciones
FuncionesFunciones
Funciones
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper report
 
Ejemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper reportEjemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper report
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jsp
 
Comunicacion entre formularios HTML y paginas JSP
Comunicacion entre formularios HTML y paginas JSPComunicacion entre formularios HTML y paginas JSP
Comunicacion entre formularios HTML y paginas JSP
 
Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012
 
JSP
JSPJSP
JSP
 
Django: el framework web definitivo
Django: el framework web definitivoDjango: el framework web definitivo
Django: el framework web definitivo
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Curso Jsp
Curso JspCurso Jsp
Curso Jsp
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysql
 
Guia N5 Proyectos Web Consultas Php Y My Sql
Guia N5   Proyectos Web   Consultas Php Y My SqlGuia N5   Proyectos Web   Consultas Php Y My Sql
Guia N5 Proyectos Web Consultas Php Y My Sql
 
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
 

Ähnlich wie RequestParamExample con acceso BBDD

Ähnlich wie RequestParamExample con acceso BBDD (20)

Programación web 1er dept
Programación web 1er deptProgramación web 1er dept
Programación web 1er dept
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSP
 
Peticiones y respuestas
Peticiones y respuestasPeticiones y respuestas
Peticiones y respuestas
 
Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web java
 
Servletacceso bd
Servletacceso bdServletacceso bd
Servletacceso bd
 
Clase servlet - Análisis de Sistemas
Clase servlet - Análisis de SistemasClase servlet - Análisis de Sistemas
Clase servlet - Análisis de Sistemas
 
Taller programación web ajax con jquery
Taller programación web  ajax con jqueryTaller programación web  ajax con jquery
Taller programación web ajax con jquery
 
Presentacion ajax
Presentacion   ajaxPresentacion   ajax
Presentacion ajax
 
Java web 01 - servlets
Java web 01 - servletsJava web 01 - servlets
Java web 01 - servlets
 
Como usar ajax con jquery
Como usar ajax con jqueryComo usar ajax con jquery
Como usar ajax con jquery
 
SALUDOS EN INGLES
SALUDOS EN INGLESSALUDOS EN INGLES
SALUDOS EN INGLES
 
Objetos implícitos en jsp
Objetos implícitos en jspObjetos implícitos en jsp
Objetos implícitos en jsp
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRs
 
Clase servletsaccesobd
Clase servletsaccesobdClase servletsaccesobd
Clase servletsaccesobd
 
servlets
servlets servlets
servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 

Mehr von jubacalo

jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jubacalo
 
MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagenjubacalo
 
Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2jubacalo
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSPjubacalo
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oraclejubacalo
 
Escenarios
EscenariosEscenarios
Escenariosjubacalo
 
Matrices02
Matrices02Matrices02
Matrices02jubacalo
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámicajubacalo
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datosjubacalo
 
Textura de agua
Textura de aguaTextura de agua
Textura de aguajubacalo
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionalesjubacalo
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datosjubacalo
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threadsjubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Rayajubacalo
 

Mehr von jubacalo (20)

jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.
 
MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
 
Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 
Escenarios
EscenariosEscenarios
Escenarios
 
Matrices02
Matrices02Matrices02
Matrices02
 
Gráficos
GráficosGráficos
Gráficos
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámica
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datos
 
Textura de agua
Textura de aguaTextura de agua
Textura de agua
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionales
 
Solver
SolverSolver
Solver
 
Word VBA
Word VBAWord VBA
Word VBA
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 

Kürzlich hochgeladen

Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesLauraColom3
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 

Kürzlich hochgeladen (20)

Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reacciones
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 

RequestParamExample con acceso BBDD

  • 1. RequestParamExample con Acceso a BBDD mediante un servlet que delega temporalmente el procesamiento de la petición a un segundo servlet que conecta y realiza operaciones con la base de datos. En esta práctica un servlet recoge los datos del formulario y delega temporalmente el procesamiento de la petición a un segundo servlet que es el que realiza la conexión y las consultas (insert, select, …) con la base de datos mydb creada previamente con HSQLDB, la cual contiene la tabla ALUMNO (NOMBRE,APELLIDOS). Vamos a extender el servlet RequestParamExample para que realice un acceso a BBDD en el que inserte una fila con el valor de los parámetros del formulario.
  • 2. RequestParamExample.java package pkgServlets; import java.io.IOException; import java.io.PrintWriter; 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; /** * Servlet implementation class RequestParamExample */ @WebServlet("/RequestParamExample") public class RequestParamExample extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public RequestParamExample() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<head>"); String title = "Ejemplo de parámetros de Request"; out.println("<title>" + title + "</title>"); out.println("</head>"); out.println("<body bgcolor="white">"); out.println("<h3>" + title + "</h3>"); String firstName = request.getParameter("firstname"); String lastName = request.getParameter("lastname"); String paramsInRed = "Parametros en este Request:"; out.println(paramsInRed + "<br>"); String nombre = "Nombre "; String apellidos = "Apellidos"; String noParams="No hay parámetro, por favor usa alguno"; if (firstName != null || lastName != null){ if(firstName.length()!=0 || lastName.length()!=0){ out.println(nombre); out.println(" = " + firstName + "<br>"); out.println(apellidos); out.println(" = " + lastName); //<EXTENSION>------------------------------------------------------ pintarFormulario(out,nombre,apellidos); RequestDispatcher rd = request.getRequestDispatcher("/DBServlet"); rd.include(request, response); //------------------------------------------------------------------
  • 3. }else{ out.println(noParams); pintarFormulario(out,nombre,apellidos); } } else { out.println(noParams); pintarFormulario(out,nombre,apellidos); } out.println("</body>"); out.println("</html>"); } /** * @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); } //<EXTENSION>--------------------------------------------------------------------------- private void pintarFormulario(PrintWriter obj, String nom, String apel){ obj.println("<P>"); obj.print("<form action=""); obj.print("RequestParamExample" "); obj.println("method=POST>"); obj.println(nom); obj.println("<input type=text size=20 name=firstname>"); obj.println("<br>"); obj.println(apel); obj.println("<input type=text size=20 name=lastname>"); obj.println("<br>"); obj.println("<input type=submit>"); obj.println("</form>"); //-------------------------------------------------------------------------------------- - } } DBServlet.java package pkgServlets; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class DBServlet */ @WebServlet("/DBServlet")
  • 4. public class DBServlet extends HttpServlet { private static final long serialVersionUID = 1L; private Connection con; private PrintWriter out; public void init(ServletConfig conf) throws ServletException { super.init(conf); try { Class.forName("org.hsqldb.jdbcDriver"); this.con = DriverManager.getConnection("jdbc:hsqldb:file:C:/J2EE_UNED/hsqldb/lib/mydb", "SA", ""); } catch (Exception e) { e.printStackTrace(); return; } } public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); try { out = res.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title> Una demostración de como usar JDBC con un Servlet" + "</title>"); out.println("</head>"); out.println("<body>"); Statement stmt = con.createStatement(); //<EXTENSION>--------------------------------------------------------------- String firstName = req.getParameter("firstname"); String lastName = req.getParameter("lastname"); String sql = "INSERT INTO Alumno VALUES ('" + firstName + "','" + lastName + "');"; stmt.executeUpdate(sql); //-------------------------------------------------------------------------- out.println("<H3>"); out.println("Resultados"); out.println("</H3>"); ResultSet rs = stmt.executeQuery("SELECT * FROM Alumno"); out.println("<UL>"); while (rs.next()) { out.println("<LI>" + rs.getString("Nombre") + "|" + rs.getString("Apellidos") ); } out.println("</UL>"); rs.close(); stmt.close(); } catch (SQLException e) { out.println("Ha habido un error de SQL..."); out.println(e.getMessage()); } catch (IOException e) { System.err.println("Ha habido una IOException..."); e.printStackTrace(); } out.println("</body>"); out.println("</html>"); out.close(); }
  • 5. public void destroy() { try { con.close(); } catch (SQLException e) { out.println(e.getMessage()); } } } Resultado de la ejecución… Al pulsar en el botón “Enviar consulta” se realiza el insert en la bbdd. Delegar peticiones a otros recursos RequestDispatcher rd = request.getRequestDispatcher("/DBServlet"); rd.include(request, response); En el esquema de trabajo típico de los servlets, un servlet recibe una petición http, ejecuta código ubicado en los métodos de servicio para generar la respuesta html y la envía al cliente. En muchas ocasiones, los servlets no generan la respuesta sino que actúan como gestores de la petición mediante la ejecución de código de control con instrucciones if condicionales. En función del bloque condicional que se ejecute se delega la generación de respuesta a otros recursos tales como páginas html, páginas jsp u otros servlets.
  • 6. La interface javax.servlet.RequestDispatcher contiene dos métodos que permiten delegar la generación de respuestas a otros recursos. • El método forward, que permite delegar el procesamiento de la petición a una página html, jsp u otro servlet. • El método include, que permite incluir la respuesta generada por uno de estos recursos en el servlet sobre el que se aplica. Explicación detallada de ambos métodos: • void forward(ServletRequest request, ServletResponse response): delega el procesamiento de la petición al recurso especificado en el argumento del objeto RequestDispatcher sobre el que se aplica. Toda respuesta vertida al flujo de salida mediante el objeto out asociada a líneas anteriores y posteriores a la del método no se considera. El resto de código, sí. • void include(ServletRequest request, ServletResponse response): delega “temporalmente” el procesamiento de la petición al recurso especificado en el argumento del objeto RequestDispatcher sobre el que se aplica, incluyendo en el servlet en el que se encuentra definido, además de la respuesta generada hasta la línea del include, una página html, jsp o la respuesta html generada por otro servlet. Muy usado para incorporar encabezados (headers) y pies de página (footers) comunes a todos los recursos de una aplicación web. Para poder aplicar estos métodos es necesario obtener un objeto de la interface RequestDispatcher. • RequestDispatcher getRequestDispatcher(String rutaRecursoAlQueSeDelega): se emplea, sobre todo, cuando se desea delegar en ficheros html o jsps. También sirve para servlets. javax.servlet Interface RequestDispatcher public interface RequestDispatcher Defines an object that receives requests from the client and sends them to any resource (such as a servlet, HTML file, or JSP file) on the server. The servlet container creates the RequestDispatcher object, which is used as a wrapper around a server resource located at a particular path or given by a particular name. This interface is intended to wrap servlets, but a servlet container can create RequestDispatcher objects to wrap any type of resource.
  • 7. Method Summary void forward(ServletRequest request, ServletResponse response) Forwards a request from a servlet to another resource (servlet, JSP file, or HTML file) on the server. void include(ServletRequest request, ServletResponse response) Includes the content of a resource (servlet, JSP page, HTML file) in the response.