Arquitectura MVC ANDROID - 2. Preparando la capa Vista

Paso 2 de 2: Preparando la capa Vista (ENVIAR Datos publicano Una ONU de J2EE Servidor Temas Estafadores Android): Tecnologías Android (Temas), JSON (o XML), J2EE (o PHP), DAO (TO: Transfer Object) y MySQL Descripción Preparamos la capa Vista del patrón MVC Parr desarrollar Una Aplicación De 3 CAPAS ONU de la estafa Cliente Android Que incluya Una Pantalla de inicio de Sesión. Arquitectura


Glosario de Términos

JSON, acrónimo de JavaScript Object Notation, Es Un ligero Formato Parrafo el Intercambio de Datos.
JSON Es Un Subconjunto de la notación literal de Objetos de JavaScript Que No Requiere el BSG de XML.

Más información: http://es.wikipedia.org/wiki/JSON
Androide
Android es El Pecado Sistema Operativo ADEMÁS De Una Plataforma de Software Basada en el núcleo de Linux.
Diseñado En Un Principio Parrafo Dispositivos Móviles, Android permite Controlar Dispositivos Por Medio de Bibliotecas desarrolladlas o Adaptados Porción Google MEDIANTE EL Lenguaje de programación Java.
Android es Una Plataforma de Código abierto.

Más información: http://www.configurarequipos.com/doc1107.html
Eclipse IDE Parr Java EE Desarrolladores
APLICACIONES implementar Entorno de Desarrollo Parr Que se ejecutan ACONDICIONADO BAÑO Android Dispositivos.

Información Más y Descarga:  http://www.eclipse.org/downloads/
Android SDK
Android SDK es el kit de Desarrollo necesarias Parrafo Programar e implementar Todo tipo de applications Parr Android, el Sistema Operativo Parr Teléfonos Móviles Propuesto porcion Google.
Kit Necesarias Este Paquete o de Desarrollo INCLUYE Las APIs y Herramientas Parr APLICACIONES desarrollar utilizando JAVA COMO Lenguaje de Programación.

Más información y Descarga:
http://developer.android.com/sdk/index.html

Requisitos de Software
Eclipse IDE Parr Java EE Desarrolladores (ADT Eclipse)
Android SDK

Android Login - Capa Vista

Crear, Pecado Actividad Android, ONU de la estafa Parr visual Diseño Que el usuario Pueda validarse en el Servidor J2EE
Preparamos la ONU visual en XML Y enlazamos estafa Actividad Un diseño.

LinearLayout  xmlns: android  =  "http://schemas.android.com/apk/res/android"
    xmlns: Herramientas  =  "http://schemas.android.com/tools"
    android: id  =  "@ + id/LinearLayout1"
    android: layout_width  =  "match_parent"
    android: layout_height  =  "match_parent"
    android: Orientación  =  "vertical"
    android: padding  =  "10DP"
    Herramientas: Contexto  =  ". Threads_Handler"  >

    ImageView
        android: id  =  "@ + id/imageView1"
        android: layout_width  =  "200DP"
        android: layout_height  =  "100DP"
        android: layout_gravity  =  "center_horizontal"
        android: src  =  "@ estirable / logo_movil"  />

    TextView
        android: id  =  "@ + id/textView1"
        android: layout_width  =  "wrap_content"
        android: layout_height  =  "wrap_content"
        android: layout_gravity  =  "right"
        android: text  =  "@ string / usuario"
        android: textAppearance  =  "android:? attr / textAppearanceLarge"  />

    EditarTexto
        android: id  =  "@ + id / edtUser"
        android: layout_width  =  "match_parent"
        android: layout_height  =  "wrap_content"
        android: ems  =  "10"
        android: pista  =  "Indica tu usuario ...."
        android: inputType  =  "textEmailAddress"  >

        requestFocus  />
    </  EditarTexto  >

    TextView
        android: id  =  "@ + id/textView2"
        android: layout_width  =  "wrap_content"
        android: layout_height  =  "wrap_content"
        android: layout_gravity  =  "right"
        android: text  =  "@ string / pass"
        android: textAppearance  =  "android:? attr / textAppearanceLarge"  />

    EditarTexto
        android: id  =  "@ + id / edtPass"
        android: layout_width  =  "match_parent"
        android: layout_height  =  "wrap_content"
        android: ems  =  "10"
        android: pista  =  "Indica tu contraseña ...."
        android: inputType  =  "textPassword"  />

    Button
        android: id  =  "@ + id / btnEnviar"
        android: layout_width  =  "wrap_content"
        android: layout_height  =  "wrap_content"
        android: layout_gravity  =  "right"
        android: text  =  "@ string / Enviar"  />

</  LinearLayout  >


Actividad (Entrar)
com.seas.threads_handler Paquete;

android.app.Activity Importación;
Importación android.os.Bundle;
android.view.View Importación;
Importación android.view.View.OnClickListener;
Importación android.widget.Button;
Importación android.widget.EditText;

com.seas.threads_handler.services.ServiceLogin Importación;
com.svalero.mvc_sanvalero.beans.Usuario Importación;

public class Threads_Handler extiende Actividad {
                / * Singleton * /
                               private static Threads_Handler threads_Handler;
                               Estática Threads_Handler getInstance () {
                                               volver threads_Handler;
                               }
                / * Aleta Singleton * /
                Privado edtUser EditarTexto;
                Privado edtPass EditarTexto;
                Button Privada btnEnviar;
                @ Override
                protected void onCreate (Bundle savedInstanceState) {
                               super.onCreate (savedInstanceState);
                               setContentView (R.layout.activity_threads__handler);
                               / * Singleton * /
                                               Threads_Handler.threads_Handler = this;
                               / * Aleta Singleton * /
                                              
                               edtUser = (EditarTexto) findViewById (R.id.edtUser);
                               edtPass = (EditarTexto) findViewById (R.id.edtPass);
                               btnEnviar = (Button) findViewById (R.id.btnEnviar);
                              
                               btnEnviar.setOnClickListener (nueva OnClickListener () {
                                               @ Override
                                               public void onClick (Ver arg0) {
                                                               String user = edtUser.getText () toString ().;
                                                               Pase String = edtPass.getText () toString ().;
                                                               Usuario usuario = new Usuario (user, pass);
                                                               ServiceLogin.accionLogin (usuario);
                                               }
                               });
                }

}
Servicios del paquete: Herramientas necesarias Parr realizar Una PETICIÓN Un des Servidor J2EE.
Clase Servicio Inicio de Sesión
om.seas.threads_handler.services Paquete;

java.util.ArrayList Importación;

Importación org.json.JSONArray;
org.json.JSONObject Importación;

Importación android.app.ProgressDialog;
Importación android.os.Handler;
Importación android.widget.Toast;

com.seas.threads_handler.Threads_Handler Importación;
com.svalero.mvc_sanvalero.beans.Usuario Importación;
Importación com.svalero.mvc_sanvalero.datos.SanValeroData;
com.svalero.mvc_sanvalero.tools.Post Importación;
Importación com.svalero.mvc_sanvalero.tools.UtilsConfig;

public class ServiceLogin {
                manejador Manejador Privado static final = new Handler ();
                messageUser Privado static String;
                Datos JsonArray estáticas Privadas;
               
public static void accionLogin (usuario final, de Usuario) {
                               Toast.makeText (Threads_Handler.getInstance (). GetBaseContext (),
                                                               . "Cargando datos ...", Toast.LENGTH_LONG) show ();
                               Tema threadLogin = new Thread () {
                                               public void run () {
                                                               try {
                                                                              / / Lista de Lista de Lista de Lista de Lista de Lista de Lista de Lista de parámetros de Lista De: ACCIÓN = LOGIN USUARIO Y = Y LUIS PASS = LUIS
                                                                              Parametros ArrayList <String> = new ArrayList <String> ();
                                                                              parametros.add ("Acción");
                                                                              parametros.add (UtilsConfig.WEBSERVICE_LOGIN);
                                                                               parametros.add (UtilsConfig.WEBSERVICE_LOGIN_PARAMS_USER);
                                                                              parametros.add (usuario.getUser ());
                                                                               parametros.add (UtilsConfig.WEBSERVICE_LOGIN_PARAMS_PASS);
                                                                              parametros.add (usuario.getPass ());
                                                                              / / Llamada a J2EE Web Servidor
                                                                              try {
                                                                                              Datos = Post.getServerData (parametros, UtilsConfig.URL);
                                                                              } Catch (Exception e) {
                                                                                              messageUser = "Error al Conectar Con El Servidor.";
                                                                              }
                                                               } Catch (Exception e) {
                                                                              messageUser = "Error al Conectar Con El Servidor.  ";
                                                               }
                                                               manejador.post (Proceso);
                                               }
                               };
                               threadLogin.start ();
                }
               
Proceso Ejecutable Privado static final = new Ejecutable () {
                               public void run () {
                                               try {
                                                               if (= null && Datos! datos.length ()> 0) {
                                                                              JSONObject json_data = datos.getJSONObject (0);
                                                                              int numRegistrados = json_data.getInt ("idUsuario");
                                                                              si (numRegistrados> 0) {
                                                                                              Usuario usuario = new Usuario (); usuario.setIdUsuario (json_data.getInt ("idUsuario"));
                                                                                              usuario.setUser (json_data.getString ("usuario"));
                                                                                              usuario.setPass (json_data.getString ("paso"));
                                                                                             
                                                                                              SanValeroData.setUsuario (usuario);

. Toast.makeText (. Threads_Handler.getInstance () getBaseContext () ". Usuario correcto", Toast.LENGTH_SHORT) show ();
                                                                              }
                                                               } Else {
                                                                                              . Toast.makeText (. Threads_Handler.getInstance () getBaseContext () ". Incorrecto Usuario", Toast.LENGTH_SHORT) show ();
                                                                                              Toast.makeText (Threads_Handler.getInstance () getBaseContext (), messageUser, Toast.LENGTH_SHORT.) Show ().;
                                                               }
                                               } Catch (Exception e) {}
                               }
                };
}

Habas del Paquete
Paquete   com.svalero.mvc_sanvalero.beans;

Público Clase de   Usuario {
       Privada int  idUsuario   ;
       Privada   Cadena   usuario   ;
       Privada   Cadena   PASE   ;
      
       Público   Usuario (usuario de cuerdas, PASE String) {
             este   .   usuario   = usuario;
             este   .   Pasar   = Pasar;
       }
       Público   Usuario () {
       }
       Pública int   getIdUsuario () {
             volver  idUsuario   ;
       }
       Público void   setIdUsuario (   int   idUsuario) {
             este   .   idUsuario   = idUsuario;
       }
       Público   Cadena getUser () {
             Regresar  de usuario   ;
       }
       Público void   setUser (usuario String) {
             este   .   usuario   = usuario;
       }
       Público   Cadena getpass () {
             Regresar  PASE   ;
       }
       Público void   SETPASS (PASE String) {
             este   .   Pasar   = Pasar;
       }            

}
Datos del Embalaje (estáticos)

Paquete  com.svalero.mvc_sanvalero.datos;

Importación  com.svalero.mvc_sanvalero.beans.Usuario;

Público de Clase  SanValeroData {
       Privada Estática  Usuario  usuario  ;

       Pública Estática  Usuario getUsuario () {
             Devolver usuario  ;
       }

       Público Estático void  setUsuario (Usuario usuario) {
             SanValeroData.  usuario  = usuario;
       }     

}
Utilidades de Embalaje (Correos

com.svalero.mvc_sanvalero.tools Paquete;

java.io.BufferedReader Importación;
java.io.InputStream Importación;
java.io.InputStreamReader Importación;
java.util.ArrayList Importación;

org.apache.http.HttpEntity Importación;
org.apache.http.HttpResponse Importación;
org.apache.http.client.HttpClient Importación;
org.apache.http.client.entity.UrlEncodedFormEntity Importación;
Importación org.apache.http.client.methods.HttpPost;
org.apache.http.impl.client.DefaultHttpClient Importación;
org.apache.http.message.BasicNameValuePair Importación;
Importación org.json.JSONArray;

Importación android.util.Log;

public class {Mensaje

InputStream Estática Privada es = null;
Respuesta private static string = "";

void (parametros ArrayList <String>, URL String) Privadas estáticos SINCRONIZADOS conectaPost {
        ArrayList <BasicNameValuePair> nameValuePairs;
        try {
                HttpClient httpclient = new DefaultHttpClient ();
                HttpPost HttpPost = new HttpPost (URL);
                nameValuePairs = new ArrayList <BasicNameValuePair> ();
                if (parametros! = null) {
                               for (int i = 0; i <parametros.size (); i + = 2) {
                                               nameValuePairs.add (nueva BasicNameValuePair ((String) parametros.get (i), (String) parametros.get (i + 1)));
                               }
                               httppost.setEntity (UrlEncodedFormEntity nueva (nameValuePairs));
                }
                HttpResponse Respuesta = httpclient.execute (HttpPost);
                HttpEntity Entidad response.getEntity = ();
                es = entity.getContent ();
        } Catch (Exception e) {
                Log.e ("log_tag", "Error en La Conexión http" + e.toString ());
        De de de de Finalmente} {

        }
                }
               
static void sincronizado Privada getRespuestaPost () {
                               try {
                                               Lector BufferedReader = new BufferedReader (InputStreamReader nuevo (es Decir, "iso-8859-1"), 8);
                                               StringBuilder sb = new StringBuilder ();
                                               Línea String = null;
                               while ((line = reader.readLine ())! = null) {
                                               sb.append (line + "\ n");
                               }
                               is.close ();
                               Respuesta = sb.toString ();
                               Log.e ("log_tag", "Cadena JSON" + Respuesta);
                               } Catch (Exception e) {
                                               Log.e ("log_tag", "Error al convertir el Resultado" + e.toString ());
                               }
                }
               
private static sincronizado JSONArray getJsonArray () {
        JSONArray jArray = null;
        try {
                jArray = new JSONArray (Respuesta);
        } Catch (Exception e) {
        }
        volver jArray;
                }
               
sincronizado Públicas estáticas JSONArray getServerData (parametros ArrayList <String>, String url) {
        conectaPost (parametros, URL);
        if (es! = null) {
                getRespuestaPost ();
        }
        if (= null && Respuesta! respuesta.trim ()! =  "") {
                volver getJsonArray ();
        } Else {
                Devolver nula;
        }
    }

}
Utilidades de Embalaje (UtilsConfig)

Paquete  com.svalero.mvc_sanvalero.tools;

Público de Clase  UtilsConfig {
       Pública Estática  Cadena  URL  = "http://172.17.22.240:8080/AndroidGroupon/Controller"  ;
       Pública Estática  Cadena  WEBSERVICE_LOGIN  =  "ingresar"  ;
       Pública Estática  Cadena  WEBSERVICE_LOGIN_PARAMS_USER  =  "USUARIO"  ;
       Pública Estática  Cadena  WEBSERVICE_LOGIN_PARAMS_PASS  =  "pass"  ;
}
Manifest (Permisos de Internet)

<? Xml version = "1.0" encoding = "UTF-8">
<Xmlns manifiestos: android = "http://schemas.android.com/apk/res/android"
    Paquete = "com.seas.threads_handler"
    android: versionCode = "1"
    android: VersionName = "1.0">

    <Usos-sdk
        android: minSdkVersion = "8"
        android: targetSdkVersion = "16" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <Aplicación
        android: allowBackup = "true"
        android: icon = "@ estirable / ic_launcher"
        android: label = "@ string / nombre_apl"
        android: theme = "@ style / AppTheme">
        <Actividad
            android: name = "com.seas.threads_handler.Threads_Handler"
            android: label = "@ string / nombre_apl">
            <intent-filter>
                <accion android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </ Intención de filter>
        </ Actividad>
    </ Application>
</ Manifest>
Ejecucion

Comprobar la URL en La Que no hay Escuchando nuestra Aplicación Web está en el Servidor GlassFish.

<
Sustituir Por La IP_LOCAL, No Se permiten Conexiones "localhost".
Ejecutar el Servidor Web en Netbeans y el Android de Proyecto.
URL Público static String = "http://172.17.22.240:8080/AndroidGroupon/Controller";



Descargar Proyecto en Dropbox: Pincha

 Pincha Aquí.