Download SuarezAndrade_Examen2doPeriodo_3cm3

Document related concepts
no text concepts found
Transcript
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE CÓMPUTO
WEB APPLICATION DEVELOPMENT
CIFUENTES ALVAREZ ALEJANDRO SIGFRIDO
3cm3
EXAMÉN SEGUNDO PARCIAL
“MI HOTMAIL”
Alumno:
SUÁREZ ANDRADE HÉCTOR
OBJETIVO
Desarrollar una aplicación web que envíe y reciba correos, la cual será desarrollada con
Servlets.
DESARROLLO
Lo primeroque tenemos que realizar es la configuración de la base de datos, el manejador
de la base de datos es MySQL, a continuación se presentan las capturas de pantallas de la
base de datos se ocupo phpMyAdmin para crear la base de datos.
La base de datos se llama usuarios:
Ilustración 1 Base de Datos
La tabla correos guarda los mensajes enviados por el usuario:
Ilustración 2 Estructura de la tabla correos
La tabla usuarios guarda el correo y la contraseña de cada usuario:
Ilustración 3 Estructura de la tabla usuario
La tabla recibidos guarda los correos recibidos de los usuarios:
Ilustración 4 Estructura de la tabla recibidos
Una vez realizada la base de datos se crea un proyecto eligiendo Web Aplication en NetBeans en
este caso el proyecto se llama HectorSuarezAndrade_3cm3
Ilustración 5 Estructura del Proyecto
Desarrolla el index.jsp
Código:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Inicio de sesion</title>
</head>
<body>
<h1>Bienvenido</h1>
<form action="servletBD" method="POST">
nombre<input type="text" name="nombre" value="" />
password <input type="password" name="contra" value="" />
<input name="tipo" type="hidden" value="1"/>
<input type="submit" value="aceptar" />
</form>
El index.jsp muestra la Bienvenida en donde el usuario ingresa su correo y contraseña:
Ilustración 6 Página de inicio
Cuando el usuario ingresa una contraseña incorrecta muestra una pantalla con la advertencia de
verifique sus datos
Ilustración 7 Pantalla de error de inicie sus datos
Cuando el usuario se ingresa sus datos correctos se llama al servlet llamado servletBD
Código servletBD:
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author HSA
*/
public class servletBD extends HttpServlet {
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String var1=request.getParameter("nombre");
String var2=request.getParameter("contra");
controlCorreo c = new controlCorreo();
try{
request.getSession().setAttribute("mail", var1);
//boolean validacion;
if(c.validaContraseña(var1, var2) == true ){
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet servletBD</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>BIENVENIDO</h1>");
out.println("<h2>"+var1+"</h2>");
out.println("<form action=enviarMensaje method=POST>");
out.println("<input type=submit value='Enviar'/>");
out.println("</form>");
out.println("<h2>BANDEJA DE ENTRADA</h2>");
controlCorreo cc = new controlCorreo();
try{
ResultSet r= cc.leerCorreo(var1);
while(r.next()){
//System.out.println("DE:"+r.getString("de"));
out.println("De:"+r.getString("de"));
out.println("</br>");
out.println("Asunto:"+r.getString("asunto"));
out.println("</br>");
out.println("Contenido:"+r.getString("contenido"));
out.println("</br>");
out.println("</br>");
}
}catch(Exception e){
out.println("ERROR"+e.getMessage());
}
out.println("</body>");
out.println("</html>");
}else{
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet servletBD</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>VERIFIQUE SUS DATOS </h1>");
out.println("</body>");
out.println("</html>");
}
}catch(Exception e){
out.println("ERROR "+ e.getMessage());
}
/*
* TODO output your page here. You may use following sample code.
*/
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the
left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
El servlteBD realiza la vadilación de las contraseñas y a su vez muestra la bandeja de entrada
Ilustración 8 Pantalla servletBD
Cuando se da clic al botón enviar correo llama al servlet enviarMensaje
Código:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/*
* TODO output your page here. You may use following sample code.
*/
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet enviarMensaje</title>");
out.println("</head>");
out.println("<body>");
out.println("<form name='enviaMail' action=confirmacionEnviado method=POST>");
//out.println("Remitente: <input type='text' name = 'remitente' value='' />");
out.println("<br/>");
out.println("Para: <input type='text' name = 'destinatario' value='' />");
out.println("<br/>");
out.println("Asunto: <input type='text' name = 'asunto' value='' />");
out.println("<br/>");
out.println("<textarea name='contenido' rows='20' cols='128'></textarea>");
out.println("</br>");
out.println("<input type=submit value='Enviar'>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
Ilustración 9 Pantalla enviarMensaje
El usuario llena los campos y envía el mensaje
Ilustración 10 Pantalla enviarMensaje
Al dar clic en Enviar se muestra la confirmación de que el mensaje fue enviado, a su vez en la base
de datos se queda almacenado el correo
La confirmación llama al servlet confirmacionEnviado
Código:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/*
* TODO output your page here. You may use following sample code.
*/
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet confirmacionEnviado</title>");
out.println("</head>");
out.println("<body>");
String correo = (String)request.getAttribute("mail");
String para= request.getParameter("destinatario");
String asunto = request.getParameter("asunto");
String contenido=request.getParameter("contenido");
controlCorreo n = new controlCorreo();
try{
if(n.enviaCorreo(correo, para, asunto, contenido)>0)
out.println("<h1>Mensaje Enviado</h1>");
out.println(" a "+para);
out.println("</body>");
out.println("</html>");
}catch(Exception e){
out.println("ERROR "+ e.getMessage());
}
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
Ilustración 11 Confirmación mensaje Enviado
Comprobamos que en la base de datos quede afectado
Ilustración 12 Base de Datos
El manejo de la base de datos se realiza a través de las clase CConexionBD.java y
controlcorreo.java
Código CConexionBD:
public class CConexionBd {
public static Connection conexion;
static ResultSet rs;
static Statement stmt;
static String mensaje;
public void conectar() throws Exception
{
//Class.forName("com.mysql.jdbc.Driver");
Class.forName("org.gjt.mm.mysql.Driver");
//conexion=DriverManager.getConnection("jdbc:mysql://localhost/agenda", "root", "admin");
conexion=DriverManager.getConnection("jdbc:mysql://localhost/usuarios", "root", "");
}
public void CierraConexion() throws Exception
{
conexion.close();
}
public ResultSet consulta_bd(String sql_query) throws Exception
{
rs = null;
stmt = conexion.createStatement();
rs = stmt.executeQuery(sql_query);
return rs;
}
public int modifica_bd(String sql_query)throws Exception
{
int registros=0;
stmt = conexion.createStatement();
registros = stmt.executeUpdate(sql_query);
stmt.close();
return registros;
}
}
Código controlCorreo.java:
public class controlCorreo {
public controlCorreo(){};
public boolean validaContraseña(String correo,String contra) throws Exception{
String sql_query;
//
boolean exito = false;
sql_query = "SELECT * FROM usuarios WHERE correo ='"+correo+"' AND contra='"+contra+"'";
CConexionBd n= new CConexionBd();
n.conectar();
ResultSet r= n.consulta_bd(sql_query);
while(r.next()){
//System.out.println("Correo: "+correo+" "+"Contra: " + contra);
if(r.getString("correo").equals(correo) && r.getString("contra").equals(contra)){
//
exito= true;
return true;
}
}
n.CierraConexion();
return false;
}
public int enviaCorreo(String correo,String para,String asunto,String contenido)throws Exception{
String sql_query;
int res;
sql_query="INSERT
INTO
correos
VALUES('"+correo+"','"+para+"','"+asunto+"','"+contenido+"')";
CConexionBd n= new CConexionBd();
n.conectar();
res=n.modifica_bd(sql_query);
n.CierraConexion();
return res;
}
public ResultSet leerCorreo(String correo)throws Exception{
String sql_query;
sql_query = "SELECT * FROM recibidos WHERE para ='"+correo+"'";
CConexionBd n= new CConexionBd();
n.conectar();
ResultSet r= n.consulta_bd(sql_query);
//
n.CierraConexion();
return r;
}
}
Conclusión:
Los servlets son importantes para el manejo de información relevante para el sistema, en
este examen me di cuenta que el envío o recepción de información se tiene que hacer
con seguridad, a través de los servlets podemos manipular información y tenerla bien
resguardada.