Servlets y JDBC Guia
Servlets y JDBC Guia
Servlets y JDBC Guia
Escuela: Computación
Asignatura: Java Avanzado
I. OBJETIVOS
Que el estudiante
Pueda crear Servlets con Nebeans.
II. INTRODUCCIÓN
Forman parte de JEE (Java Enterprise Edition), que es una ampliación de JSE (Java Standard
Edition).
Son pequeños programas (applets) escritos en Java que admiten peticiones a través del protocolo
HTTP. Los servlets reciben peticiones desde un navegador web, las procesan y devuelven una
respuesta al navegador, normalmente en HTML. Para realizar esto pueden utilizar las herramientas
del lenguaje Java.
III. PROCEDIMIENTO
Existen varios servidores web tanto para desarrollo y producción. Netbeans dispone de entre sus
agregados a Glassfish que fue desarrollado por Sun Microsystem (ahora perteneciente a Oracle).
También se cuenta con Apache Tomcat, JBoss (proyectos de código abierto) y otras potentes
opciones comerciales como lo es IBM Websphere Application Server.
Si no cuenta con Apache Tomcat, puede disponer de Glassfish, consulte a su instructor al respecto.
Paso 3:
Eliminación de la página index.jsp y creación de la página index.html, esto lo hacemos para que el
servidor no procese la página index.jsp.
2. Hacer clic derecho sobre “Web Pages”, elegimos la opción “New” y seleccionamos
“HTML” (ver la siguiente imagen).
3. Hacer clic en Next
4. Aparecerá una pantalla como la siguiente en la cual, ingresaremos como nombre de la
página index, la extensión será agregada automáticamente.
7. Como siguiente paso, se creara el servlet, para ello,dar clic derecho en la carpeta “Source
Packages”, seleccionamos New \ Servlet...
Finalizado esto, automáticamente crea una clase con el nombre de servlet dado (Servlet_Hola para
nosotros), que hereda de HttpServlet. Además, redefine (override) algunos métodos (doGet, doPost,
getServletInfo) y los rellena con un poco de código. Crea un método processRequest (invocado
desde los métodos doGet y doPost) para procesar los formularios que llegan por los métodos GET y
POST.
Nosotros, en este ejemplo, nos limitaremos completar con unas pocas líneas (pues la mayoría la
completó automáticamente el NetBeans) en el método processRequest para que cree una salida
HTML que será la respuesta del formulario enviado.
10. Ahora modificaremos un poco el servlet, para ello buscar el método “processRequest” y
modificamos el código que se encuentra detro del “try”, quedando de la siguiente manera.
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Servlet_Hola</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Resultado de Servlet_Hola</h1>");
out.println("<p>");
out.println("<b>Nombre de la persona: </b>" +
request.getParameter("nombre").toString()+"<br>");
out.println("<b>Apellido de la persona:
</b>"+request.getParameter("apellido").toString());
out.println("</p>");
out.println("</body>");
out.println("</html>");
Paso 4:
Proceda a correr la aplicación (proyecto) podemos hacerlo desde el menú Run o haciendo clic
derecho en el ícono del proyecto (desde el explorador de proyectos) seleccionando el menú
contextual y seleccionando Run.
Al ejecutar el proyecto se abrirá el browser predeterminado con la página index.html (la que
tiene el formulario):
Si ingresamos nuestro nombre en la caja de texto y damos clic en Enviar, el formulario se
envía al servlet, quien se ejecuta y nos devuelve una nueva página con un dato en particular
cargado dinámicamente, con los valores ingresados en el formulario del index.html.
Paso 1:
use Guia7;
Paso 3:
Ahora crea un Servlet en el paquete creado anteriormente (edu.udb.servlet), llamado
“ServletIngresarEmp”. De este servlet solo tendrá que modificar el método “processRequest” y
quedara de la siguiente manera (No olvide agregar el driver de Mysql al proyecto y además debe de
importar la librería java.sql.*en la sección de imports)
ResultSet rs = null;
Connection conexion = null;
String ids=request.getParameter("codigo");
String nombre=request.getParameter("nombre");
String apellido=request.getParameter("apellido");
String telefono=request.getParameter("telefono");
try {
//Leemos el driver de Mysql
Class.forName("com.mysql.jdbc.Driver");
conexion.close();
}
catch (ClassNotFoundException e1) {
//Error si no puedo leer el driver
out.println("ERROR:No encuentro el driver de la BD: "+
e1.getMessage());
}
catch (SQLException e2) {
//Error SQL: login/passwd mal
out.println("ERROR:Fallo en SQL: "+e2.getMessage());
}
finally {
out.close();
}
}
Paso 4
Ahora lo único que falta es seleccionar la opcióndel menú contextual Run a la página
“ingresaremp.html”,debe aparecer un formulario el cual debe ser llenado. Al enviar
permitirá que el servlet se conecte a la base de datos y pueda insertar los valores digitados
en el formulario.
Manejo de Sesiones
Paso 1:
Crear una nueva página html llamada “login.html” que contendrá el siguiente código:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Login!!!</h1>
<form action="GeneraSession" method="POST">
Ingrese su Usuario: <input type="text" name="usuario" value="" size="45" /><br>
Ingrese su Password: <input type="password" name="password" value=""
size="45"/><br>
<input type="submit" value="Enviar" name="enviar" />
</form>
</body>
</html>
Como se puede observar en el action debe ir el nombre del servlet que genera la sesión.
Paso 2:
Crear una clase Conexión dentro del paquete edu.udb.servlet, agregar el siguiente código:
package edu.udb.servlet;
import java.sql.*;
publicclass Conexion {
private Connection conexion =null;
private Statement s =null;
private ResultSet rs=null;
private String query="";
//Contructor
public Conexion() throws SQLException{
try
{
//obtenemos el driver de para mysql
Class.forName("com.mysql.jdbc.Driver");
// Se obtiene una conexión con la base de datos. 2
conexion = DriverManager.getConnection (
"jdbc:mysql://localhost/Guia7","root", "");
// Permite ejecutar sentencias SQL sin parámetros
s = conexion.createStatement();
}
catch (ClassNotFoundException e1) {
//Error si no puedo leer el driver de MySQL
System.out.println("ERROR:No encuentro el driver de la BD: "+e1.getMessage());
}
}
//Metodo que permite obtener los valores del resulset
public ResultSet getRs() {
return rs;
}
//Metodo que permite fijar la tabla resultado de la pregunta
//SQL realizada
publicvoid setRs(String consulta) {
try {
this.rs = s.executeQuery(consulta);
} catch (SQLException e2) {
System.out.println("ERROR:Fallo en SQL: "+e2.getMessage());
}
}
Paso 3:
Creamos el Servlet con el nombre “GeneraSession”, el paquete será el mismo utilizado en los
puntos anteriores, modificamos el método processRequest para que quede de la siguiente manera
(Nota: No olvide incluir el paquete java.sql.* también es necesario javax.servlet.http.HttpSession -
puede usar fix imports-):
try{
Conexion con = new Conexion();
ResultSet rs = con.getRs();
rs.next();
rs.close();
con.cerrarConexion();
}catch(SQLException e){
out.print(e.getMessage());
}
} finally {
out.close();
}
}
En este Servlet se encargada de recoger del usuario y la clave enviados desde el formulario. Una
vez recibidos se almacenan en dos variables (“usuario” y “password”) de tipo String. A
continuación,se comparan con los valores correctos del usuario y la clave desde la base de datos.
Si esta comprobación es correcta se crea un objeto de tipo session y se guarda el valor de usuario en
la variable “USER” y los nombres en la variable “NAME” para la sesión mediante el método
setAttribute().
Paso 3:
Ahora crearemos la página jsp que verificar si la sesión esta activa, la página será llamada
“principal.jsp” y de be quedar de la siguiente manera.
<%
HttpSession session_actual=request.getSession(false);
String usuario =(String) session_actual.getAttribute("USER");
String nombres =(String) session_actual.getAttribute("NAME");
if (usuario==null){
response.sendRedirect("login.html");
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<h2>
Bienvenido: (<%=usuario%>)<%=nombres%>
</h2>
</body>
</html>
Finalmente puede probar loguearse con los usuarios:
Usuario: root y password: root
Usuario: tesla y Password: corrienteAC
Puede agregar más usuarios.