- Calcular la suma de dos números.
- Calcular el producto de dos números.
PROGRAMANDO PENSANDO EN SERVICIOS - Parte 2
PROGRAMANDO PENSANDO EN SERVICIOS – Parte 1
- Repites bloques de código en varias partes de tu aplicación, esto dificulta su mantenimiento.
- El mantenimiento de la aplicación rápidamente se vuelve complicado, en muy poco tiempo, tu aplicación se parece más al juego de Jenga.
- Escalar tu aplicación, por ejemplo, de Cliente-Servidor a Web se hace prácticamente imposible.
- Si cuando estas a la mitad de un proyecto, te cambian de motor de base de datos, actualizar el código se hace una tarea muy complicada.
- Permite concentrarnos en la solución.
- Facilita las pruebas, algo que no debes dejar de hacer.
- Tu solución puedes escalarla fácilmente.
- El mantenimiento del código es más fácil.
CREACIÓN DEL ESQUEMA EUREKA
EUREKABANK DATABASE
El esquema de datos EUREKA lo utilizo en mis cursos de Java y Oracle, por tal motivo recibo constantemente preguntas de como crearlo.
En esta guía encontrara paso a paso, como crear el esquema EUREKA, desde la instalación de Oracle 10g XE.
CÓDIGO FUENTE - EUREKA-WEB-ORACLE-JDBC
En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.
Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.
Java Web Lección 03: Patrón MVC
INTRODUCCIÓN
El Patrón Model-View-Controller (MVC) es el mas utilizado en desarrollo web.
Este patrón permite estructurar una aplicación web en tres capas, donde cada una tiene una responsabilidad bien definida, haciendo mas fácil el desarrollo y mantenimiento de la aplicación.
DIAPOSITIVA
CÓDIGO FUENTE - EUREKA-WEB-ORACLE-JDBC
En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.
Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.
Java Web Lección 03: Patrón MVC
INTRODUCCIÓN
El Patrón Model-View-Controller (MVC) es el mas utilizado en desarrollo web.
Este patrón permite estructurar una aplicación web en tres capas, donde cada una tiene una responsabilidad bien definida, haciendo mas fácil el desarrollo y mantenimiento de la aplicación.
DIAPOSITIVA
TALLER VIRTUAL DE SPRING FRAMEWORK
Acceso a Cursos VirtualesJava Web Lección 03: Patrón MVC
INTRODUCCIÓN
El Patrón Model-View-Controller (MVC) es el mas utilizado en desarrollo web.
Este patrón permite estructurar una aplicación web en tres capas, donde cada una tiene una responsabilidad bien definida, haciendo mas fácil el desarrollo y mantenimiento de la aplicación.
DIAPOSITIVA
CÓDIGO FUENTE - EUREKA-WEB-ORACLE-JDBC
En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON, en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.
Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.
Java Web Lección 03: Patrón MVC
INTRODUCCIÓN
El Patrón Model-View-Controller (MVC) es el mas utilizado en desarrollo web.
Este patrón permite estructurar una aplicación web en tres capas, donde cada una tiene una responsabilidad bien definida, haciendo mas fácil el desarrollo y mantenimiento de la aplicación.
DIAPOSITIVA
TALLER VIRTUAL DE SPRING FRAMEWORK
Acceso a Cursos VirtualesJAVA WEB - COMBOS ANIDADOS CON JQUERY Y JSON
Map<String, Object> rpta = new HashMap<String, Object>();
EurekaModel model = new EurekaModel();
List<Map<String, ?>> lista = model.consultarCuentas("001");
rpta.put("rpta", "1");
rpta.put("lista", lista);
Gson gson = new Gson();
String texto = gson.toJson(rpta);
System.out.println(texto);
package pe.egcc.demo.servlets;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import pe.egcc.demo.model.EurekaModel;
/**
*
* @author Eric Gustavo Coronel Castillo
* @blog gcoronelc.blogspot.com
*/
@WebListener()
public class SessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent event) {
try {
EurekaModel model = new EurekaModel();
event.getSession().setAttribute("sucursales", model.cosultarSucursales());
} catch (Exception e) {
}
}
@Override
public void sessionDestroyed(HttpSessionEvent event) {
}
}
<label>Sucursal</label><br/>
<select id="cboSucursal">
<option value="000">[Seleccione sucursal]</option>
<c:forEach items="${sessionScope.sucursales}" var="rec">
<option value="${rec.codigo}">${rec}</option>
</c:forEach>
</select><br/>
<label>Cuenta</label><br/>
<select id="cboCuenta">
</select><br/>
package pe.egcc.demo.servlets;
import com.google.gson.Gson;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import pe.egcc.demo.model.EurekaModel;
/**
*
* @author Eric Gustavo Coronel Castillo
* @blog gcoronelc.blogspot.com
*/
@WebServlet(name = "DemoController", urlPatterns = {"/TraerCuentas"})
public class DemoController extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
Map<String, Object> rpta = new HashMap<String, Object>();
try {
// La siguiente línea es para poder apreciar el efecto AJAX.
Thread.currentThread().sleep(2000);
// Dato
String sucursal = request.getParameter("sucursal");
// Proceso
EurekaModel model = new EurekaModel();
List<Map<String, ?>> lista = model.consultarCuentas(sucursal);
rpta.put("rpta", "1");
rpta.put("lista", lista);
} catch (Exception e) {
rpta.put("rpta", "-1");
rpta.put("mensaje", e.getMessage());
}
Gson gson = new Gson();
out.print(gson.toJson(rpta));
out.flush();
out.close();
}
}
<script type="text/javascript" src="jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript">
$("#cboSucursal").change(function() {
var cboCuenta = $("#cboCuenta");
cboCuenta.empty();
var sucursal = $("#cboSucursal").val();
if (sucursal == '000') {
return;
}
var data = "sucursal=" + sucursal;
cboCuenta.append('<option value="">Cargando...</option>').val('');
$.post("TraerCuentas", data, function(objJson) {
cboCuenta.empty();
if (objJson.rpta == -1) {
alert(objJson.mensaje);
return;
}
var lista = objJson.lista;
if(lista.length > 0){
cboCuenta.append("<option value='0'>[Seleccione cuenta]</option>");
} else {
cboCuenta.append("<option value='0'>[No hay cuentas]</option>");
}
for (var i = 0; i < lista.length; i++) {
var item = "<option value='" + lista[i].cuenta + "'>" + lista[i].descripcion + "</option>";
cboCuenta.append(item);
}
});
});
$("#cboCuenta").change(function() {
var cuenta = $("#cboCuenta").val();
if(cuenta=="0"){
return;
}
alert("Cuenta: " + cuenta);
});
</script>
Java OO - Lección 08 - Colecciones
INTRODUCCIÓN
DIAPOSITIVA
PRESENTACIÓN DEL TEMA
CURSO PROFESIONAL DE JAVA ORIENTADO A OBJETOS
CODIGO FUENTE - EUREKA-WEB-MYSQL-SPRING
JSF con CDI - Parte I
@javax.faces.bean.ManagedBean
@javax.faces.bean.SessionScoped
public class ClaseDemo implements Serializable{
...
}
@javax.inject.Named
public class ClaseDemo implements Serializable{
...
}
@javax.inject.Named(value = "demoController")
public class ClaseDemo implements Serializable{
...
}
Los ámbitos soportados por CDI son los siguientes:
| @ApplicationScoped | Las instancias existen durante todo el ciclo de vida de la aplicacion. Estas instancias son globales y accesibles desde cualquier sesión HTTP. |
| @SessionScoped | Las instancias son accesibles por todas las peticiones que ocurren durante una sesión HTTP. |
| @ConverstationScoped | Las instancias existen durante una conversación. Una conversación esta compuesta de varias peticiones y pueden existir varias conversaciones por sesión. |
| @RequestScoped | Las instancias solamente existen durante la peticion HTTP. Una vez que termina el ciclo de vida de la petición, también termina su contexto. |
@javax.enterprise.inject.Model
| index.xhtml | Página que presenta el formulario para ingresar los dos números. |
| result.xhtml | Página para mostrar el resultado de la operación. |
| DemoController.java | Clase java administrada por CDI. |
package pe.egcc.controller;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
/**
*
* @author Gustavo Coronel
*/
@Named
@RequestScoped
public class DemoController {
private int num1;
private int num2;
private int suma;
public int getNum1() {
return num1;
}
public void setNum1(int num1) {
this.num1 = num1;
}
public int getNum2() {
return num2;
}
public void setNum2(int num2) {
this.num2 = num2;
}
public int getSuma() {
return suma;
}
public String doProcesar() {
suma = num1 + num2;
return "result";
}
}
<h:form>
<h1>SUMA DE DOS NUMEROS</h1>;
<h:panelGrid columns="2">
<h:outputLabel value="Número 1:"/>
<h:inputText value="#{demoController.num1}"
size="5" />
<h:outputLabel value="Número 2:"/>
<h:inputText value="#{demoController.num2}"
size="5"/>
<f:facet name="footer">
<h:commandButton value="Procesar"
action="#{demoController.doProcesar()}"/>
</f:facet>
</h:panelGrid>
</h:form>
<h:form>
<h1>SUMA DE DOS NUMEROS</h1>
<h:panelGrid columns="2">
<h:outputLabel value="Número 1:"/>
<h:outputText value="#{demoController.num1}"/>
<h:outputLabel value="Número 2:"/>
<h:outputText value="#{demoController.num2}"/>
<h:outputLabel value="Suma:"/>
<h:outputText value="#{demoController.suma}"/>
<f:facet name="footer">
<h:commandLink value="Retornar"
action="index" />
</f:facet>
</h:panelGrid>
</h:form>



