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.