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
2
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
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
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
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.
System.out.print(ex.getMessage());
Descripción del código: }
En Conexión.java ( SYS.DAO) return cn;
package SYS.DAO; }
//PASANDO UNA INSTRUNCCION SQL QU DEVUELVA
import java.sql.*; LA TABLA
public static ResultSet Runqry(String
public class Conexion { sql)throws SQLException{
ResultSet rs=null;
public static Connection getConexion(){ PreparedStatement
//oracle st=getConexion().prepareStatement(sql);
rs=st.executeQuery();
String Driver="oracle.jdbc.driver.OracleDriver";
String URL="jdbc:oracle:thin:@localhost:1521:XE"; return rs;
String user="sistemas";
String password="sistemas"; }
//ejecutar una aplicacion para grabar o
//eleiminar
Connection cn=null; public static int Ejecutar(String sql)
try{ throws SQLException{
Class.forName(Driver); int res=0;
cn = DriverManager.getConnection(URL,user,password); Statement st =
getConexion().createStatement();
}catch(Exception ex){ res = st.executeUpdate(sql);
return res;
}
Las entidades :
8
Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.
Ruta.java Viaje.java
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
}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 no
public boolean Ocupado(int asiento, String via){
boolean existe=false;
for(Pasajero x:LisPasa(via)){
if(asiento==x.getAsiento()){
existe=true;
12
Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.
break;
}
}
return existe;
public void Graba(Pasajero obj){ //para adicionar nuevos pasajeros al viaje seleccionado
String 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);
java.text.DecimalFormat sd=new java.text.DecimalFormat("000000"); //para rellenar con ceros
a la izquierda
13
Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.
cad=sd.format(nro);
}catch(Exception e){
e.printStackTrace();
}
return cad;
}
//los servlet
SerVia
package 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);
}
}
import java.io.IOException;
import java.io.PrintWriter; Nota.- El método a emplear en el
import javax.servlet.ServletException; servlet es el doGet la razón es porque
import javax.servlet.http.HttpServlet; los datos son enviados por dirección de
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; pagina (<a href…) , en el
//para trabajar con sesiones processRequest no serán tomados en
import javax.servlet.http.HttpSession;
import SYS.BEANS.*; cuenta estos datos.
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);
}
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import SYS.BEANS.*;
import SYS.DAO.*;
public class SerGraba extends HttpServlet {
String ruta="/Pagpasa.jsp";
//para enviar un listado actualizado
request.setAttribute("lispas", obj.LisPasa(viaje));
this.getServletContext().getRequestDispatcher(ruta).forward(request, response);
out.close();
16
Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.
}
}
Cabecera.jsp
<body background="turismo/FONDOTRI.GIF">
<table width="780" border="0" cellpadding="0" cellspacing="1">
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>
<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>
<%}
%>
</table>
</center>
</body>
</html>
<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ñ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>
</tr>
22
Facultad de Ingeniería Industrial y de Sistemas Ing. Alberto Moreno C.
</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>