martes, 6 de noviembre de 2012

OBJETO SESSION EN ASP.NET




La necesidad y utilidad del método session para transferir variables


En los programas que hemos visto hasta ahora, hemos utilizado variables que solo existían en el archivo que era ejecutado. Cuando cargábamos otra página distinta, los valores de estas variables se perdían a menos que nos tomásemos la molestia de pasarlos por la URL o inscribirlos en las cookies o en un formulario para su posterior explotación. Estos métodos, aunque útiles, no son todo lo prácticos que podrían en determinados casos en los que la variable que queremos conservar ha de ser utilizada en varios scripts diferentes y distantes los unos de los otros.

Podríamos pensar que ese problema puede quedar resuelto con las cookies ya que se trata de variables que pueden ser invocadas en cualquier momento. El problema, ya lo hemos dicho, es que las cookies no son aceptadas ni por la totalidad de los usuarios ni por la totalidad de los navegadores lo cual implica que una aplicación que se sirviera de las cookies para pasar variables de un archivo a otro no sería 100% infalible.

Nos resulta pues necesario el poder declarar ciertas variables que puedan ser reutilizadas tantas veces como queramos dentro de una misma sesión. Imaginemos un sitio multilingüe en el que cada vez que queremos imprimir un mensaje en cualquier página necesitamos saber en qué idioma debe hacerse. Podríamos introducir un script identificador de la lengua del navegador en cada uno de los archivos o bien declarar una variable que fuese valida para toda la sesión y que tuviese como valor el idioma reconocido en un primer momento.

Estas variables que son válidas durante una sesión y que luego son "olvidadas" son definidas con el objeto Session de la siguiente forma:

Session("nombre de la variable") = valor de la variable

Una vez definida, la variable Session, será almacenada en memoria y podrá ser empleada en cualquier script del sitio web.

La duración de una sesión viene definida por defecto en 20 minutos. Esto quiere decir que si en 20 minutos no realizamos ninguna acción, el servidor dará por finalizada la sesión y todas las variables Session serán abandonadas. Esta duración puede ser modificada con la propiedad Timeout:

Session.Timeout = n° de minutos que queramos que dure

Una forma de borrar las variables Session sin necesidad de esperara que pase este plazo es a partir del método Abandon:

Session.Abandon

De este modo todas las variables Session serán borradas y la sesión se dará por finalizada. Este método puede resultar practico cuando estemos haciendo pruebas con el script y necesitemos reinicializar las variables.

Lo que se suele hacer es crear un archivo en el que se borran las cookies y se abandona la sesión. Este archivo será ejecutado cuando queramos hacer borrón y cuenta nueva:

Ejercicio

anexe una pagina aspx al proyecto llamado calculadora.aspx

en cual diseñe una calculadora con operaciones basicas suma , resta , multiplicacion , division , el igual y limpiar


  • Diseñara una clase llamada operacion en el cual incluiran un metodo de tipo funcion llamada igual



Public Function igual(ByVal n1 As String, ByVal n2 As String, ByVal op As String) As String
        Dim final As String

        Select Case op
            Case "suma"

                final = Str(Val(n1) + Val(n2))

            Case "resta"

                final = Str(Val(n1) + Val(n2))

        End Select

        Return final
    End Function




  • en el webform de la pagina   codigo que incluiras en el boton uno aqui llamada b1 para el numero uno




Protected Sub B1_Click(sender As Object, e As EventArgs) Handles B1.Click
        TextBox1.Text = TextBox1.Text + "1"
    End Sub




  • en el boton de suma


 Session("VALOR") = TextBox1.Text
        Session("OPERADOR") = "suma"
        TextBox1.Text = ""
        MsgBox(Session("VALOR"))


  • en el boton de igualdad


Dim Vvalor As String
        Dim Voperador As String
        Vvalor = Session("VALOR")
        Voperador = Session("OPERADOR")
        MsgBox(Vvalor + "  " + Voperador)
        TextBox1.Text = clase.igual(Vvalor, TextBox1.Text, Voperador)


terminar el ejercicio con los demas botones asi como las operaciones en el metodo de la clase 




CONTENEDORES EN JAVA

CONTENEDORES


Botones

Los botones son de las herramientas principales en cualquier aplicación gráfica, la clase encargada de los botones es JButton, un botón es un contenedor que puede tener tanto una imagen, texto o ambos, dentro de el.Las formas para crear un botón son:


JButton(String texto);
JButton(Icon icono);
JButton(String texto, Icon icono);

La primera opción crea un botón con sólo texto (como lo hemos utilizado), la segunda opción crea un botón con texto e imagen, por ejemplo:

Jbutton boton = JButton("Guardar", new ImageIcon("save.jpg"));

Esto creará un botón como el siguiente:

figura

Los botones responden principalmente a actionListener (aunque obviamente también pueden responder a focusListener), y el método actionPerformed de la interfaz actionListener, corresponde a la acción de presionar el botón.

Algunos métodos importantes de la clase JButton son:
Valor de RetornoNombre del Método
voidsetText(String texto)
cambia el texto al botón.
StringgetText()
Obtiene el texto del Botón.
voidsetIcon(Icon icono)
cambia el ícono al botón.
IcongetIcon()
Obtiene el ícono del Botón.


Existe una clase similar a Button (de hecho forman parte de la clase abstracta AbstractButton) llamada JToggleButton que permite tener la funcionalidad de botones presionados, un ejemplo de esto, son los botones de Negrita, Cursiva, 

Subrayado en los editores de texto comunes.

El JToggleButton es muy similar a JButton de hecho sus constructores son muy parecidos:

JToggleButton(String texto);
JToggleButton(Icon icono);
JToggleButton(String texto, Icon icono);

Un método de los componentes que nos será de utilidad será la de setName(String nombre) este método nos permite darle un nombre (mejor dicho cambiarlo) interno al componente, así por ejemplo si tenemos dos botones, ambos con el mismo nombre (aunque en princpio esto da a lugar a ambigüedades) para diferenciarlos podemos darles nombres internos, con los cuales los reconoceremos dentro del programa, gracias al método setName.


Etiquetas

Las etiquetas nos permiten mostrar información o mostrar una imagen:
JLabel(String texto);
JLabel(String texto, int posicion_horizontal);
JLabel(Icon imagen);
JLabel(Icon imagen, int posicion_horizontal);
JLabel(String texto, Icon imagen, int posicion_horizontal);
Al igual que JButton tenemos métodos para cambiar las etiquetas:
Valor de RetornoNombre del Método
voidsetText(String texto)
cambia el texto de la etiqueta.
StringgetText()
Obtiene el texto de la etiqueta.
voidsetIcon(Icon icono)
cambia el ícono de la etiqueta.
IcongetIcon()
Obtiene el ícono de la etiqueta.

Un método que es útil para fines estéticos es el de setFont(Font), el cuál es de la clase JComponent y funciona para todos los componentes que desplieguen texto.
compomente.setFont(Font f);
Font f = new Font(String nombre_fuente, int estilo, int tamano);

Cajas de Texto

Las cajas de texto permiten introducir información de parte del usuario, son parte también de los componentes más utilizados existen dos tipos de Cajas de Texto las cajas de texto de una sóla línea y las cajas de texto de varias líneas, las primeras son conocidas como: JTextField y las segundas como JTextArea.
JTextField();
JTextField(int columnas);
JTextField(String texto_inicial);
JTextField(String texto_inicial, int columnas);

JTextArea();
JTextArea(int columnas, int filas);
JTextArea(String texto_inicial);
JTextArea(String texto_inicial, int columnas, int filas);
figura
Los métodos importantes para JTextField son:
Valor de RetornoNombre del Método
intgetColumns()
Obtiene el tamaño de la caja de texto.
intgetColumnWidth()
Obtiene número de caracteres introducidos.
voidsetFont(Font fuente)
cambia la fuente.
voidsetColumns(int columnas)
Establece el ancho de la caja de texto.
Y para JTextArea:
Valor de RetornoNombre del Método
voidappend(String cadena)
Agrega al final del área de texto cadena.
voidinsert(String cadena, int pos)
Agrega la cadena. después de pos
intgetColumns()
Obtiene el tamaño de la caja de texto.
intgetColumnWidth()
Obtiene número de caracteres introducidos.
intgetLineCount()
Obtiene número de líneas.
voidsetFont(Font fuente)
cambia la fuente.
voidsetColumns(int columnas)
Establece el ancho del área de texto.
voidsetRows(int filas)
Establece las filas del área de texto.
Las cajas de texto tienen propieadades interesantes como son:
Valor de RetornoNombre del Método
voidcut()
Corta el texto.
voidcopy()
Copia el texto.
voidpaste()
Pega el texto
voidselect(int inicio, int final)
Selecciona el texto desde la posición inicio hasta la posición final.
voidselectAll()
Selecciona todo el texto.
voidsetSelectedTextColor(Color c)
Asigna el color para el texto seleccionado.
voidsetSelectionColor(Color c)
Asigna el color para la selección.
voidsetSelectionStart(int inicio)
Indica donde debe comenzar la selección.
voidsetSelectionEnd(int final)
Indica donde debe finalizar la selección.

Cuadros de Diálogos

Los cuadros de diálogo proveen otro tipo de interacción con el usuario, los cuadros de diálogo más comunes son los de confirmación:figura Se confirman acciones como borrado, actualización, etc., pero en si un cuadro de diálogo puede tratarse como otra ventana, excepto con una propiedad: El Modal, el modal permite que si se abre un cuadro de diálogo, la ventana que lo creó no pueda ser accesada hasta que el usuario cierre el cuadro de diálogo, esto puede ser muy importante cuando tenemos que confirmar algo antes de que el usuario pueda utilizarlo (por ejemplo, que inicie una sesión dando su nombre de usuario y contraseña), o que el cuadro de diálogo permanezca abierto sin que interfiera con la ventana padre (puede estar desplegando información útil al usuario pero no necesaria para el correcto funcionamiento del programa). Para crear un cuadro de diálogo:
JDialog dialogo = new JDialog(ventana_padre, "Dialogo", yes);
... /*Agregarle al dialogo algunos componentes*/
/*Necesitamos agregarle un manejador de eventos como 
cualquier otra ventana*/
dialogo.addWindowListener(WindowListener al);
dialogo.setSize(200,300); /*En caso de ser necesario*/
dialogo.setVisible(true); /*Funciona como una ventana, el dialogo
                           * existira, pero no sera mostrado.
                           */
...
Dentro de los métodos más usados para los diálogos, están la posibilidad de poner el modal, y el de permitir que se cambie su tamaõ:
Valor de RetornoNombre del Método
voidsetModal(boolean modal)
Cambia el modal con el valor booleano modal
voidsetResizable(boolean resize)
Permite cambiar de tamaño la ventana.
booleangetModal()
Obtiene el valor de modal que tiene asignada la ventana
Nota Si se ejecuta simplmente el método setModal no cambiará en nada el modal real, por lo que hay que ocultar el diálogo, cambiar el modal y después volverlo a mostrar y el modal será asignado correctamente. Hay que aclarar, que puede parecer sencillo, asignarle el mismo objeto WindowListener que usamos para la ventana padre, pero el problema es que la ventana padre termina la ejecución, aparte de liberar recursos. Es mejor utilizar un WindowListener apropiado que en el método windowClosing no termine la aplicación, sino que haga uso del método dispose. Por ejemplo:
/*Extenderla de WindowAdapter que es una clase abstracta
que implementa a WindowListener, y asi evitamos implementar
todos los m\'etodos de WindowListener.
*/
public class CerrarDialogo extends WindowAdapter
{
    public void windowClosing(WindowEvent evt)
    {
       evt.getWindow().dispose();  
    }
}

Listas

Swing proporciona las Listas para poder seleccionar datos de entre una serie de posibilidades.Una lista puede ser construida ya sea de un arreglo de datos (de tipo Object) o de un objeto Vector.
La clase JList es creada mediante alguno de estos dos métodos:
new JList(Object[] datos);
new JList(Vector datos);
Entre los métodos más utilizados para la lista son:
Valor de RetornoNombre del Método
voidsetSelectionMode(int modo)
Determina si la seleccion será. (determinada por modo)
ListSelectionModel.SINGLE_SELECTION
Sólo selecciona un valor
ListSelectionModel.SINGLE_INTERVAL_SELECTION
Selecciona varios valores, pero que sean contiguos
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
Selecciona varios valores, sin depender de la contiguidad
ObjectgetSelectedValue()
Retorna el valor seleccionado.
Object[]getSelectedValues()
Retorna los valores seleccionado.
intgetSelectedIndex()
Obtiene el índice seleccioando.
int[]getSelectedIndices()
Obtiene los índices seleccioandos.
voidsetSelectedIndex(int indice)
Selecciona el índice de la lista
voidsetSelectedIndices(int indices[])
Selecciona los índices de la lista
voidsetSelectedValue(Object elemento)
selecciona el elemento de la lista
La lista sólo se le puede asignar un evento que proviene del paquete javax.swing.event el cuál es el de ListSelectionListener que sólo tiene un método:  public void valueChanged(ListSelectionEvent e)  Que funciona para saber cuándo un elemento ha sido seleccionado.
Y se registra con: addListSelectionListener(ListSelectionListener listener)

JComboBox

los JComboBox son muy parecidos a las Listas, excepto que estos también permiten la introducción de los datos, las maneras para crear son muy similares a las de JList:
new JComboBox();
new JComboBox(Object[] datos);
new JComboBox(Vector datos);
Lo métodos son:
Valor de RetornoNombre del Método
voidaddItem(Object item)
Agrega un elemento al combo
ObjectgetSelectedItem()
Retorna el valor seleccionado.
intgetSelectedIndex()
Obtiene el índice seleccioando.
voidsetEditable(boolean tipo)
Determina si sólo mostrara los valores (false) o si se
pueden escribir nuevos valores (true)
Y al igual que que JList, tiene un Listener que es: ItemListener que sólo implementa un método: public void itemStateChanged(ItemEvent e) que se realiza cuando se cambia a un item.
El registro del Listener se realiza con el método addItemListener de la clase JComboBox

CheckBoxes

Los JCheckBox permite tener botones que pueden ser seleccionados como verdadero o falso.
Se parece mucho a un JButton en la manera de iniciar:
new JCheckBox(String texto);
new JCheckBox(String texto, boolean seleccionado);
new JCheckBox(Icon icono, String texto);
new JCheckBox(Icon icono, String texto, boolean seleccionado);
new JCheckBox(Icon icono);
new JCheckBox(Icon icono, boolean seleccionado);
El manejador de eventos es el de addActionListener para cuando se presione sobre un botón.

JRadioButton

Los botones de radio son útiles cuando seleccionamos entre algunos valores (que no son tantos como para ponerlos en una lista, o en un JComboBox), por ejemplo seleccionar entre Masculino y Femenino ya que un checkbox podría llegar a ser confuso.
Los botones de radio, se inicializan como cualquier boton:
new JRadioButton(String texto);
new JRadioButton(String texto, boolean seleccionado);
new JRadioButton(Icon icono, String texto);
new JRadioButton(Icon icono, String texto, boolean seleccionado);
new JRadioButton(Icon icono);
new JRadioButton(Icon icono, boolean seleccionado);
Salvo que hay que agregarlos todo a un ButtonGroup para que todos los botones de radio de ese grupo sean entre los que se puedan seleccionar.
new ButtonGroup();
y el método importante es:
add(AbstractButton boton);
Además hay que agregar a cada botón de radio, un ActionListener para saber cuál ha sido seleccionado.

Menús

Para agregar el menú que ya conocemos a una ventana instancia JFrame basta crear una objeto de tipo JMenuBar y con el método setJMenuBar(menuBar) de JFrame lo insertamos en la ventana; o si lo prefiere, con el métodogetContentPane().add(Component) podemos agregarlo en la posición que queramos. Un JMenuBar se compone de un conjunto de Menús instancias de JMenu. Cada JMenu se compone de elementos (item) que pueden ser instancias de JMenuItem (los elementos que se pueden seleccionar en el menú) y de instancias de JMenu (en caso de que se quiera un submenú). Para que se vea más claro veamos el siguiente ejemplo que crea los menú clásico de Archivo y Edicion
import javax.swing.*;
import java.awt.event.*;
public class SimpleMenu {
   public static JMenuBar creaMenu() { 
      JMenuBar menubar = new JMenuBar();
      JMenu menu = new JMenu("Archivo");
      JMenuItem item = new JMenuItem("Abrir");
      menu.add(item);
      item = new JMenuItem("Salir");
      menu.add(item);
      menubar.add(menu);
      menu = new JMenu("Edicion");
      item = new JMenuItem("Cortar");
      menu.add(item);
      item = new JMenuItem("Copiar");   
      menu.add(item);
      menubar.add(menu);
      return menubar; 
   }
   public static void main(String[] pars) {
      JFrame frame = new JFrame("Ejemplo simple de un menu");
      frame.setJMenuBar(creaMenu());
      frame.setSize(400, 300);
      frame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent we) {
            System.exit(0);
         }
      });
      frame.setVisible(true);   
   }
}


Figura: Jerarquía de la clase JMenuItem
\includegraphics[]{menus01.ps}
Como se puede observar en la figura anterior los items de menús son simples botones, y por lógica, los eventos que actúa sobre cada item se manejan igual que los botones. Además hay que observar que existe el JCheckboxMenuItem yJRadioButtonMenuItem lo cual son items de los menús, que tienen la misma apariencia que los checkbox clásicos y el RadioButton, respectivamente.Y por si fuera poco se utilizan de la misma forma.

Menús emergentes

Por lo regular los menús emergentes se despliegan normalmente cuando presionamos el botón derecho del mouse sobre cierto componente, si es así, para crear uno es necesario agregar un listener del ratón a el(los) componente(s) que queremos que se vea(n) afectado por dicha situación. El menú que aparece no es una instancia de JMenu, sino una de JPopupMenu, y se le agregan los elementos de la misma forma que a un JMenu. Este sería el código para crear una instancia de JPopupMenu con las opciones {Azul, Verde, Rojo}.
JPopupMenu popup = new JPopupMenu();
JMenuItem menuItem = new JMenuItem("Azul");
popup.add(menuItem);
menuItem = new JMenuItem("Verde");
popup.add(menuItem);
menuItem = new JMenuItem("Rojo");
popup.add(menuItem);
Ahora para el manejo del evento del mouse, una implementación sencilla sería la siguiente:
class PopupListener extends MouseAdapter {
    public void mousePressed(MouseEvent e) {
        maybeShowPopup(e);
    }
    public void mouseReleased(MouseEvent e) {
        maybeShowPopup(e);
    }
    private void maybeShowPopup(MouseEvent e) {
        if (e.isPopupTrigger()) {
            popup.show(e.getComponent(), e.getX(), e.getY());
        }
    }
}
Ahora, a cualquier componente que queramos que tenga su menú emergente basta agregarle una instancia de la clase creada antes para el manejo del evento del mouse(). El código necesario es el siguiente:
MouseListener popupListener = new PopupListener();
component.addMouseListener(popupListener);

lunes, 5 de noviembre de 2012

JFRAME EN JAVA




JFRAME EN JAVA

La clase JFrame implementa un objeto ventana, JFrame es una extensión de la clase Frame del paquete AWT.
Para crear una ventana, existen dos formas principales de hacerlo:

  1. Crear un objeto de la clase JFrame
  2. Extender la clase JFrame
El último método es muy útil cuando se crean ventanas personalizadas que se invocan repetidamente (como ventanas de error, o de información).
Crearemos una ventana con el primer método:

ventana = new JFrame();

Una vez creado una ventana JFrame, ésta obtiene el tamaño necesario para mostrar los componentes que existen dentro de la aplicación, como en nuestro ejemplo no existe componente, cambiaremos su tamaño inicial, con el método:

setSize(int ancho, int largo)
ventana.setSize(200,300);

Después cambiaremos su título para que sea el nombre de nuestra aplicación con el método: setTitle(String titulo)

ventana.setTitle("Hola mundo Swing");

El objeto existe, pero no es mostrado por defecto, entonces se hace la llamada a: setVisible(boolean)

ventana.setVisible(true);

con esto tendremos nuestra primera aplicación en Swing.

Código:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Window extends JFrame
{
    public Window()
    {
        this.setSize(400,500);
        this.setTitle("Primer Aplicacion Swing");
        this.setVisible(true);
    }
 
    public static void main(String []args)
    {
        new Window();
  
        JFrame jFrameWindow = new JFrame();
  
        jFrameWindow.setSize(400,500);
        /* se puede sustituir  por pack() para
         * que java calcule automaticamente el tama\~no
         * que necesita.
         */
        jFrameWindow.setTitle("Segunda Aplicacion Swing");
        jFrameWindow.setVisible(true);
    }
}

Se debe notar que aquí están los dos métodos de creación de ventanas, el primero es extendiendo la clase JFrame y el segundo por medio de la creación de un objeto jFrameWindow.

Hasta aquí hemos creado una aplicación sencilla, pero hemos de notar que la ventana no termina cuando damos click en el botón cerrar, esto es debido a que no hemos definido ningún evento.



Delegación de Eventos

Debido a la programación en objetos, Java ha logrado adaptar el enfoque orientado de eventos al paradigma de orientado a objeto, esto se logra mediante la creación de clases xxxAdapter que procesen información de teclado, ratón o de las ventanas mismas.Debido al enfoque multiplataforma de Java, esencialmente son interfases las que procesan la información del teclado o de ratón y son llamados Listeners, pero también se hacen implementaciones de esas interfases en clases Event.
Siempre hay que generar una clase heredada de algún xxxAdapter o implementarla desde su interfaz (que comúnmente es xxxListener) para procesar los eventos ocurridos. Una vez creada una clase heredada, hay que registrarla en el componente que queremos procese esos eventos, por ejemplo:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class EventoBoton implements ActionListener 
{
    public EventoBoton(){}
    
    public void actionPerformed(ActionEvent evt)
    {
        System.out.println("Evento: " + evt.getActionCommand());
    }
}

class Window extends JFrame
{
    ...
    JButton boton;
    ...
    
    public Window()
    {
        ... /*Inicializacion de la ventana y el boton*/
        boton.addActionListener(new EventoBoton());
        ...
    }
}
Entre las interfaces importantes tenemos:
ActionListener
Esta interfaz permite crear clases para todos los eventos de acción tales como botones (el único método provisto por esta interfaz es: actionPerformed(ActionEvent evt).
FocusListener
Interfaz para los eventos de Foco.
ItemListener
Interfaz para los eventos de cambios de Items (para listas).
KeyListener
Interfaz para los eventos de teclado.
MouseListener
Interfaz para los eventos de ratón.
WindowListener
Interfaz para los eventos de ventana.
Una vez con estos conceptos, nos detendremos en la Interfaz ActionListener, la cual sólo provee un método: void actionPerformed(ActionEvent evt), la clase ActionEvent provee los siguientes métodos:
Valor de RetornoNombre del Método
StringgetActionCommand()
Regresa la cadena de comando asociada con esta acción.
intgetModifiers()
Regresa las llaves modificadoras que se presionaron
durante la acción.
longgetWhen()
Regresa la hora cuando el evento ocurrió.
StringparamString()
Regresa una cadena de paraámetros identificando la acción.
ObjectgetSource()
Regresa el objeto que originó la acción.



El último método es de la clase EventObject de la que provienen todos los xxxEvents, cada uno de estos métodos nos permitirá conocer más acerca de los componentes que originaron el evento.
Supóngase que tenemos dos botones:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class EventoBoton implements ActionListener 
{
    public EventoBoton(){}
    
    public void actionPerformed(ActionEvent evt)
    {
        if (evt.getSource().toString().indexOf("boton1") != -1)
         System.out.println("Se presiono el boton1");
        else
         if (evt.getSource().toString().indexOf("boton2") != -1)
          System.out.println("Se presiono el boton2");         
         else
          System.out.println("Boton desconocido");
    }
}

class Window extends JFrame
{
    ...
    JButton boton1;
    JButton boton2;
    EventoBoton eventos;
    ...
    
    public Window()
    {
        ... /*Inicializacion de la ventana y el boton*/
        eventos = new EventoBoton();
        boton1.addActionListener(eventos);
        boton2.addActionListener(eventos);
        ...
    }
}
Con esta versión modificada de EventoBoton podemos obtener la fuente y hacer operaciones específicas para cada botón.



Tarea


  • tipea el siguiente programa y explica linea x linea lo que realiza



import javax.swing.*;
public class Formulario extends JFrame{
    public Formulario() {
        setLayout(null);
    }

    public static void main(String[] ar) {
        Formulario formulario1=new Formulario();
        formulario1.setBounds(10,20,400,300);
        formulario1.setVisible(true);
    }
}


Tipee el siguiente programa y explique que objeto nuevo  se esta incluyendo en este programa
y explique para que sirve


import javax.swing.*;
public class Formulario extends JFrame {
    private JLabel label1,label2;
    public Formulario() {
        setLayout(null);
        label1=new JLabel("Sistema de Facturación.");
        label1.setBounds(10,20,300,30);
        add(label1);
        label2=new JLabel("Vesion 1.0");
        label2.setBounds(10,100,100,30);
        add(label2);
    }
   
    public static void main(String[] ar) {
        Formulario formulario1=new Formulario();
        formulario1.setBounds(0,0,300,200);
        formulario1.setResizable(false);
        formulario1.setVisible(true);
    }
}





  • Crear tres objetos de la clase JLabel, ubicarlos uno debajo de otro y mostrar nombres de tres canciones de ADELE




  • Tipee el siguiente programa y explique que objeto nuevo  se esta incluyendo en este programa y explique para que sirve





import javax.swing.*;
import java.awt.event.*;
public class Formulario extends JFrame implements ActionListener{
    private JTextField textfield1;
    private JLabel label1;
    private JButton boton1;
    public Formulario() {
        setLayout(null);
        label1=new JLabel("Usuario:");
        label1.setBounds(10,10,100,30);
        add(label1);
        textfield1=new JTextField();
        textfield1.setBounds(120,10,150,20);
        add(textfield1);
        boton1=new JButton("Aceptar");
        boton1.setBounds(10,80,100,30);
        add(boton1);
        boton1.addActionListener(this);
    }
   
    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==boton1) {
            String cad=textfield1.getText();
            setTitle(cad);
        }
    }
   
    public static void main(String[] ar) {
        Formulario formulario1=new Formulario();
        formulario1.setBounds(0,0,300,150);
        formulario1.setVisible(true);
    }
}






  • Tipee el siguiente programa y explique que objeto nuevo  se esta incluyendo en este programa y explique para que sirve



import javax.swing.*;

import java.awt.event.*;
public class Formulario extends JFrame implements ActionListener{
    private JTextField textfield1,textfield2;
    private JButton boton1;
    public Formulario() {
        setLayout(null);
        textfield1=new JTextField();
        textfield1.setBounds(10,10,100,30);
        add(textfield1);
        textfield2=new JTextField();
        textfield2.setBounds(10,50,100,30);
        add(textfield2);
        boton1=new JButton("Sumar");
        boton1.setBounds(10,90,100,30);
        add(boton1);
        boton1.addActionListener(this);
    }
   
    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==boton1) {
            String cad1=textfield1.getText();
            String cad2=textfield2.getText();
            int x1=Integer.parseInt(cad1);
            int x2=Integer.parseInt(cad2);
            int suma=x1+x2;
            String total=String.valueOf(suma);
            setTitle(total);
        }
    }
   
    public static void main(String[] ar) {
        Formulario formulario1=new Formulario();
        formulario1.setBounds(0,0,140,150);
        formulario1.setVisible(true);
    }
}




  • Realizar un programa :

Ingresar el nombre de usuario y clave en controles de tipo JTextField. Si se ingresa las cadena (usuario: juan, clave=abc123) luego mostrar en el título del JFrame el mensaje "Correcto" en caso contrario mostrar el mensaje "Incorrecto".





  • Tipee el siguiente programa y explique que objeto nuevo  se esta incluyendo en este programa y explique para que sirve




import javax.swing.*;
public class Formulario extends JFrame{
    private JTextField textfield1;
    private JTextArea textarea1;
    public Formulario() {
        setLayout(null);
        textfield1=new JTextField();
        textfield1.setBounds(10,10,200,30);
        add(textfield1);
        textarea1=new JTextArea();
        textarea1.setBounds(10,50,400,300);
        add(textarea1);
    }

    public static void main(String[] ar) {
        Formulario formulario1=new Formulario();
        formulario1.setBounds(0,0,540,400);
        formulario1.setVisible(true);
    }  
}




  • Tipee el siguiente programa y explique que objeto nuevo  se esta incluyendo en este programa y explique para que sirve



import javax.swing.*;
public class Formulario extends JFrame{
    private JTextField textfield1;
    private JScrollPane scrollpane1;
    private JTextArea textarea1;
    public Formulario() {
        setLayout(null);
        textfield1=new JTextField();
        textfield1.setBounds(10,10,200,30);
        add(textfield1);
        textarea1=new JTextArea();      
        scrollpane1=new JScrollPane(textarea1);  
        scrollpane1.setBounds(10,50,400,300);
        add(scrollpane1);
    }

    public static void main(String[] ar) {
        Formulario formulario1=new Formulario();
        formulario1.setBounds(0,0,540,400);
        formulario1.setVisible(true);
    }  
}



  • Tipee el siguiente programa y explique que objeto nuevo  se esta incluyendo en este programa y explique para que sirve



import javax.swing.*;
import java.awt.event.*;
public class Formulario extends JFrame implements ActionListener{
    private JScrollPane scrollpane1;
    private JTextArea textarea1;
    private JButton boton1;
    public Formulario() {
        setLayout(null);
        textarea1=new JTextArea();
        scrollpane1=new JScrollPane(textarea1);
        scrollpane1.setBounds(10,10,300,200);
        add(scrollpane1);
        boton1=new JButton("Verificar");
        boton1.setBounds(10,260,100,30);
        add(boton1);
        boton1.addActionListener(this);
    }
   
    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==boton1) {
            String texto=textarea1.getText();
            if (texto.indexOf("argentina")!=-1) {
                setTitle("Si contiene el texto \"argentina\"");
            } else {
                setTitle("No contiene el texto \"argentina\"");          
            }
        }
    }
   
    public static void main(String[] ar) {
        Formulario formulario1=new Formulario();
        formulario1.setBounds(0,0,400,380);
        formulario1.setVisible(true);
    }      
}



  • Tipee el siguiente programa y explique que objeto nuevo  se esta incluyendo en este programa y explique para que sirve



import javax.swing.*;
import java.awt.event.*;
public class Formulario extends JFrame implements ActionListener {
    JButton boton1;
    public Formulario() {
        setLayout(null);
        boton1=new JButton("Finalizar");
        boton1.setBounds(300,250,100,30);
        add(boton1);
        boton1.addActionListener(this);
    }
   
    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==boton1) {
            System.exit(0);
        }
    }
   
    public static void main(String[] ar) {
        Formulario formulario1=new Formulario();
        formulario1.setBounds(0,0,450,350);
        formulario1.setVisible(true);
    }
}


  • Tipee el siguiente programa y explique que objeto nuevo  se esta incluyendo en este programa y explique para que sirve



import javax.swing.*;
import java.awt.event.*;
public class Formulario extends JFrame implements ActionListener{
    private JButton boton1,boton2,boton3;
    public Formulario() {
        setLayout(null);
        boton1=new JButton("1");
        boton1.setBounds(10,100,90,30);
        add(boton1);
        boton1.addActionListener(this);
        boton2=new JButton("2");
        boton2.setBounds(110,100,90,30);
        add(boton2);
        boton2.addActionListener(this);
        boton3=new JButton("3");
        boton3.setBounds(210,100,90,30);
        add(boton3);
        boton3.addActionListener(this);        
    }
   
    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==boton1) {
            setTitle("boton 1");
        }
        if (e.getSource()==boton2) {
            setTitle("boton 2");
        }
        if (e.getSource()==boton3) {
            setTitle("boton 3");
        }      
    }
   
    public static void main(String[] ar){
        Formulario formulario1=new Formulario();
        formulario1.setBounds(0,0,350,200);
        formulario1.setVisible(true);
    }
}



  • Investigar los siguientes objetos


JFrame
JLabel
JButton
JTextField
JTextArea






martes, 30 de octubre de 2012

Matrices Java



Matrices Java

Tipear el siguiente programa



programa que saca promedio mediante una matriz
import java.io.*;
public class programa_matriz {
    public static void main(String[] args)throws IOException {
     BufferedReader br=new BufferedReader (new InputStreamReader (System.in));
     int calif[][];
     double prom,suma;
     calif = new int [5][4] ;
     // primera fila llenada
     calif[0][0] = 8;
     calif[0][1]=7;
     calif[0] [2]=6;
     calif[0][3]=7;
     // segunda fila llenada
     calif[1][0] = 6;
     calif[1][1]=6;
     calif[1] [2]=7;
     calif[1][3]=8;
     // tercera fila llenada
     calif[2][0] = 8;
     calif[2][1]=9;
     calif[2] [2]=9;
     calif[2][3]=9;
     // cuarta fila llenada
     calif[3][0] = 9;
     calif[3][1]=10;
     calif[3] [2]=9;
     calif[3][3]=10;
     // quinta fila llenada
     calif[4][0] =9;
     calif[4][1]=10;
     calif[4] [2]=9;
     calif[4][3]=9;
     int ciclo2;
     int v10,v9,v8,v7,v6;
     v10=0;
     v9=0;
     v8=0;
     v7=0;
     v6=0;
     //promedio de cada semestre y lo imprimiras
    
     for (int ciclo1=0;ciclo1<5;ciclo1++){
         System.out.print("Calificacione del semestre "+(ciclo1+1)+" fue -> ");
         System.out.print("Materia Uno "+calif[ciclo1][0] +"Materia Dos "+calif[ciclo1][1]  +"Materia Tres "+calif[ciclo1][2]  +"Materia Cuatro "+calif[ciclo1][3]);
         System.out.println();
     }
    
     for (int  ciclo1=0;ciclo1<5;ciclo1++){
         System.out.print("promedio del  semetre "+(ciclo1+1)+" fue -> ");
         suma=0;prom=0;
         for ( ciclo2=0;ciclo2<4;ciclo2++)
         {            
         suma=suma+calif[ciclo1][ciclo2];
         switch  (calif[ciclo1][ciclo2])
         {
             case 10:v10++;break;
         case 9:v9++;break;
         case 8:v8++;break;
         case 7:v7++;break;
         case 6:v6++;break;
        
         }
         } //for ciclo2
         prom=suma/4;
         System.out.println(+prom);
     } //for ciclo1
     // cuantos 10,9,8,7,6 hay
    
     System.out.println(" el alumno obtuvo "+v10+" calificaciones de 10");
     System.out.println(" el alumno obtuvo "+v9+" calificaciones de 9");
     System.out.println(" el alumno obtuvo "+v8+" calificaciones de 8");
     System.out.println(" el alumno obtuvo "+v7+" calificaciones de 7");
   System.out.println(" el alumno obtuvo "+v6+" calificaciones de 6");
    
    
    }
}

Ejercicio basado en el anterior programa realize uno donde la matriz sea de 9 Filas y 6 Columnas

Desplegara El promedio de cada Semestre
La calificacion mas alta de cada Semestre
La calificacion mas baja del Semestre
Desplegara cuantos 5 , 6,7,8,9,10

------------------------------------------------------------------
Tipear el Siguiente Programa

public class matrizlectura {
    public static void main(String[] args)throws IOException {
     BufferedReader br=new BufferedReader (new InputStreamReader (System.in));
     int calif[][];
     double prom,suma;
     int ciclo1,ciclo2;
      calif = new int [5][4] ;
  
     for(ciclo1=0;ciclo1<5;ciclo1++)
     {
         System.out.println(" .........................  Introduce las calificaciones del semestre "+(ciclo1+1)+"...........................");
                
     for(ciclo2=0;ciclo2<4;ciclo2++)
     {
      System.out.print(" Introduce la calificacion de la materia  "+(ciclo2+1)+" --> ");
       calif[ciclo1][ciclo2]=Integer.parseInt(br.readLine());
     System.out.println();
     } // fin ciclo2 que es para el brinco de columnas
       
     } // fin ciclo1 que es para brinco de renglones
     int v10,v9,v8,v7,v6;
     v10=0;
     v9=0;
     v8=0;
     v7=0;
     v6=0;
     //promedio de cada semestre y lo imprimiras
    
     for ( ciclo1=0;ciclo1<5;ciclo1++){
         System.out.print("Calificacione del semestre "+(ciclo1+1)+" fue -> ");
         System.out.print("Materia Uno "+calif[ciclo1][0] +"Materia Dos "+calif[ciclo1][1]  +"Materia Tres "+calif[ciclo1][2]  +"Materia Cuatro "+calif[ciclo1][3]);
         System.out.println();
     }
    
     for (  ciclo1=0;ciclo1<5;ciclo1++){
         System.out.print("promedio del  semetre "+(ciclo1+1)+" fue -> ");
         suma=0;prom=0;
         for ( ciclo2=0;ciclo2<4;ciclo2++)
         {            
         suma=suma+calif[ciclo1][ciclo2];
         switch  (calif[ciclo1][ciclo2])
         {
             case 10:v10++;break;
         case 9:v9++;break;
         case 8:v8++;break;
         case 7:v7++;break;
         case 6:v6++;break;
        
         }
         } //for ciclo2
         prom=suma/4;
         System.out.println(+prom);
     } //for ciclo1
     // cuantos 10,9,8,7,6 hay
    
     System.out.println(" el alumno obtuvo "+v10+" calificaciones de 10");
     System.out.println(" el alumno obtuvo "+v9+" calificaciones de 9");
     System.out.println(" el alumno obtuvo "+v8+" calificaciones de 8");
     System.out.println(" el alumno obtuvo "+v7+" calificaciones de 7");
   System.out.println(" el alumno obtuvo "+v6+" calificaciones de 6");

 
    }
}

Ejercicio basado en el anterior programa realize uno donde la matriz sea de 9 Filas y 6 Columnas

Desplegara El promedio de cada Semestre
La calificacion mas alta de cada Semestre
La calificacion mas baja del Semestre
Desplegara cuantos 5 , 6,7,8,9,10
solo debe capturar los siguientes numeros 5 ,6,7,8,9,10 en caso contrario debera volver a solicitarlo

Ejercicio Dos


Investigar


  • Tecnologias GUI EN JAVA
  • Que Significa GUI
  • javax.swing
  • Describa el objeto JFRAME y sus elementos (Jframe ,JDialog)
  • Describa el objeto Panel y sus elementos (Layout,Boxes)
  • Describa el Objeto Widges y sus elementos  (Jcomponet ,Jbutton,JTextField,JList,JLabel)
  • Que es una interfaz Listener  y sus elementos( ActionListener ,MouseListener ,KeyListener ,WindowListener)





la introduccion de datos sera utilizando la siguiente clase
JOptionPane.showInputDialog

ejemplo
inputString = JOptionPane.showInputDialog("ejemplo de una Caja:\nIntroduce un entero");

este es un ejemplo por favor tipealo y que sirva de ejemplo



import java.io.*;
import javax.swing.JOptionPane;
public class inputbox{

 public static void main(String args[]){
           String StrPartido;
 int IntPan=0, IntPri=0, IntPrd=0;
  int IntContador=1;
  int IntElection;
 do{
             //Mostrar un InputBox al Usuario para que realize la operacion, es decir interactue con el sistema
            StrPartido = JOptionPane.showInputDialog(null,"Elige el partido político de tu preferencia: nn1.- PANn2.- PRIn3.- PRD","Elecciones 2012 | Votacion # "+IntContador,JOptionPane.INFORMATION_MESSAGE);

            //Convertimos el valor tecleado a un valor numerico
          IntElection = Integer.parseInt(StrPartido);
          if (IntElection==1)
//Si el usuario tecleo 1 le damos un voto al PAN
IntPan=IntPan+1;
            else if (IntElection==2)
//Si el usuario tecleo 2 le damos un voto al PRI
IntPri=IntPri+1;
          else if (IntElection==3)
//Si el usuario tecleo 3 le damos un voto al PRD
IntPrd=IntPrd+1;
             //Incrementamos nuestro contador en 1
            IntContador = IntContador + 1;
      }while(IntContador<=15);
  if (IntPan>IntPri && IntPan>IntPrd)
        //Si IntPan es mayor a IntPri y que IntPrd enonces gano el PAN                                                                                                                                                                                                                                         
 JOptionPane.showMessageDialog(null,"El ganador de las elecciones fué el Partido Acción Nacional (PAN) con  "+IntPan+" votos a favor","Elecciones 2012 ",JOptionPane.INFORMATION_MESSAGE);
   else if(IntPri>IntPan && IntPri>IntPrd)
        //Si IntPri es mayor a IntPan y que IntPrd enonces gano el PRI
 JOptionPane.showMessageDialog(null,"El ganador de las elecciones fué el Partido Revolucionario Institucional (PRI) con "+IntPri+" votos a favor","Elecciones 2012",JOptionPane.INFORMATION_MESSAGE);
   else if(IntPrd>IntPri && IntPrd>IntPan)
        //Si IntPrd es mayor a IntPri y que IntPan enonces gano el PRD
 JOptionPane.showMessageDialog(null,"El ganador de las elecciones fué el Partido de la Revolución Democrática(PRD) con "+IntPrd+" votos a favor","Elecciones 2012",JOptionPane.INFORMATION_MESSAGE);
   else
        //Si no es asi entonces hubo un empate
 JOptionPane.showMessageDialog(null,"Existe un empate!!!","Elecciones 2012",JOptionPane.INFORMATION_MESSAGE);
   //Instruccion para Evitar que el Programa se quede colgado: Es decir para que finalize correctamente
  System.exit (0);
}
}




miércoles, 24 de octubre de 2012


ASP.NET

apareció en el mercado como repuesta de Microsoft al gran éxito de J2EE  ( Java 2 Enterprise Edition).

Los puntos fundamentales de la nueva estructuraASP.NETson


 ASP.NETproporciona un modelo de desarrollo de aplicaciones Web basado en laplataforma .NET. Este entorno de programaciónpermite tratar a ASP.NET comoun lenguaje orientado a objetos.

 Se pueden desarrollar aplicaciones Web en cualquiera de los lenguajes .NET, comoC# o Visual Basic.

 Separación de la capa de presentación de la capa de negocio, gracias a la utilizaciónde las páginascode-behind (código trasero).

 Acceso a los servicios proporcionados por .NET Framework. Eso permite quepodamos utilizar la biblioteca de clasesen las aplicaciones Web.

 El código de las aplicaciones ASP.NETse compila a través del motor CLR, quecompila con JIT ( Just In Time).

 Losparámetros de configuración se almacenan en archivos de tipo XML,porque es de lectura universal y se pueden generar con cualquier editor de textos.

 Permite usarADO.NETpara acceso a datos.

 Detección automática del navegador cliente, generando el lenguaje de marcassoportado por el mismo.

 Mecanismo deCaching incorporadopara páginas completa o partes de la mismafrecuentemente solicitadas.

 Compatibilidad con ASP. Se pueden tener página ASP y ASP.NET en el mismoservidor colaborando. Las páginas ASP tendrán extensión .aspy son procesadas porla DLL ASP.DLL y las página ASP.NET .aspxy son procesadas por el entorno.NET.

 ASP.NET es que conserva el contenido de los formularios después de enviarlos alservidor. Microsoft llama a estopersistencia automáticadel estado de la vista delos datos.


EJECUCIÓN DE LOS ARCHIVOS ASP.NET

Cuando un visitante quiere acceder a un sitio Web, escribe una direcciónURL(Uniform Resource Locator ) en el navegador y éste realiza una peticiónHTMLal servidor queestá alojando ese sitio Web.

En el momento en que el servidor recibe la petición,determina el tipo de archivo solicitado y lo envía a la aplicación correspondiente para que lo procese.

En el caso de páginasASP.NET, éstas son compiladas (normalmente sies la primera vez que se seleccionan) y ejecutadas, reenviando al visitante los resultadosde la consulta a través de su navegador.

Ejecución del lado del cliente

En las aplicacionesASP.NETse mezcla una parte de ejecución del lado del cliente yotra del lado del servidor.La ejecución de la página del lado del cliente se determina de la siguiente manera:

 Cuando el servidor recibe una petición determina el tipo de navegador del cliente y,en función de éste, codifica las instrucciones a una versiónHTMLadecuada.Incluso el servidor puede determinar si el navegador soportaJavaScripty, enfunción de ello, convertir parte de su código enJavaScriptpara ejecutarse en elcliente. Todo ello lo decide el servidor sin tener que codificar enJavaScript.

 Al descargar la páginaASP.NETen el navegador se envía, junto a ella, código pararealizar comprobaciones e iniciar aquellas funciones que se puedan realizar en elcliente liberando así al servidor de su ejecución.

 Cuando el servidor recibe la respuesta de un formulario, los valores son guardadosen una nueva herramienta deASP.NETllamadabolsa de estadoy son comprimidosy ocultados en una página llamadavista de estado. El objetivo es que, una vezenviado el formulario, éste recupere su apariencia anterior.

GET Y POST

El procedimiento más habitual para que un navegador realice una petición a un servidordesde un formulario es mediante el uso de dos métodos HTML:GET yPOST.

El método GET almacena toda la información que requiere dentro de una dirección URL.

 En ella primero aparecerá el tipo de protocolo utilizado: HTMLoFTP, acontinuación, el nombre del dominio, seguido del patha la página solicitada y elnombre de la página. A continuación se le puede añadir toda la información necesariapara realizar la petición, la llamadaquery string.

Ésta está separada del resto medianteel signo de interrogación. A partir de ahí se establecen pares:clave=valor , por ejemplo,temperatura=20.

Si necesitamos varios pares, éstos se unen mediante el signo&.Si enviáramos un formulario que contuviese campos para nombre, apellidos y edad porel métodoGET ( METHOD = "GET") y el usuario escribiera Juan, Soto y 30, se enviaríala siguiente petición URL al servidor: 
http://Workshop1/Painting/Profile.asp?Nombre=Juan&Apellido=Soto&Edad=30 Cuando un navegador envía la información mediante el método POST, los datos seestructuran igual que en el métodoGETpero se ubican en una cabecera HTML separada de la página, por lo que no son visibles.

 Por esta razón, en la mayoría de loscasos los programadores prefieren ese método.Cualquiera sea el método utilizado, es decir GETo POST, cuando un formulario esenviado al servidor, decimos que se produjo un POSTBACK.Los Web Forms envían sus datos por el método POSTy la página destino es la actual.

Ejecución del lado del servidor

 El servidor envía una petición
 Localiza la página usando laURL
 ASP.NETanaliza el código y si éste no tiene un código compilado actualizadollama al compilador para general elIL, luego compila y guarda el código.
 Elruntimedel servidor carga y ejecuta el código y envía la respuesta al cliente. Enlas siguientes peticiones, elruntimecarga directamente elILy lo ejecuta.
 La respuesta es reenviada al navegador traducida a códigoHTMLy éste representala respuesta en la pantalla del cliente.El ciclo simplificado de ejecución del lado del servidor sería


COMPONENTES DE ASP.NET

ASP.NETes un “Marco” ( framework ) para programar aplicaciones Web, de un modosimilar al que se programan las aplicacionesWindows. Los componentes principales deuna aplicación WebASP.NETson:

 WebForms(Formularios Web). Proporcionan la interfaz de usuario para laaplicación Web y lo constituyen uno o más archivos con extensión.aspx.
 Archivos Code-Behind.Las páginas con código trasero están asociadas a losformulariosWeb Formsy contienen el código del servidor para el formularioWeb Form. Su extensión será.aspx.vbsi el lenguaje utilizado esVisual Basic
 Archivos de configuración conformatoXML.Los archivos de configuración sonarchivosXMLque definen la configuración predeterminada para la aplicación Weby para el servidor Web. Se pueden utilizar un archivoWeb.configpor cadaaplicación y un único archivo Machine.configpor servidor
 Global.asax.Los archivosGlobal.asaxcontienen el código necesario pararesponder a los eventos a nivel de aplicación provocados porASP.NET
 DirectorioBIN.Contiene elassemblyde la aplicación (Ej.: MiAplic.dll) y cero omásassemblies(Componentes externos)
Conectividadabases de datos. La conectividad a bases de datos permite a laaplicación Web transferir datos desde y hacia fuentes de base de datos.
 Caché. El uso de caché permite a la aplicación Web devolver más rápidamenteformulariosWeb Formsy datos tras la primera petición.


ESTRUCTURA DE UNA APLICACIÓN WEB

Las aplicaciones Web están compuestas de los siguientes ficheros:

 Archivos de solución (.sln, .suo). La extensión de archivo NombreSolución.sln seutiliza para archivos de solución que enlazan uno o más proyectos, y almacenainformación global. La extensión de archivo NombreSolución.suose utiliza paraarchivos que acompañan los registros de solución y las personalizaciones queagreguemos a nuestra solución. Este archivo guarda nuestra configuración, comopuntos de interrupción y elementos de tareas, para que sean recuperados cada vezque abramos la solución.

 Archivos de proyecto (.vbproj). Cada proyecto es una única aplicación Webalmacenada en su propia carpeta. Dentro de la carpeta de proyecto se encuentra elarchivo de configuración del proyecto y los archivos reales que constituyen elproyecto. El archivo de configuración del proyecto es un documentoXMLquecontiene referencias a todos los elementos del proyecto, como formularios y clases,además de referencias de proyecto y opciones de compilación. Los archivos deproyecto Visual Basic .NET utilizan una extensión .vbproj, mientras que C# utiliza.csproj.

 Formularios Web Forms ASP.NET(.aspx). Los formularios Web FormsASP.NET se utilizan cuando es necesario generar sitios Web dinámicos a los quelos usuarios accederán directamente. Servicios Web ASP.NET (.asmx). Los servicios Web se utilizan cuando deseamoscrear sitios Web dinámicos a los que únicamente accederán otros programas. Losservicios WebASP.NETpueden estar soportados por una página de códigosubyacente designada por la extensiónWebService.asmx.vb oWebService.asmx.cs.

 Clases, páginas de código subyacente (.vb o .cs). Las páginas de códigosubyacente utilizan dos extensiones: el tipo de página (.aspxo .asmx) y la extensiónde Visual Basic (.vb) o la extensión de C# (.cs). Por ejemplo, el nombre de archivocompleto para la página de código subyacente de un formulario Web FormASP.NETpredeterminado es, para un proyectoC#,WebForm1.aspx.cs.

 Clases de aplicaciones globales (.asax). El archivoGlobal.asax, también conocidocomo el archivo de la aplicaciónASP.NET, es un archivo opcional que contienecódigo para responder a eventos a nivel de aplicación provocados porASP.NEToporHttpModules.

 Archivo Web.config. Este archivoWeb.configcontiene opciones de configuraciónque elCLRlee, como políticas de enlace de ensamblados, objetosremoting, etc., yotras configuraciones que la aplicación puede leer.

 Styles.css.Es el archivo de hojas de estilo predeterminado para la Web.

 Ensamblado del proyecto (.dll).Todas las páginas de código subyacente (.aspx.vby .aspx.cs) de un proyecto están compiladas en un único archivo ensamblado que sealmacena comoProjectName.dll. Este archivo ensamblado del proyecto se ubica enel directorio /bindel sitio Web.

 AssemblyInfo.vb o AssemblyInfo.cs.El archivoAssemblyInfose utiliza paradescribir la información general del ensamblado, como la versión y los atributos delmismo.

ESTRUCTURA DE UNA PÁGINA

ASP.NET Los elementos más importantes de una páginaASP.NETson:

 Directivas
 Bloques de declaración de código
 ControlesASP.NET
 Bloques de presentación de código Comentarios del lado del servidor
 Directivas de inclusión del lado del servidor
 Texto literal y etiquetasHTML

SINTÁXIS DE ASP.NET


ASP.NET
utiliza tres delimitadores distintos para indicar el código de servidor, esdecir, el código que se ejecutará en el servidor y que estará escrito en el lenguaje C#-<%%> Encerrado dentro de los delimitadores<%%>se va a encontrar todo el código de scriptde servidor, de esta forma el comando <%nombre="Pepe"%> asigna el valor Pepe a lavariable nombre.

Entre estos delimitadores se pueden incluir varias sentencias. El código incluido entre estos delimitadores se ejecuta dentro de la página.<%=%> Dentro del segundo tipo de delimitadores<%=%>se encuentran expresiones que devuelve algún valor para ser mostrado en la salida de la página, así por ejemplo laexpresión<%=nombre%> enviará al navegador el valor Pepe, es decir, el valor actual de la variable.

 Entre estos delimitadores sólo se puede encerrar una sentencia.
<script language="vbscript" runat="server"></script>

Esta etiqueta es utilizada únicamente para declarar métodos (procedimientos yfunciones) de la página.
Code-behind Otra forma es introducir el código en un fichero aparte que tiene extensión aspx.vb(para VB), de esta forma separmos la vista de los controladores.

Este fichero con códigoen VB se denomina code-behind  Ejemplos En el ejemplo se puede ver la utilización de los delimitadores<%%>para definir unobjeto de la clase DateTimecon la fecha y hora actual. Y también se utilizan los delimitadores<%=%> para mostrar la fecha y hora actual en el navegador del usuario.Incluir este código en el body.

<% Dim ahora As DateTime = DateTime.Now%>
 La hora y fecha actual es:
<% = ahora.ToString()%>

 Dentro de los delimitadores de código de servidor se pueden encontrar también instrucciones del lenguaje de objetos que se utilice, así por ejemplo puede aparecer una instrucción If...Else del lenguaje VB, como se puede apreciar en siguiente código

 <% Dim nombre As  String = "" , variable = ""

 If (nombre = ""  )Then 
variable = "Nombre desconocido"
Else
variable = "Hola amigo " + nombre
End  If %>
 < font  color ="red">
<%=variable%>
</ font > 

En el código anterior se comprueba si la variablenombretiene algún valor, si lo tienesaludamos con el valor de la variable, mostrando el saludo en color rojo.

Aunque ya veremos que el códigoVBes mejor ejecutarlo desde un fichero code- behind  que provocará la especialización de los ficheros según sean orientados al interface o a laejecución de códigoVB


Directivas

Una directiva controla como se compila una páginaASP.NET.
Las directivas tiene lasiguiente sintásix.
<%@ directiva %>
 Las directivas aparecen normalmente al principio de la página aunque puedenlocalizarse en cualquier sitio.Dos ejemplos de directivas son:

 De página: solo puede haber una línea en cada fichero, en cada línea puede habervarias directivas de otros tipos.

  Language: para indicar el lenguaje predeterminado
<%@ Page Language=”VB” %>

 Trace:se realiza un seguimiento de la página y permite visualizar informaciónadicional sobre la ejecución de la página junto con su contenidoTrace=”True”

  Debug:permite que se visualicen mensajes de error en tiempo de ejecución, sepuede combinar con TraceTrace=”True” Debug=”True”

  AutoEventWireup:Indica si los eventos de la página pueden ser detectados por elcódigo (PageLoad) sin necesidad de que los controladores de eventos utilicenHandles… . En los webs forms de visual basic, el valor viene a false y a que espropio del lenguaje indicar en cada controlador de eventos el evento al que respondey el objeto que lo provoca con Handles.AutoEventWireup ="false" 

 Codefile:Indica el fichero donde están los controladores de evento del la páginaactual
CodeFile="Default.aspx.vb"

  Inherits:este atributo indica el nombre de una clase de la que el control hereda, esteatributo esutilizado para realizar la separación del código de la presentación de lainformación Inherits="_Default"


Bloques de declaración de código

Un bloque de declaración de código contiene toda la lógica de aplicación de una páginaASP.NETy todas las declaraciones de variables globales y métodos.
 Debe aparecerdentro de la etiqueta 
<Script Runat=”Server” Language=”VB”>
 Si no especificamos la propiedad Lenguaje tomará el dato de la directiva de página queespecifique el lenguaje de programación a utilizar en el servidor.

Controles ASP.NETCombinado con el códigoHTMLpueden aparecer controlesASP.NET, el único requisito es que los controles tengan la propiedad runat=”Server”.

Un limitación importante es que sólo se puede incluir una sentencia < form Runat=”Server”> por página.Bloques de presentación de código Podemos incluir código intercalado con el contenido HTMLde la página utilizando   <% ……%> <% =……%>


Comentarios del lado del servidor

Para introducir mententarios del lado del servidor, con propósito de documentación seutiliza
<%-- comentarios --%>
Cabe destacar que estas líneas están ocultas para el cliente, es decir, no se verán si desdeel navegador utilizamos las opciones para ver código fuente.

Directivas de inclusión del lado del servidor

Podemos incluir un archivo en una páginaASP.NET utilizando una de las dos formasde ladirectiva del lado del servidor.

 Si queremos incluir un archivo que está ubicadoen el mismo directorio o en un subdirectorio de la página que incluye el archivo,utilizamos la siguiente directiva:
<!--#INCLUDE file=”fichero.aspx” -->

Texto literal y etiquetas HTML

La información que queremos presentar de forma estática en nuestra página se hace pormedio de texto y etiquetas HTML


 Ejercicio :

Continuando con el ejercicio anterior agregar un Listbox con el nombre de Lcarreras en la pagina Default.aspx el cual quedara con los siguientes objetos

Listbox    Lcarreras
Textbox   Tmensaje
Button      Bmensaje

  •  primero que realizaras es cambiar la propiedad     autopostback=true por default es false
  • en la seccion de codigo del webform iras al metodo load del Page
Lcarreras.Items.Clear()
Lcarreras.Items.Add(
New ListItem("Ingenieria EN sistemas Computacionales", "ISC"))Lcarreras.Items.Add(
New ListItem("Ingenieria Industrial y de Sistemas", "IIS"))Lcarreras.Items.Add(
New ListItem("Ingenieria Civil", "IC"))Lcarreras.Items.Add(
New ListItem("Ingenieria Mercadotecnia", "ISM"))

insertaras el codigo anterior.


Tarea.


  • Que es un Web Form
  • En el codigo anterior genera un error analiza el erro y modificalo con los siguientes pasos
             eliminaras la siguiente linea agregada en el page_load

                       Lcarreras.Items.Clear()

             crearas una variable global en la clase 
  
public Class _DefaultInherits System.Web.UI.Page
Dim anexar As Boolean = False

y en la seccion  Page_Load quedara de la siguiente manera
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


 If  Not anexar Then 
Lcarreras.Items.Add(
New ListItem("Ingenieria EN sistemas Computacionales", "ISC"))
Lcarreras.Items.Add(New ListItem("Ingenieria Industrial y de Sistemas", "IIS"))
Lcarreras.Items.Add(New ListItem("Ingenieria Civil", "IC"))
Lcarreras.Items.Add(New ListItem("Ingenieria Mercadotecnia", "ISM"))
End If

End
Sub

  Private Sub Lcarreras_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles Lcarreras.SelectedIndexChanged
Tmensaje.Text = Lcarreras.SelectedItem.Value

End Sub

escribe los errores 
  • Que es una hoja de estilos CSS
  • Anexar una pagina aspx al proyecto , la hoja sera llamda Uno.aspx
en el cual deberas poner un textbox (Tcarrera) y un Listbox (Lmaestros)