0% encontró este documento útil (0 votos)
490 vistas14 páginas

Curso de Java PILDORAS INFORMATICAS

Este documento describe cómo dibujar imágenes y manejar eventos en Java, incluyendo eventos de ratón, teclado, ventana y foco. También cubre controles como botones, casillas de verificación, cuadros de texto y menús.

Cargado por

Bryan Solares
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
490 vistas14 páginas

Curso de Java PILDORAS INFORMATICAS

Este documento describe cómo dibujar imágenes y manejar eventos en Java, incluyendo eventos de ratón, teclado, ventana y foco. También cubre controles como botones, casillas de verificación, cuadros de texto y menús.

Cargado por

Bryan Solares
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

GRAFICOS EN JAVA INCLUYENDO IMÁGENES

VIDEO 64:
Para dibujar una imagen en un panel:

INTERFAZ Image

Image = ImagenIO.read() -> Interfaz recibe imagen de una clase estatica que implemeta ésta inferza con método READ.

Image = ImagenIO.read(new File(“ruta”)); -> La instancia recibe una ruta de la clase FILE.

Lanza IOExeception

Se dibuja en pantalla con método g.drawImage(imagen,posición x, posición y, imagen observada) -> Dibuja con método
DRAW de la clase Graphics
g.copyarea(punto x, punto y, largo, ancho, posición final x, posición final y) -> para copiar una imagen o una área ya
existente en la pantalla.
getWidth(lamina u objeto que espera ser cargado) = capturar el ancho de una imagen. getHeight(lamina u objeto que
espera ser cargado) = capturar el alto de una imagen.

EVENTOS DE RATON
Desencadenante de una acción.
 3 FACTORES
o Que desencadena la acción
 Objeto Evento
o Quién desencadena la acción
 Objeto Fuente
o Quién recibe la acción
 Objeto Listener
 OBJETO EVENTO (java.util)
o EVENTBJETC
 ActionEvent (java.awt.event)
 WindowEvent (java.awt.event)
 OBJETO FUENTE
o JBUTTON
 AddActionListener(Objeto listener)
 OBJETO LISTENER
o JPANEL
 ActionListener(Interfaz)
 ActionPerfomed(Objeto Evento)

JButton botonAzul = new JButton(“Azul”);

JButton botonAmarillo = new JButton(“Amarillo”);

JButton botonNegro = new JButton(“Negro”);

public Lamina() {
add(botonAzul); add(botonAmarillo); add(botonNegro); botonAzul.addActionListener(this);
botonAmarillo.addActionListener(this); botonNegro.addActionListener(this);
}

@Override
public void actionPerformed(ActionEvent e) {

Object botonpulsado = e.getSource();


if (botonpulsado == botonAzul) {
setBackground(Color.BLUE);
} else if (botonpulsado == botonAmarillo) {
setBackground(Color.YELLOW);
} else {
setBackground(Color.BLACK);

}
}

EVENTOS DE VENTANA
El funcionamiento es básicamente lo mismo que los eventos de ratón.
Para la interfaz Windows Listener obliga a implementar los siete métodos obligatoriamente.
 WindowListener(I)
o WindowActivated(WindowEvent e) (m)
o windowClosed(WindowEvent e) (m) (cerrada aplica para multiventana y programa en ejecución)
o windowClosing(WindowEvent e) (m) (cerrando)
o windowDeactivated(WindowEvent e) (m) (desactivar ventana)
o windowDeiconified(WindowEvent e) (m) (maximizar ventana)
o windowIconified(WindowEvent e) (m) (minimizar ventana)
o windowOpened(WindowEvent e) (m)

CLASES ADAPTADORAS (ADAPTER CLASSES)


Esto es para los casos cuando no se quiere implementar todos los métodos de la interfaz WindowListener.
 KEYADAPTER (eventos de teclado)
 WINDOWADAPTER (eventos de ventana)
o WindowFocusListener(i)
o WindowStateListener(i)
o WindowListener(i)
o EvenListener(i)
 MOUSEADAPTER (eventos de raton)

CONTROLAR LOS ESTADOS DE LA VENTANA


 WindowListener(I)
o WindowActivated(WindowEvent e) (m)
o windowClosed(WindowEvent e) (m) (cerrada aplica para multiventana y programa en ejecución)
o windowClosing(WindowEvent e) (m) (cerrando)
o windowDeactivated(WindowEvent e) (m) (desactivar ventana)
o windowDeiconified(WindowEvent e) (m) (maximizar ventana)
o windowIconified(WindowEvent e) (m) (minimizar ventana)
o windowOpened(WindowEvent e) (m)
 WindowStateListener
o WindowStateChanged(WindowEvent e)

 WindowEvent©
o GetNewState()(m) -> estado nuevo de la ventana
o getOldState()(m) -> estado viejo de la ventana
 WindowStateListener(i)
o windowStateChaged(WindowEvent e) (m)

EVENTOS DE TECLADO
Eventos provocados por las teclas.
 KEYLISTENER(i) -> KEYADAPTER©
o KeyPressed(KeyEvent e) (m) tecla es presionada
o keyReleased(KeyEvent e) (m) tecla es levantada
o keyTyped(KeyEvent e) (m) tecla presionada y levantada

EVENTOS DE RATON
 MOUSELISTENER(I) -> MOUSEADAPTER ©
o mouseClicked(MouseEvent e) <- MOUSEPRESSED + MOUSERELEASED
o mouseEntered(MouseEvent e) <-CUANDO EL RATON PARA SOBRE CIERTO COMPONENTE
o mouseExited(MouseEvent e) <-CUANDO EL RATON DEJA CIERTO COMPONENTE
o mousePressed(MouseEvent e) <- CUANDO SE DEJA EL DEDO EN LA TECLA
o mouseReleased(MouseEvent e) <- CUANDO SE QUITA EL DEDO DE LA TECLA
 MOUSEEVENT©
o getX()(m)
o getY()(m)
o getModifiersEX()(m)
o getClickCount()(m)

MouseEvent.getModifierEX();
CONSTANTES: BUTTON1_DOWN_MASK -> BUTTON2_DOWN_MASK -> BUTTON3_DOWN_MASK
 MOUSEMOTIONLISTENER -> controla movimiento del ratón.
o MouseDraggerd -> cuando se arrastra el ratón
o MouseMoved -> cuando se mueve el ratón

EVENTOS DE FOCO componentes y ventanas


 FOCUSLISTENER(I) -> FocusAdapter©
o FocuGained(FocusEvent e) (m) -> cuando se toma el foco
o focusLost(FocusEvent e) (m) -> cuando se pierde el foco
 WINDOWFOCUSLISTENER(i) -> WindowAdapter©
o WindowGainedFocus(FocusEvent e) (m)
o WindowLostFocus(FocusEvent e) (m)

cuadro1 = new JTextField();


cuadro2 = new JTextField();
cuadro1.setBounds(120, 10, 150, 20);
cuadro2.setBounds(120, 50, 150, 20);
add(cuadro1);
add(cuadro2);
cuadro1.addFocusListener(new lanzaFocos());
cuadro2.addFocusListener(new lanzaFocos());

MULTIPLES FUENTES
 Action(i) -> AbstractAction
o actionPerformed(ActionEvent evento) (m)
o setEnable(boolean b) (m)
o putValues(String clave, Object valor) (m) ->permite almacenar parejas de clave y valor
o addPropertyChagedListener(PropertyChangedListener oyente) (m) ->agregar propiedad al objeto oyente
o isEnable(boolean b) (m)
o getValues(String clave) (m)
o removePropertyChagedListener(PropertyChangedListener oyente) (m) ->quitar propiedad al objeto
oyente
 ACTION (EVENTO)-> OBJETO ACCION(ACTION) CLAVE:VALOR -> ACTIONPERMORMED(ACTIONEVENT E) (M)

 KeyStroke ©
o Static getKeyStroke(String s)(m)
 InputMap©
o Put(Stroke, Object) (m)
 Jpanel©
o GetInputMap(int condición) (m)
 ActionMap©
o Put(Object, acción) (m)

Para crear una combinación de letras:


 Crear mapa de entrada. (objeto donde tiene que incidir la combinación de teclas)
o Inputmap - Jcomponent
 Crear combinación de teclas
o keystroke
 Asignar combinación de teclas a objeto
o inputmap
 Asignar objeto a acción.
o Actionmap

InputMap mapaEntrada = getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);


mapaEntrada.put(KeyStroke.getKeyStroke(“ctrl A”), “fondo_amarillo”); mapaEntrada.put(KeyStroke.getKeyStroke(“ctrl T
“), “fondo_amarillo”); mapaEntrada.put(KeyStroke.getKeyStroke(“ctrl B”), “fondo_azul”);
mapaEntrada.put(KeyStroke.getKeyStroke(“ctrl C”), “fondo_rojo”);
ActionMap mapaAccion = getActionMap(); mapaAccion.put(“fondo_amarillo”, a); mapaAccion.put(“fondo_azul”, b);
mapaAccion.put(“fondo_rojo”, c);
LAYOUTS (disposiciones)
Se define como el dónde colocar los elementos dentro de un contenedor.
 Java.awt
 GRIDLAYOUT = rejilla
 BORDERLAYOUT = dividir el contenedor en north, south, west, east, center
 FLOWLAYOUT (default) = por defecto

Container© -> setLayout (m) = para establecer la disposición del contenedor.

INTRODUCCION DE TEXTO
 JTextComponent -> void setText(String s) -> void getText() ->getDocument()(i)(obtencion de modelo)
o JTextField -> texto de una sola línea
o JTextArea -> texto de varias líneas
 JTextComponent
o getDocument()(m)
 DocumentListener(i)
 removeUpdate()(m) -> ve si elimina algo del documento
 insertUpdate()(m) -> ve si se inserta algo en el documento
 changedUpdate()(m) -> ve si de modifica algo del documento
 addDocumentListener()(m)

Todo jtextfield guarda una interfaz tipo Document por cada instancia. Mediante esta interfaz podemos modificar lo que
contiene el jtextfield.

AREAS DE TEXTO
No se le puede agregar una barra de Scroll horizontal ni vertical. Para estos casos se debe agregar el jtextarea en un
JScrollPane.
 JTextArea© -> appen(m)
o GetText()(m) -> devuelve texto
o setLineWrap(boolean)(m) -> establecer si tiene saltos de línea o no
o getLineWrap()(m) -> obtiene estado de saltos de línea

CASILLAS DE VERIFICACION (CHECKBOX)


 JCheckbox©
o isSelected()(m)
o setSelected(boolean)

BOTONES DE RADIO (JRADIOBUTTON)


 JRadioButton
 ButtonGroup

CUADRO DESPLEGABLE (COMBOBOX)


 JCombobox
o Additem()
o GetSelectedItem()

CONTROL DESLIZANTE (JSLIDER)


 JSlider
o SetPaintTicks(boolean) -> imprimir líneas de division
o setMajorTickSpacing(int) ->imprimir marcas mayores
o setMirorTickSpacing(int) -> imprimir marcas menores
o setPaintLables(boolean) -> imprimir los valores numéricos
o addChangeListener(ChangedListener c)

JSPINNER
 JSpinner
 JSpinner()
 JSpinner(SpinnerModel model)

CONSTRUCCION DE MENUS
 JMenuBar©
o JMenu©
 JMenuItem©
 setAccelerator(KeyStroke obj)
 JCheckBoxMenuItem
 JRadioButtonMenuItem

Para el ejercicio la clase StyledEditorKit permite maneja el texto que se encuentra en un textpane con comodidad y por
selección.

MENUS EMERGENTES
Cuando se utiliza el botón secundario del ratón.
 JPopupMenu
o setComponentPopUpMenu(Component c)(m) –> para indicar sobre que componente será visible

BARRAS DE HERRAMIENTAS
 JToolbar

Se le debe indicar un BorderLayout para poder arrastrar la barra.

DISPOSICIONES AVANZADAS
DISPOSICION EN FLOW (FLOWLAYOUT)
DISPOSICION EN BORDE(BORDERLAYOUT)
DISPOSICION EN REJILLA(GRIDLAYOUT)
DISPOSICION EN CAJA (BOXLAYOUT)
 BOX
o CreateHorizontalBox()
o createVerticalBox()
o createVerticalStrut(int height) distancia en px entre los elementos en vertical
o createHorizontalStrut(int width) distancia en px entre los elementos en horizontal
o createGlue() adaptar la distancia entre elementos para los casos donde se redimencionen los elementos
 SPRINGLAYOUT
o PutConstraint(String, Component, int, String, Component)
 SPRING
o Static constant(int a, int b, int c)
DISPOSICION LIBRE
Permite colocar los componentes sin un orden terminado ni posición concreta.
A nivel de programación de debe indicar la posición donde se quieren los componentes.
Para hacer un layout personalizado crear una clase que implemente:
 LayoutManager(i)
o addLayoutComponent(String nombre, Component componente)(m)
o layoutContainer(Container padre)(m)
o minimumLayoutSize(Container padre)(m)
o preferredLayoutSize(Container padre)(m)
o removeLayoutComponent(Component componente)(m)
 Container©
o GetComponentCount()
o getComponent(int i)
o getWidth()(m)

VENTANAS EMERGENTES
Se pueden definir en tres grupos:
1. Cuadros de dialogo -> JOptionPane
2. Selección de ficheros ->JFileChooser
3. Selección de color-> JColorChooser
 JOptionPane
o ShowInputDialog
o ShowMessageDialog
o showConfirmDialog
o showOptionDialog

APPLETS Y APLICACIONES
Aplicación java que se ejecuta en un navegador de internet.
 Object
o Component
o Container
 Window
 Frame
 JFrame
 Panel
 Applet
 JApplet
Un applet no contiene método Main, es su lugar hay un método de inicio llamado Init.
Para el paso de parámetros es necesario tener un:
<param name= “nombre” value = “valor”> ->lado del html
getParameter(“nombre”) -> lado de java

EMPAQUETADO:
Ficheros comprimidos .JAR

Firmar empaquetados JAR:


En otras palabras, es certificar el archivo jar.
Crear una firma digital conteniendo:
 Nombre
 Organización
 Datos Organización
 Provincia
 Población
 País
1. Crear un certificado (firma) para la Aplicación (JAR)
a. Necesitamos herramienta KeyTool
2. Firma la aplicación (JAR) con el certificado generado
a. Necesitamos jarsigner
Anteriores herramientas para cerficación incluidas en JDK.

PASOS:

1. CMD
2. Keytool –genkey –alias BryanS –validity 160 –v
3. Contraseña
4. Datos del certificado
5. Si
6. Confirmación de contraseña anterior
7. Jarsigner.exe nombredejar.jar BryanS –verbose
8. Contraseña anterior

Para los empaquetados los recursos externos no se incluyen.

JAVA WEB START


Compartir la aplicación mediante WEB.
XML.JNLP -> Java Network Launch Protocol -> www.ejemplo.com/aplicacion.jnlp
 Ventaja 1 no se necesita embeberse dentro de algo adicional.
 Ventaja 2 se distribuye con facilidad
 Ventaja 3 aplicación siempre actualizada.

MANEJO DE EXECEPCIONES
 ERROR
 TIEMPO DE COMPILACION (SINTAXIS)
 TIEMPO DE EJECUCION
o THROWABLE
 ERROR -> ERROR DE HARDWARE
 EXCEPTION ->
 IOEXCEPTION -> EXCEPCIONES COMPROBADAS
 RUNTATIMEEXCEPTION -> EXCEPCIONES NO COMPROBADAS

Estructura try-catch
Try{…..

………

…}catch(IOException e){
……..

……}

THROWS
No es recomendable la utilización de éste método ya que se puede mejorar el código.
El funcionamiento del Throws es para crear un objeto del tipo error que se puede dar, pero es necesario que después de
crearlo, capturarlo.
Si al método se le indica que puede lanzar una excepción de cualquier tipo, lo correcto es implementar el try catch en el
lugar donde se utilizará el método, no en donde se está implementando.
Cuando la excepción es una comprobada Java obliga a implementar el try-catch de lo contrario no.

THROW -> Excepciones manuales.


Se utiliza en cualquier punto del código.
Una excepción que obligatoriamente tiene que suceder.

 EXCEPTION
o GetMessage()
o getClass()
o getName()
EXCEPCIONES PERSONALIZADAS
EXCEPCIONES MULTIPLES
FINALLY
Bloque de la excepción que sí o sí se ejecuta.

SECUENCIAS (STREAMS) Flujos de Datos


Se pueden utilizar los archivos como:
1. Flujos de Bytes
a. InputStream -> para visualizar
b. OutputStream -> para escribir
2. Flujos de caracteres

InputStreamReader: Convierte los bytes en los caracteres correspondientes.


Buffers (filtro): Memoria interna que se coloca entre medias de Java y el archivo para leer o escribir.
1. BuffredReader
a. readLine()
2. BufferedWriter
a. Writeline()

1. FileInputStream
2. FileOutputStream

SERIALIZACION
Convertir un objeto en una suceción de Bytes.
 Interfaz Serializable -> implica que se le indica a la clase que algunos de sus integrantes están suceptibles a ser
grabados externamente.
 ObjectOutputStream©
o WriteObject()(m)
 ObjectInputStream©
o readObject(m)
CAMBIOS DE VERSIONES
SERIAL VERSION UID:
Los programas Java tienen como hulla un demoninado SHA. Es una sucesión de 20 Bytes que se denomina SERIAL
VERSION UID. Java tiene que hacer una comparación de Serial Version UID para poder deserealizar un programa de lo
contrario no lo podrá hacer.
Para poder evitar el caso que Java genera el propio SHA, es conveniente crear una constantes private static final long
serialVerionUID = 1L;

Siempre que se implemente Serializable, o se herede de una clase que lo implementa es conveniente colocar el Serial
Version.

FICHEROS Y DIRECTORIOS
 File©
o String getAbsolutePath() -> ruta absoluta de un archivo o directorio
o Boolean exists() -> archivo o directorio existe en ruta especificada.
o String getPath()
o String[] list()
o String getCanonicalPath()
o Boolean idDirectory()

ARRAY LIST E ITERADORES


Mecanismo que permite acceder secuencialmente a una colección.

 ArrayList
o Iterator()m
 Iterator(i)
o hasNext()
o next()
o remove()

PROGRAMACION GENERICA
Consiste escribir código que se pueda reutilizar entre diferentes tipos de objetos. Usando genéricos se pueden evitar:
1. Uso continuo del casting
2. Complicación del código
3. No posibilidad de comprobación de errores

Ventajas:
1. Sencillez en código
2. Reutilización del código con diferentes tipos de objetos
3. Comprobación de errores en tiempo de compilación

HERENCIA O TIPOS COMODION


El principio de sustitución no funcionado en genéricos.
Clase<Jefe> ¡= Clase<Empleado> -> Jefe == Empleado

PROGRAMACION CONCURRENTE THREADS(HILOS)


Los programas multitareas son los que permites hacer muchas tareas al mismo tiempo.

Para hacer una aplicación multitarea es necesario:


1. Crear clase que implemente la interfaz Runnable(método run)
2. Escribir el código de la tarea adentro del método run
3. Instancear la clase creada y almacenar la instancia en variable de tipo Runnable.
4. Crear instancia de la clase Thread pasando como parámetro al constructor de Thread el objeto Runnable
anterio.
5. Poner en marcha el hilo de ejecución con el método start() de la clase Thread.

 Thread
o Void Interrupt() -> no se puede utilizar si se está utilizando slepp().
o Boolean isInterrumped()
o Static boolean interrupted()
o Stop() método obsoleto.

Los estados que puede tener un hilo son:


1. Nuevo -> aun no start
2. Ejecutable -> start
a. Bloqueado -> sleep()
3. Muerto
Hay dos alternativas para poder hacer que haya un bloqueo y solo un hilo pueda ejecutar la instrucción:
1. Join() -> método directo de Thread
2. Lock() -> método de Reentracklook

Para establecer bloqueos sin perder el hilo y que posteriormente haga su trabajo se usa la Interfaz Condition con sus
métodos a disposición, se pueden crear cuantas condiciones se quiera, se implementa un cierre explicito con cuantas
condiciones se quieran.

Una alternativa puede ser la clase Object con sus métodos, pero únicamente se puede manejar una condición:
1. Void wait() == Condition -> void await()
2. Void notifyAll() == Condition -> void signalAll()
Para el Object hay un cierre implicito, para los casos donde se trabajan con hilos se puede crear una condición para el
cierre no más de uno.

COLECCIONES
Almacén de objetos dinámicos.

Ventajas:
 Puede cambiar el tamaño dinámicamente
 Pueden guardar objetos tanto como primitivos.
 Puede ir provistas de ordenamiento.
 Se puede insertar y eliminar elementos.

 COLLECTION (I)
o SET (I) -> almacena no repetidos (si se implementa equal y hashcode) y no ordenados, más eficiencia
 HashSet© -> Rápida, No duplicados, No ordenación, No acceso aleatorio
 LinkedHashSet© ->Ordenación por entrada, Eficiente al acceder, No eficiente al agregar
 TreeSet© ->Ordenado, por eficiente
 EnumSet© ->La mejor para los tipos enumerados.
 CopyOnWriteArraySet© ->Específico concurrencia, Eficiencia Lectura, Poca eficiencia escritura,
poco eficiente al eliminar.
 ConcurrentSkipListSet© ->Específico concurrencia, Admite Ordenación, Con muchos elementos
no es eficiente.
 SORTEDSET(I)
o LIST(I) -> almacena repetidos e indexados con valores numéricos, ofrece acceso aleatorio, eficiencia
lenta
 ArrayList© -> Sea rápido el acceso a los elementos. Se adapta a un gran número de escenarios.
 LinkedList© ->Listas enlazadas. Gran eficiencia agregando y eliminando. No tanta eficiencia
leyendo elemento.
 Vector© -> OBSOLETO -> operaciones de concurrencia
 CopyOnWriteArrayList© -> Utilizada en programas concurrentes, eficiente en operaciones de
lectura, pero muy poco eficiente en operaciones de escritura.
o QUEUE -> no permite aleatorio, se permite acceder al final o inicio <-(cola)
 ArrayDeque©
 LinkedBlockingDeque©
 LinkedList©
 ProrityQueue©
 PriorityBlockingQueue©
o MAP(I) -> colección de elementos repetibles, indexados con clave única arbitraria
 HashMap© -> No ordenación, Eficiente
 LinkedHashMap© -> Ordenado por inserción, Permite ordenación por uso, Eficiencia Lectura,
Poca eficiencia escritura
 TreeMap© -> Ordenado por clave, Poco eficiente en todas sus operaciones
 EnumMap© ->Pemite Enum como claves, Muy eficiente.
 WeakHashMap© ->Utilizado para crear elementos que vaya borrando el sistema si no se
utilizan, Muy copo eficiente
 HashTable© -> Considerado Obsoleto, Utilizado en operaciones de concurrencia
 ConcurrentHashMap© ->Utilizado en concurrencia, No permite nulos.
 SORTEDMAP(I)

LIST©
Ventajas:
1. Acceso aleatorio
2. Están ordenadas(Collection.sort)
3. Añadir/eliminar sin restricción
4. ListIterator modifica en cualquier dirección
5. Sintaxis similar a Array
Desventajas:
1. Bajo rendimiento en operaciones concretas que se resolverían mejor con otras interfaces.

SET©
Ventajas:
1. No permite elementos duplicados
2. Uso sencillo del método add que además asegura no elementos duplicados.
Desventajas:
1. No tiene acceso aleatorio.
2. Poca eficiencia a la hora de ordenar elementos (y no siempre se puede).

MAP©
Ventajas:
1. Asociación Clave -> Valor
2. No claves iguales
Desventajas
1. Poca eficiencia a comparación de las otras colecciones.

QUEUE©
Ventajas:
1. Muy rápido acceder al primer elemento y al último
2. Permite crear colas de elementos muy eficientes (LIFO/FIFO)
Desventajas:
1. Acceso lento a los elementos intermedios.

HASHCODE AND EQUALS


Cada que se crea una variable de un tipo primitivo, almaceno espacio de memoria en Stack.
Cada que se crear una variable de tipo objeto, almaceno espacio en Heap (creando una referencia llamada HashCode) y
Stack.

OBJETOS ITERADORES
Recorrer una colección de elemento a elemento. Nos tenemos que apoyar en Iterator<E>

1. ITERATOR<E>
o Next()
o Hasnext()
o Remove()

SOCKETS
Permite crear aplicaciones Java tipo cliente-servidor. Puente virtual que comunica al cliente con el servidor con el fin de
trasladar información.

Para construir con Socket es necesario:


1. Dirección del Servidor (ip o dominio)
2. Puerto de recepción
3. OutputStream (cliente)
4. InputStream(servidor)
Ejemplos:
1. VNC
2. TeamViewer
3. SubSeven
4. BackOrifice

JDBC – JAVA DATA BASE CONECTIVITY


Paquetes a manejar:
1. Java.SQL
2. JAVAX.SQL

Pasos para establecer una conexión:


1. Establecer conexión con base de datos.
2. Crear objeto Statement
3. Ejecutar sentencia SQL
4. Leer ResultSet

 Establecer conexión con base de datos.


Crear objeto de tipo Conection.
Jdbc:mysql://localhost:9999/gestionPedidos ->mysql
Jdbc:odbc:DSN_gestionPedidos
Jdbc:oracle:brya@servidor:9999:gestionPedidos

Adicional a esto es necesario especificar usuario y contraseña.

 Crear objeto Statement


Se crea objeto Statemente de Conexión.createStatement()

 Ejecutar sentencia SQL


executeQuery(Sentencia SQL); -> esto devuelte un resultset.

 Leer ResultSet.
getString(),
next()
Utilizando While o Until

METADATOS
Datos que describen la base de datos o alguna de sus partes.
TIPOS:
 Relativos a la base de datos
a. Información del gestor BBDD
b. Versión del gestor
c. Driver de la conexión
d. Versión del Driver
 Relativos a un conjunto de resultados
a. Nombres de las tablas
b. Nombres de los campos de las tablas
c. Tipos de datos de los campos
d. Propiedades de los campos
 Relativos a los parámetros de las sentencias preparadas

Para obtener los metadatos se utiliza


 Connection
o getMetadata()
 DatabaseMetadata
 getDataBaseProductName()
 getDataBaseProductVersion()
 getDriverName()
 getDriverVersion()
 getTables()
 getString()
 getColumns()
JSP -> JAVA SERVER PAGE (PAGINAS DE SERVIDOR JAVA)
Páginas web del lado del servidor que son dinámica.

1. Código java que se ejecuta en un servidor


2. Lee las acciones del usuario casi siempre desde formularios HTML.
3. Devuelve una página HTML que se genera de forma dinámica dependiente de las acciones del usuario.

El código JSP casi siempre estará alojado en el servidor.

 Es necesario JEE, que contiene CLIENTE-SERVIDOR-BBDD


 SERVIDOR WEB TOMCAT

CONSTRUCCION DE JSP
 Código java dentro de HTML
 Archivo con extención JSP

Ejemplo
<html>
<body>
La hora del servidor es <%=new java.util.Date() %>
</body>
</html>

Qué tipo de código se puede usar en JSP:


1. Expresiones: <%= expresión Java %> (solo una línea de código)
2. Scriptlets: <% vías líneas de código java%>
3. Declaraciones: <%! Declaración de variables o métodos%>

Buenas prácticas:
 No abusar de scriptles y declaraciones en archivos JSP
 Evitar la programación de cientos de líneas en archivos JSP
 Modular el programa separando el código Java en clases independientes
 Utilizar MVC u otro patrón de diseño que se adecue al diseño.

Para exportar un paquete java al JSP:


%@page import= "jps.CalculosMatematicos.* , ...... , ....."%

Objetos JSP Predefinidos


Para añadir funcionalidades de las páginas web.

 Request: Representar la petición del cliente. Pertenece a la interfaz (javax.servlet.ServletRequest). Proporciona


los datos recibidos vía formulario, GET/POST etc.
 Response: Este objeto encapsula la respuesta por parte del servidor. Pertenece a interfaz
(javax.servlet.ServletResponse).
 Session: Este objeto proporciona una sesión única para cada usuario. Pertenece a interfaz
(javax.servlet.http.HttpSession)
 Out: Este objeto proporciona recursos para escribir contenido en páginas web. Pertenece a interfaz
(javax.servlet.jsp.JspWriter).

Para incluir en jsp otros archivos que pueden ser o no jsp se utiliza la palabra reservada INCLUDE.

Cuando se elabora un jsp si es necesario colocar el Class.forName(“”)

USUARIOS
Cuando un usuario ingresa al sistema el servidor guarda en memoria la sesión única del usuario, esto da lugar a poder
acceder a distintos métodos utilizables de la sesión.

 SetAttribute(nombre, objeto) establecer datos que se memorizaran en la sesión


 getAttribute(nombre) devolver objeto que ha sido memorizado
 isNew() comprobar si la sesión es nueva
 getId() identificativo de la sesión
 invalidate() resetear la sesión
 setMaxInactiveInterval(tiempo) tiempo máximo de duración en la sesión
COOKIES
Archivos de texto que se almacena en el ordenador del usuario durante la navegación.
La utilidad es para personalizar un sitio web basándose en las preferencias de usuario.

La información en guardada en un par de nombre y valor. Nombre identificativo de la acción y el valor de esa acción.
Un sitio no almacena una única Cookie.
Las cookies de terceros pueden ser los anuncios mostrados en las páginas web relacionados con publicidad u otras
cosas.

CREACIÓN DE COOKIE(WRITE)
 Cookie©
o SetMaxAge(int segundos) (m)
 HttpServletResponse (i)
o addCookie(Cookie la_cookie) (m)

LECTURA DE COOKIES (READ)


 HttpServletRequest(i)
o GetCookies()
 Cookie©
o getValue(m)
o getName(m)
JSP TAGS
Son librerías de etiquetas con apariencia similar a xml utilizadas en páginas JSP
Sirven para hacer más simple la programación, lectura y modificación de páginas dinámicas JSP.
No son imprescindibles, pero si recomendables.
 Separa el código Java de HTML
 Se integran limpiamente en el código HTML.
 Minimizan el código en la página WEB.
 Hacen que el código dinámico sea reutilizable.
 Hacen que el mantenimiento de las páginas web sea más sencillo.

TIPOS
 JSP TAGS
o JSP CUSTOM TAGS (PROPIAS) fabricadas propiamente
o JSTL ESTÁNDAR (TAG LIBRARY) librearías que nos proporcionan que se pueden descargar
 Core
 Funcionalidades básicas de JSP, Bucles, condicionales, variables, etc.
 Formato
 Aplican formato a elementos dentro de JSP, Formato fecha, número moneda.
Internacionalización
 XML
 Manipulación de código XML dentro de páginas web JSP
 SQL
 Manipulación de BBDD desde páginas JSP. Práctica no recomendada. Se recomienda en
su lugar el uso de Beans.

JSTL. <% taglib prefix=”c” uri=http://java.sun.com/jsp/jstl/core %>

JSTL JAVA API.

SERVLETS
Programa java que se ejecuta en un servidor WEB.
El servlet recibe petición del cliente (navegador) y realiza su tarea.
Que tarea hace el servlet:
1. Genera una respuesta HTMl
2. Llamar a otro servlet
3. Utiliza cookies y sesiones
4. Enlace (controlador) entre el cliente y BBDD.

Que utilizar entre JSP y SERVLET, cuando ambos son parecidos.?

JSP
1. Cuando lo lógica a programar sea poca.
SERVLET
2. Cuando el código en muy complejo

Pasos para creación de servlet:


1. Crear clase que herede de HTTPSERVLET
a. HttpServlet tiene entre otros el método doGet(Request, response). Este método es el encargado de
recibir la petición (Request)
2. Establecer el formato de la respueta (html)
3. Generar el contenido de la respueta (html)

 Servlet(i)
o HttpServlet©
 doGet(HttpServletRequest, HttpServletResponse)(m)

 ServletResponse(i)
o getWrite()(m)
 HttpServletResponse(i)
o printWrite()©

Se pueden utilizar dos métodos para enviar datos desde un formulario al servidor (Request):
 get
o Utilizar barra de navegación del navegados como vehículo de transporte del navegador.
o www.ejemplo.com?campo1=valor1&campo2=valor2....
o Recomendable para depuraciones
o Limitaciones en cuanto a la cantidad de datos a enviar
o Se puede guardar en favorito o enviar la dirección a alguien
 Post
o Se envía la información del formulario mediante el objeto Request como vehículo de transaporte
(invisible).
o Util para enviar gran cantidad de información.
o Capacidad para enviar datos adjuntos, datos binarios.

También podría gustarte