UNA APLICACIÓN CON CAPAS

26
1 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C. UNA APLICACIÓN CON CAPAS EN JAVA WEB

description

Una aplicacion en N capas en java web, alumnos de LP2 de UTP, escribame para enviarle el codigo fuente , esta bien detallado la elaboracion del proyecto, Deben desarrollar sus trabajos con servlet

Transcript of UNA APLICACIÓN CON CAPAS

Page 1: UNA APLICACIÓN CON CAPAS

1 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

UNA APLICACIÓN CON CAPAS EN JAVA WEB

Servlet la capa donde recepciona y envía

La capa de procesos que interactúan con la BDD y el servlet

Se proceden a colocar todos los métodos que se van a ejecutar , como listados , generación de

códigos, grabar

Las entidades o Clases que intervienen en su proyecto

Paginas que interactúan con el cliente

Page 2: UNA APLICACIÓN CON CAPAS

2 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

Las Tablas que intervienen el proyecto creadas en ORACLE :

Las pantallas:

a) Debe mostrar una lista de rutas:PagRuta.jsp

RUTARUTCOD CHAR(4)RUTNOM VARC HAR2(25)

VIAJESNROVIA CHAR(6)RUTCOD CHAR(4)VIAFECH DATEVIAHRS DATECOSTO NUMBER(6,1)

PASAJEROSBOLNRO CHAR(6)NROVIA CHAR(6)NOMPAS VARCHAR2(30)ASIENTO INTEGERPAGO NUMBER(8,1)

Page 3: UNA APLICACIÓN CON CAPAS

3 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

Descripción al seleccionar una ruta va llamar al servlet (SerVia donde se va pasar el código de ruta y nombre que es necesario para listar todos los viajes destinados a esa ruta)

PagViaje.jsp

Page 4: UNA APLICACIÓN CON CAPAS

4 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

Al seleccionar un viaje va mostrar todos los pasajeros que se encuentran en ese viaje va llamar al servlet(Serpasa) enviando como dato el numero de viaje y el costo ambos datos tienen que ser almacenados en una sesión para que sean empleados en la pagina de adición de pasajeros observe que request.getAttribute recupera el dato enviado por el servlet pero cuando pasa o llama a otra pagina pierde su valor por lo tanto al emplear HttpSession ses=request.getSession() , se crea una sesión los valores almacenados pueden ser llamados en cualquier parte o paginas del proyecto.Pagpasa.jsp

Page 5: UNA APLICACIÓN CON CAPAS

5 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

b) Al hacer clic en adicionar pasajeros , va mostrar la siguiente pantalla para poder ingresar nuevos pasajeros, observe que el numero de viaje y el costo tienen que ser recuperados en esta pagina , como esta en una sesión entonces se puede recuperar.Los datos viaje y costo además tienen que ser colocados en un campo oculto <input type=”Hidden” name=”tvia”> para puedan ser enviados al servlet para grabación (SerGraba) una vez grabado se genera el numero de boleto y dirige la pagina hacia Pagpasa(lista de pasajeros) para que el listado sea actualizado.PagAdicion.jsp

Page 6: UNA APLICACIÓN CON CAPAS

6 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

Para el calculo del pago al seleccionar cualquier opción automáticamente va mostrar su pago , por lo tanto tiene que emplear códigos en javascript , porque la operación es a nivel de cliente en el browser.

Entre a NetBeans y crear los siguientes paquetes: SYS.DAO, SYS.BEAN, SYS.SERVLET

Descripción del código:En Conexión.java ( SYS.DAO)

package SYS.DAO;

import java.sql.*;

public class Conexion {

public static Connection getConexion(){//oracle String Driver="oracle.jdbc.driver.OracleDriver"; String URL="jdbc:oracle:thin:@localhost:1521:XE"; String user="sistemas"; String password="sistemas"; Connection cn=null; try{ Class.forName(Driver); cn = DriverManager.getConnection(URL,user,password); }catch(Exception ex){

System.out.print(ex.getMessage()); } return cn; }//PASANDO UNA INSTRUNCCION SQL QU DEVUELVA LA TABLApublic static ResultSet Runqry(String sql)throws SQLException{ ResultSet rs=null; PreparedStatement st=getConexion().prepareStatement(sql); rs=st.executeQuery(); return rs; }//ejecutar una aplicacion para grabar o //eleiminarpublic static int Ejecutar(String sql) throws SQLException{ int res=0; Statement st = getConexion().createStatement();

res = st.executeUpdate(sql);return res;}

}

Page 7: UNA APLICACIÓN CON CAPAS

7 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

Las entidades :

Ruta.java

package SYS.DAO;public class Ruta {private String codr=null;private String nomr=null;public Ruta(String a, String b){ codr=a; nomr=b;}

public String getCodr() { return codr; }

public void setCodr(String codr) { this.codr = codr; }

public String getNomr() { return nomr; }

public void setNomr(String nomr) { this.nomr = nomr; }

}

Viaje.java

package SYS.DAO;

public class Viaje {private String vianro=null;private String fecha=null;private String hora=null;private double costo=0;public Viaje(String a, String b,String c, double d){ vianro=a; fecha=b; hora=c; costo=d;}

public String getVianro() { return vianro; }

public void setVianro(String vianro) { this.vianro = vianro; }

public String getFecha() { return fecha; }

public void setFecha(String fecha) { this.fecha = fecha; }

public String getHora() { return hora; }}

Page 8: UNA APLICACIÓN CON CAPAS

8 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

La entidad Pasajeros:

package SYS.DAO;

public class Pasajero {private String boleto;private String via;private String nompas;private int asiento;private String tipo;private double pago;

public String getBoleto() { return boleto; }

public void setBoleto(String boleto) { this.boleto = boleto; }

public String getVia() { return via; }

public void setVia(String via) { this.via = via; }

public String getNompas() { return nompas; }

public void setNompas(String nompas) {

this.nompas = nompas; }

public String getTipo() { return tipo; }

public void setTipo(String tipo) { this.tipo = tipo; }

public double getPago() { return pago; }

public void setPago(double pago) { this.pago = pago; }

public int getAsiento() { return asiento; }

public void setAsiento(int asiento) { this.asiento = asiento; }

}

Page 9: UNA APLICACIÓN CON CAPAS

9 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

en el paquete SYS.BEANS Proceso.javapackage SYS.BEANS; import SYS.DAO.*;import java.sql.*;import java.util.*;public class Proceso {//lista de rutas public List<Ruta> LisRut(){ List<Ruta> lista=new ArrayList(); String sql="Select rutcod, rutnom from ruta"; try{ ResultSet rs=Conexion.Runqry(sql); while(rs.next()){ Ruta obj=new Ruta(rs.getString(1),rs.getString(2)); lista.add(obj); } }catch(Exception e){ e.printStackTrace(); } return lista;

}//lista de viajes pasando el codigo de ruta public List<Viaje> Lisvia(String codr){ List<Viaje> lista=new ArrayList(); String sql="Select Vianro, Viafch, viahrs, cosvia from viaje where rutcod='"+codr+"'"; try{ ResultSet rs=Conexion.Runqry(sql); while(rs.next()){ Viaje obj=new Viaje(rs.getString(1), rs.getString(2).substring(0,10), rs.getString(3).substring(11), rs.getDouble(4)); lista.add(obj);

Page 10: UNA APLICACIÓN CON CAPAS

10 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

} }catch(Exception e){ e.printStackTrace(); } return lista; } //lista de pasajeros respecto a un viaje public List<Pasajero> LisPasa(String via){ List<Pasajero> lista=new ArrayList(); String sql="select bolnro, nom_pas,nro_Asi, tipo,pago from pasajeros where vianro='"+via+"'"; try{ ResultSet rs=Conexion.Runqry(sql); while(rs.next()){ Pasajero obj=new Pasajero(); obj.setBoleto(rs.getString(1)); obj.setNompas(rs.getString(2)); obj.setAsiento(rs.getInt(3)); obj.setTipo(rs.getString(4)); obj.setPago(rs.getDouble(5)); lista.add(obj); } }catch(Exception e){ e.printStackTrace(); } return lista; }//busca si un asiento esta ocupado o nopublic boolean Ocupado(int asiento, String via){ boolean existe=false; for(Pasajero x:LisPasa(via)){

Page 11: UNA APLICACIÓN CON CAPAS

11 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

if(asiento==x.getAsiento()){ existe=true; break; } } return existe;

}

public void Graba(Pasajero obj){ //para adicionar nuevos pasajeros al viaje seleccionadoString sql="insert into pasajeros values(?,?,?,?,?,?)";try{ PreparedStatement st=Conexion.getConexion().prepareStatement(sql); st.setString(1, obj.getBoleto()); st.setString(2,obj.getVia()); st.setString(3, obj.getNompas()); st.setInt(4, obj.getAsiento()); st.setString(5, obj.getTipo()); st.setDouble(6, obj.getPago()); st.executeUpdate(); }catch(SQLException e){ e.printStackTrace();}

}public String GenBoleto(){ String cad=""; //NVL PERMITE SABER SI UN VALOR ES NULO , SI LA TABLA ESTA VACIA NO HAY MAXIMO , POR LO TANTO EL VALOR ES CERO String sql="select NVL(MAX(BOLNRO),'0')+1 FROM PASAJEROS"; try{ ResultSet rs=Conexion.Runqry(sql); rs.next(); int nro=rs.getInt(1);

Page 12: UNA APLICACIÓN CON CAPAS

12 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

java.text.DecimalFormat sd=new java.text.DecimalFormat("000000"); //para rellenar con ceros a la izquierda cad=sd.format(nro); }catch(Exception e){ e.printStackTrace(); } return cad; } }//los servletSerViapackage SYS.SERVLET;import java.io.*;import java.net.*;import javax.servlet.*;import javax.servlet.http.*;//import SYS.DAO.*;import SYS.BEANS.*;public class SerVia extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // processRequest(request, response); String codr=request.getParameter("codr"); String nomr=request.getParameter("nomr"); String ruta="/Pagviaje.jsp"; Proceso obj=new Proceso(); request.setAttribute("lista",obj.Lisvia(codr) ); request.setAttribute("nomr", nomr); request.setAttribute("codr", codr); //va redirigir hacia la pagina this.getServletContext().getRequestDispatcher(ruta).forward(request, response); } }

Page 13: UNA APLICACIÓN CON CAPAS

13 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

Servlet de Pasajeros SerPas.javapackage SYS.SERVLET;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//para trabajar con sesionesimport javax.servlet.http.HttpSession;import SYS.BEANS.*;

public class SerPas extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String viaje=request.getParameter("via"); String costo=request.getParameter("costo"); Proceso obj=new Proceso(); request.setAttribute("lispas",obj.LisPasa(viaje)); //crear una sesion para almacenar los datos //para que sean utilizados en cualquier pagina HttpSession ses=request.getSession(); ses.setAttribute("via", viaje); ses.setAttribute("costo",costo ); String ruta="/Pagpasa.jsp"; this.getServletContext(). getRequestDispatcher(ruta).forward(request, response); }

public String getServletInfo() { return "Short description"; }// </editor-fold>

}

Nota.- El método a emplear en el servlet es el doGet la razón es porque los datos son enviados por dirección de pagina (<a href…) , en el processRequest no serán tomados en cuenta estos datos.

Page 14: UNA APLICACIÓN CON CAPAS

14 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

Servelt de grabacion serGraba.javapackage SYS.SERVLET;import java.io.*;import java.net.*;import javax.servlet.*;import javax.servlet.http.*;

import SYS.BEANS.*;import SYS.DAO.*;public class SerGraba extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); Proceso obj=new Proceso(); String nomp=request.getParameter("tnom"); String viaje=request.getParameter("tvia"); int asiento=Integer.parseInt(request.getParameter("cba")); String tipo=request.getParameter("op"); String boleto=obj.GenBoleto(); double pago=Double.parseDouble(request.getParameter("tpago"));

Pasajero p=new Pasajero(); p.setBoleto(boleto); p.setNompas(nomp); p.setAsiento(asiento); p.setVia(viaje); p.setPago(pago); p.setTipo(tipo); obj.Graba(p);

String ruta="/Pagpasa.jsp"; //para enviar un listado actualizado request.setAttribute("lispas", obj.LisPasa(viaje));

Page 15: UNA APLICACIÓN CON CAPAS

15 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

this.getServletContext().getRequestDispatcher(ruta).forward(request, response); out.close(); } }

En webpage las paginas que interactúan con el cliente:La pagina de Cabecera.jsp que será incluida en todas las paginas que se va realizar , la razón es de no estar diseñando lo mismo en cada página , por lo tanto será incluida en las paginas.

Cabecera.jsp

<body background="turismo/FONDOTRI.GIF"><table width="780" border="0" cellpadding="0" cellspacing="1">

<tr><td><img src="turismo/centro_cinta.png" height="10" width="700"> <tr><td><table> <tr><td> <img src="turismo/promo_cuzco.jpg" height="200" width="300"> <td><img src="turismo/imagen2.gif" height="200" width="300"> <td><img src="turismo/promo_puno.jpg" height="200" width="300"> <tr> <td bgcolor="#000000" align="center"><img src="images/spacer.gif" width="1" height="1"></td> <tr align="center" bgcolor="#666666"> <td colspan="4" height="20"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#F0F0F0">Administraci&oacute;n Proyecto Agencia de Viajes 2009 LP2-UTP. Todos los derechos reservados. <a href="mailto:[email protected]";><font color="#E6E6E6">Cont&aacute;ctenos</font></a></font></td> </tr> </table>

Page 16: UNA APLICACIÓN CON CAPAS

16 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

Pagina donde se listan todas las rutas:

pagRuta.jsp<%@page import="SYS.DAO.*,SYS.BEANS.*" %><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Rutas</title> </head> <body> <%@include file="/Cabecera.jsp" %><center><table border="1"><tr><th>Viajes<th>Nombre <th>Imagen<%Proceso obj=new Proceso();for(Ruta x:obj.LisRut()){ %><tr><td><a href="SerVia?codr=<%=x.getCodr()%>&nomr=<%=x.getNomr()%>">Viajes</a><td><%=x.getNomr() %><td><img src="turismo/<%=x.getNomr()%>.jpg"height="100" width="100">

<%}%></table></center> </body></html>

Page 17: UNA APLICACIÓN CON CAPAS

17 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

La pagina de Listas de viajes : PagViaje.jsp

<%@page import="SYS.DAO.*,SYS.BEANS.*,java.util.*" %><html> <body> <%@include file="/Cabecera.jsp" %> <center> <h1>Lista de Viajes</h1> <%//recuperar valores enviados por servlet String nom=(String)request.getAttribute("nomr"); List<Viaje> lisvia= (ArrayList)request.getAttribute("lista"); %> <img src="turismo/<%=nom %>.jpg" height="200" width="200"> <table border="1"> <tr><td>Pasajeros <td>Fecha<td>Hora <td>Costo <%for(Viaje x:lisvia){ %> <tr><td><a href="SerPas?via=<%=x.getVianro()%> &costo=<%=x.getCosto() %>"> <%=x.getVianro()%> </a> <td><%=x.getFecha() %> <td><%=x.getHora() %> <td><%=x.getCosto() %> <%}%>

</table> </center> </body></html>

Page 18: UNA APLICACIÓN CON CAPAS

18 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

Pagina de Listas de pasajeros: Pagpasa.jsp

<%@page import="SYS.DAO.*,SYS.BEANS.*,java.util.*" %><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Pasajeros</title> </head> <body> <%@include file="/Cabecera.jsp" %> <center> <a href="PagAdicion.jsp">Adiciona Pasajeros</a> <table border="1"> <tr><th>Boleto <td>Nombre <td>Asiento<td>Pago <% List<Pasajero> lista= (ArrayList)request.getAttribute("lispas"); for(Pasajero x:lista){ %> <tr><td><%=x.getBoleto() %> <td><%=x.getNompas() %> <td><%=x.getAsiento() %> <td><%=x.getPago() %>

<%} %>

</table> </center> </body></html>

Page 19: UNA APLICACIÓN CON CAPAS

19 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

La pagina de Ingreso de datos nuevos pasajeros: PagAdicion.jspEl diseño realizarlo con macromedia, que es mas sencillo.

<%@page import="SYS.DAO.*,SYS.BEANS.*,java.util.*" %><head><title>Ingreso</title><style type="text/css"><!--.Estilo1 {

color: #0000FF;font-weight: bold;font-size: 24px;

}--></style></head><body> <%@include file="/Cabecera.jsp" %> <% //recuperando valores de la session HttpSession ses=request.getSession(); String viaje=(String)ses.getAttribute("via"); double costo= Double.parseDouble((String)ses.getAttribute("costo")); Proceso obj=new Proceso(); %><form id="form1" name="form1" method="post" action="SerGraba"> <table width="587" border="1"> <tr> <td colspan="2" bgcolor="#FFFFFF"><div align="center"><span class="Estilo1">REGISTRO DE PASAJEROS </span></div></td> </tr> <tr> <td width="205">Nombre</td> <td width="366"><label> <input name="tnom" type="text" id="tnom" /> </label></td> </tr> <tr>

Page 20: UNA APLICACIÓN CON CAPAS

20 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

<td>Asiento</td> <td><label> <select name="cba" id="cba"> <% for(int a=1; a<=40; a++){ if(!obj.Ocupado(a, viaje))//si no esta ocupado out.print("<option>"+a); } %>

</select> </label></td> </tr> <tr> <td>Tipo</td> <td><label> <input name="op" type="radio" value="A" onclick="calculo(1)" /> Adulto <input name="op" type="radio" value="N" onclick="calculo(2)" />Ni&ntilde;o<input name="op" type="radio" value="E" onclick="calculo(3)"/> Estudiante</label></td> </tr> <tr> <td>Pago</td> <td><label> <input name="tpago" type="text" id="tpago" /> </label></td> </tr> <tr> <td><label> <input type="submit" name="Submit" value="Enviar" /> </label></td> <td><input name="tvia" type="hidden" id="tvia" value="<%=viaje%>" /> <input name="tcos" type="hidden" id="tcos" value="<%=costo %>" /> <label> <input type="reset" name="Submit2" value="Restablecer" /> </label></td>

Page 21: UNA APLICACIÓN CON CAPAS

21 Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.

</tr> </table></form></body><script language="javascript"> function calculo(n){ //recuperando el valor del campo oculto cos=parseFloat(form1.tcos.value) switch(n){ case 1:pago=cos; break;//adulto case 2:pago=cos*0.5 ; break; case 3:pago=cos*0.7 } form1.tpago.value=pago }</script></html>