27
Oct
10

Usando JSON N02 (en el controller)

Siguiendo la parte anterior a este post Usando JSON N01 (en el bean)

Para trabajar aplicaciones AJAX con ExtJS es necesario usar el MVC, debes crear una clase acciones que lea los datos de la bd y los escriba en un texto ya sea en un “text/javascript” o en un “application/x-json” la clase que yo hice es la siguiente:


package paquetes.controlador;
import paquetes.modelo.Contacto;
import paquetes.modelo.Model;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.RequestDispatcher;
import java.io.PrintWriter;
import org.json.JSONObject;
import org.json.JSONArray;
import org.json.JSONException;
import java.util.ArrayList;
public class ListarContacto extends Action {

 public void run()throws ServletException, IOException{
  JSONObject respuesta=new JSONObject();
  try {
   respuesta=aJson();
  }catch (Exception ex) {
   throw new ServletException(ex.toString());

  }
  escribir(respuesta);
 }

 public JSONObject aJson()throws Exception{
  JSONObject respuesta=new JSONObject();
  JSONArray arreglo=new JSONArray();
  try {
   ArrayList lista=model.listaContacto();
   for (int i = 0; i
    arreglo.put(i,Contacto.load(lista.get(i)));
   }
  }catch (Exception ex) {
   respuesta.put("mensaje",ex.toString());
   respuesta.put("tipo","Error");
   return respuesta;
  }

  respuesta.put("success",true);
  respuesta.put("rows",arreglo);
  return respuesta;
 }

 public void escribir(JSONObject texto)throws IOException{
  String cb = request.getParameter("callback");
  boolean scriptTag = false;
if (cb != null) {
   scriptTag = true;
   response.setContentType("text/javascript");
  } else {
   response.setContentType("application/x-json");
  }
  PrintWriter out = response.getWriter();
  response.getWriter().print(texto);
 }
}
lo más importante es:
en el método aJson
JSONArray arreglo=new JSONArray(); creamos un JSONArray y recorremos la lista de objetos o datos traídos de la BD y los guardamos en el array que automáticamente con el método que creamos en el bean el lo convierte.
Model model= new Model(); //conexion a la BD
ArrayList lista=model.listaContacto(); //datos de la BD

for (int i = 0; i

arreglo.put(i,Contacto.load(lista.get(i)));//ponemos lo que estaba en la bd en el array
}
respuesta.put(“success”,true);//y el proceso finalizo correctamente
respuesta.put(“rows”,arreglo);//ponemos la info en lo que vamos a escribir
en el método escribir:
escogemos que tipo de respuesta será si javascript o json, y luego obtenemos el medio para escribir y escribimos.

2 Responses to “Usando JSON N02 (en el controller)”


  1. 1 Linuchis
    agosto 12, 2011 a las 10:28 am

    Hola,
    Mi clase java no reconoce ‘response’ ni ‘request’, se debe a la clase ‘Action’ que estás heredando?… intenté descargar el código en la página que dejaste pero, me sale este error: “Error Code: 403 Forbidden. Forefront TMG denied the specified Uniform Resource Locator (URL). (12233) ”
    Gracias por la ayuda.

    • agosto 16, 2011 a las 4:35 pm

      la Clase Action está dentro del paquete descargable, así que para verlo debes descargarlo. PDA: lo acabo de descargar sin problemas. de ser mucho inconveniente mandame un correo y te lo envio


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


I+Ds

Dudas consultas
Facebook
Twiter
Google +

Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevas publicaciones por correo.

Únete a otros 348 seguidores

Ingenio DS en Facebook

Redes Sociales y Archivos

Entradas

octubre 2010
L M X J V S D
« Ago   Nov »
 123
45678910
11121314151617
18192021222324
25262728293031

IngenioDS en twiter


A %d blogueros les gusta esto: