Foros del Web » Programación para mayores de 30 ;) » Java »

obtener datos del Applet en un jsp

Estas en el tema de obtener datos del Applet en un jsp en el foro de Java en Foros del Web. Tengo un Applet que dibuja unos circulos sobre una imagen para seleccionar puntos. Quisiera saber como puedo guardar esos puntos en otra clase java, ya ...
  #1 (permalink)  
Antiguo 16/08/2005, 08:45
 
Fecha de Ingreso: agosto-2005
Mensajes: 2
Antigüedad: 21 años, 2 meses
Puntos: 0
Exclamación obtener datos del Applet en un jsp

Tengo un Applet que dibuja unos circulos sobre una imagen para seleccionar puntos. Quisiera saber como puedo guardar esos puntos en otra clase java, ya sea como imagen(que no es lo mas apropiado por el esacio que ocupa), o los puntos x,y que tengo guardados en un Vector en el applet.
No se si se puedan obtener por medio de un request o de que manera puedo obtener esos valores.
Me urge la respuesta!!!! y estuve investigando y no encontre nada mas que comunicacion entre applets. Gracias
  #2 (permalink)  
Antiguo 17/08/2005, 08:36
Avatar de Ani Alamo  
Fecha de Ingreso: julio-2005
Mensajes: 35
Antigüedad: 21 años, 3 meses
Puntos: 1
Puedes hacer la llamada al applet y dentro de ella, invocar a un servlet de por medio, donde los puntos o lo que quieras del applet, puedas escribirlos a través del canal de comunicaciones del mismo servlet <<outputStream>> guardándolos en un vector de objetos si así lo quieres, e internamente lo procesas y si quieres retornas nuevamente el valor resultado al mismo applet o todo lo que tú quieras hacer con ello.
Puedes usar como referencia esta clase Java y este applet, y luego tú le das forma para tu aplicación:



Código PHP:
package myPackage;

public class 
AppObjJavaScript extends Applet {

    private static 
String strError = "Error";
    private 
JSObject win;
    private 
Vector vectorSalida = new Vector();
    private 
Vector vectorEntrada = new Vector();

    public 
AppObjJavaScript() {}

    public 
String devolverDatos() {

        
int i;
        
StringBuffer strRespuesta = new StringBuffer();
        if (
this.vectorEntrada.size() == 0)
            return 
"Ningun valor devuelto";
        else {
            if (
this.vectorEntrada.size() > 1)
                for (
i = 0; i < this.vectorEntrada.size(); i++) {
                    try {
                        
strRespuesta.append(this.vectorEntrada.elementAt(i).toString());
                        
strRespuesta.append(clsConstantes.DELIMITADOR_COMPONENTE);
                    } catch (
Exception e) {
                    }
                } else
                
strRespuesta.append(this.vectorEntrada.elementAt(0).toString());
        }
        return 
strRespuesta.toString();
    }

    public 
int enviarDatos(String strUrl) {
        
URL con = null;
        
URLConnection conAbierta = null;
        
ObjectOutputStream objOutServlet = null;
        
ObjectInputStream objInput = null;
        
Object o = null;
        
ExcepcionGenerica clex = null;
        
String strPantallaerror = "";
        
String pantallaerror = "";
        
String strPantallaError = "";

        try {
            
con = new URL(strUrl);
            
conAbierta = con.openConnection();
            
conAbierta.setDoInput(true);
            
conAbierta.setDoOutput(true);
            
conAbierta.setUseCaches(false);
            
conAbierta.setRequestProperty("Content-Type", "application/octet-stream");

            
// Obtiene el canal de escritura
            
objOutServlet = new ObjectOutputStream(conAbierta.getOutputStream());

            
// Escribe en el canal
            
objOutServlet.writeObject(this.vectorSalida);
            
objOutServlet.flush();
            
objOutServlet.close();

            
// Vacia el vector de salida
            
this.vectorSalida = null;
            
this.vectorSalida = new Vector();

            
// Espera de resultado
            
objInput = new ObjectInputStream(conAbierta.getInputStream());
            
o = objInput.readObject();
            
objInput.close();
            if (
o instanceof ExcepcionGenerica) {
                
clex = (ExcepcionGenerica) o;
                
/**/
                
System.out.println("Error de tipo ExcepcionGenerica --> " + clex.getBolErrorControlado());
                
// En función del tipo de error se muestra una pantalla de error u otra
                
if (clex.getBolErrorControlado()) {
                    
strPantallaerror = "window.showModalDialog('/html/errores/avisousuario.html','" + 
                       
clex.getStrError() + "','dialogWidth:300px;dialogHeight:175px;status:no;help:no;resizable:no');";
                    
win.eval(strPantallaerror);
                } else {
                    
pantallaerror = clex.fncMostrarPantallaError().trim();
                    
strPantallaError = pantallaerror.substring(28, pantallaerror.length() - 9).trim();
                    
win.eval(strPantallaError);
                }
                return 
Integer.valueOf(clex.getIntFilaTablaError()).intValue();
            } else
                if (
o instanceof Vector) {
                    
this.vectorEntrada = (Vector) o;
                    return -
1;
                } else
                    return -
1;
        } catch (
java.io.IOException e) {
            
System.out.println("catch IO: Error de tipo Excepcion Generica --> " + e.getMessage());
            
clex = new ExcepcionGenerica("ERROR en la comunicación con el Servlet (datoSimple): " + e.getMessage());

            
pantallaerror = clex.fncMostrarPantallaError().trim();
            
strPantallaError = pantallaerror.substring(28, pantallaerror.length() - 9).trim();

            
win.eval(strPantallaError);
            return 
0;

        } catch (
Exception e) {
            
/**/
            
System.out.println("catch: Error de tipo Excepcion Generica --> " + e.getMessage());
            
clex = new ExcepcionGenerica("ERROR en la comunicación con el Servlet (datoSimple): " + e.getMessage());

            
pantallaerror = clex.fncMostrarPantallaError().trim();
            
strPantallaError = pantallaerror.substring(28, pantallaerror.length() - 9).trim();

            
win.eval(strPantallaError);
            return 
0;
        }
    }


    public 
String getAppletInfo() {
        return 
"Carga una serie de componentes de la factoría de presentación";
    }

    public 
String[][] getParameterInfo() {
        return 
null;
    }
    public 
void init() {
        try {
            
System.out.println("Applet de factoria cargado.");
            
jbInit();
        } catch (
Exception e) {
            
e.printStackTrace();
        }
    }

    private 
void jbInit() throws Exception {
        
win = JSObject.getWindow(this);
    }

    public 
String obtenerDatoCompuesto(String servlet, String argumentos, int numColumnas, boolean combo) {
        
ObjectInputStream objIn = null;
        
Object objLeido = null;
        
Vector vectorArrayObjetos = new Vector();
        
Object arrayObjetos[];
        
String strValorDevuelto = "";
        
int indiceArray;
        
ExcepcionGenerica clex = null;

        
//Llamo al servlet
        
try {
            if (!
argumentos.equalsIgnoreCase(""))
                
argumentos = "?" + argumentos;

            
URL con = new URL(servlet + argumentos);
            
URLConnection conAbierta = con.openConnection();

            
conAbierta.setDoInput(true);
            
conAbierta.setUseCaches(false);
            
conAbierta.setRequestProperty("Content-Type", "application/octet-stream");

            
//Leer Datos del Servlet
            
objIn = new ObjectInputStream(conAbierta.getInputStream());

            
objLeido = (Object) objIn.readObject();
            
objIn.close();

            if (
objLeido instanceof Vector) {
                
vectorArrayObjetos = (Vector) objLeido;
                
String haySiguiente = "F";

                
// Comprobar si manda información de paginación.
                
if (vectorArrayObjetos != null && vectorArrayObjetos.size() > 0 && vectorArrayObjetos.elementAt(0) 
                          instanceof 
Boolean) {
                    if (((Boolean) 
vectorArrayObjetos.elementAt(0)).booleanValue())
                        
haySiguiente = "T";
                    else
                        
haySiguiente = "F";
                    
vectorArrayObjetos = (Vector) vectorArrayObjetos.elementAt(1);
                }

                if (
combo)
                    
haySiguiente = "";

                for (
int indiceVector = 0; indiceVector < vectorArrayObjetos.size(); indiceVector++) {
                    
arrayObjetos = (Object[]) vectorArrayObjetos.elementAt(indiceVector);

                    for (
indiceArray = 0; indiceArray < numColumnas; indiceArray++) {
                        if (
arrayObjetos[indiceArray] == null)
                            
strValorDevuelto += " " + clsConstantes.DELIMITADOR_CAMPO;
                        else
                            
strValorDevuelto += arrayObjetos[indiceArray].toString() + clsConstantes.DELIMITADOR_CAMPO;
                    }

                    
strValorDevuelto += clsConstantes.DELIMITADOR_FILA;
                }

                if (
strValorDevuelto.length() > 2)
                    
strValorDevuelto = haySiguiente + strValorDevuelto.substring(0, (strValorDevuelto.length() - 2));
            }
            else
                if (
objLeido instanceof ExcepcionGenerica) {
                    
// capturamos la ClsExcepcion
                    
clex = new ExcepcionGenerica((ExcepcionGenerica) objLeido);

                    
String pantallaerror = clex.fncMostrarPantallaError().trim();
                    
String strPantallaError = pantallaerror.substring(30, pantallaerror.length() - 9).trim();

                    
win.eval(strPantallaError);

                }
                else
                    
strValorDevuelto = strError;

        } 
//fin del try

        
catch (Exception excServlet) {
            
//clex = new ExcepcionGenerica("ERROR en la comunicación con el Servlet (datoSimple): " + excServlet.getMessage());
            
clex = new ExcepcionGenerica(excServlet.getMessage());
            
String pantallaerror = clex.fncMostrarPantallaError().trim();
            
String strPantallaError = pantallaerror.substring(28, pantallaerror.length() - 9).trim();
            
win.eval(strPantallaError);

            
strValorDevuelto = strError;
        }
        
finally {
            
objIn = null;
            
objLeido = null;
            return (
strValorDevuelto);
        }
    } 
continúa .............
__________________

Ani Alamo Gómez de González


"Sin Dios no soy nada en este mundo, sin El nada puedo ser... ni las hojas de los árboles se mueven, sino es por su gran poder. Bendito seas Señor."

Última edición por Ani Alamo; 17/08/2005 a las 08:44
  #3 (permalink)  
Antiguo 17/08/2005, 08:39
Avatar de Ani Alamo  
Fecha de Ingreso: julio-2005
Mensajes: 35
Antigüedad: 21 años, 3 meses
Puntos: 1
Segunda parte ....


Código PHP:
 
    
public String obtenerDatoSimple(String servlet, String argumentos) {
        
ObjectInputStream objIn = null;
        
Object objLeido = null;
        
String strValorDevueltoServlet;
        
String strValorDevuelto = "";
        
int indiceArray;
        
//Llamo al servlet


        
try {
            if (!
argumentos.equalsIgnoreCase(""))
                
argumentos = "?" + argumentos;
            
URL con = new URL(servlet + argumentos);

            
URLConnection conAbierta = con.openConnection();
            
conAbierta.setDoInput(true);
            
conAbierta.setUseCaches(false);
            
conAbierta.setRequestProperty("Content-Type", "application/octet-stream");
            
//Leer Datos del Servlet
            
objIn = new ObjectInputStream(conAbierta.getInputStream());
            
objLeido = (Object) objIn.readObject();

            
objIn.close();
            if (
objLeido instanceof String) {
                if (
objLeido != null)
                    
strValorDevuelto = objLeido.toString();
                else
                    
strValorDevuelto = " ";
            } else
                if (
objLeido instanceof ExcepcionGenerica) {
                    
// capturamos la ClsExcepcion
                    
ExcepcionGenerica clex = new ExcepcionGenerica((ExcepcionGenerica) objLeido);

                    
String pantallaerror = clex.fncMostrarPantallaError().trim();
                    
String strPantallaError = pantallaerror.substring(28, pantallaerror.length() - 9).trim();

                    
win.eval(strPantallaError);
                } else
                    
strValorDevuelto = strError;
        } catch (
Exception excServlet) {
            
ExcepcionGenerica clex = new ExcepcionGenerica("ERROR en la comunicación con el Servlet (datoSimple): " + 
                 
excServlet.getMessage());

            
String pantallaerror = clex.fncMostrarPantallaError().trim();
            
String strPantallaError = pantallaerror.substring(28, pantallaerror.length() - 9).trim();

            
win.eval(strPantallaError);

            
strValorDevuelto = strError;
        } 
finally {
            
objIn = null;
            
objLeido = null;
            return (
strValorDevuelto);
        }
    }
    public 
void recibirDatos(String strValor) {
        
this.vectorSalida.addElement(strValor);
    }
} 

Código del applet incrustado en una JSP
------------------------------------------

Código PHP:


<!-- JSP que carga el Applet a través del cual se llama a los servlets -->

<%@
page session="true" import="exe.comunes.FicheroIni"%>

<
HTML>
    <
HEAD>
        <
META name="GENERATOR" content="IBM WebSphere Page Designer V4.0 for Windows">
        <
META http-equiv="Content-Style-Type" content="text/css">
        <
TITLE></TITLE>
        <
script language="JavaScript">
            function 
fIniciarApplet()
            {
              
document.writeln("<APPLET codebase='<%=FicheroIni.getServidorWebApplets()%>' 
                                      archive='<%FicheroIni.getServidorWebApplets()%>AppObjJavaScript.jar' 
                                      code='exe.applets.AppObjJavaScript.class' 
                          name='AppletFactoria' height='0' width='0' mayscript></APPLET>"
);            
            }
        
</script>
    </HEAD>
    <BODY bgcolor="#FFFFFF" >
    <SCRIPT>
        fIniciarApplet();
        fncBuscarPersonalizacion("miServlet", AppletFactoria);
    </SCRIPT>
    </BODY>
</HTML>


<script>
function fncBuscarPersonalizacion(servlet,applet)
{
    var strParametro = "ACCION=DEFECTO";
    var url = servlet+"?"+strParametro;    
    applet.enviarDatos(url);
    return applet.devolverDatos();    
}
</script> 
__________________

Ani Alamo Gómez de González


"Sin Dios no soy nada en este mundo, sin El nada puedo ser... ni las hojas de los árboles se mueven, sino es por su gran poder. Bendito seas Señor."
  #4 (permalink)  
Antiguo 19/08/2005, 08:08
 
Fecha de Ingreso: agosto-2005
Mensajes: 2
Antigüedad: 21 años, 2 meses
Puntos: 0
Gracias por tu respuesta, me ayudo muchismo para lo que necesitaba.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:27.