2012-03-14 14 views
5

tengo una clase java ::cómo llamar a un método de clase java en javascript con ajax?

package MyPackage; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.List; 

import net.sf.json.JSONArray; 
import net.sf.json.JSONObject; 

import com.google.gson.Gson; 

public class PopulateTextbox { 

    Gson gson = new Gson(); 
    JSONObject obj = new JSONObject(); 
    JSONArray arr = new JSONArray(); 
    String temp1; 

    String temp; 
    List <String>rowValues = new ArrayList<String>(); 
    List <Integer>rowValues1 = new ArrayList<Integer>(); 
    String[] contactListNames; 
    Connection con=null; 
    Statement st=null; 
    ResultSet rs=null; 


    public String method(){ 


     try{ 


     String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
     Class.forName(driver); 

     String db = "jdbc:odbc:Practice_Database"; 
     con = DriverManager.getConnection(db,"",""); 

     st = con.createStatement(); 
     String sql = "SELECT Emp_Name,ID,Email_Add FROM EmployeeSearch"; 
     rs = st.executeQuery(sql); 

     while(rs.next()){ 
      obj.put("ID", rs.getInt("ID")); 
      obj.put("Names",rs.getString("Emp_Name")); 
      obj.put("Email", rs.getString("Email_Add")); 
      arr.add(obj); 

     } 
     //obj.accumulate("ID",rowValues1); 

     //obj.accumulate("Names",rowValues); 
     temp1 = arr.toString(); 
     System.out.println(temp1); 

    }catch(Exception e){System.out.println(e);} 
    /*finally{ 
     try { 
       if(con!=null)con.close(); 
      } catch (SQLException e) { 

       e.printStackTrace(); 
      } 
     try { 
      if(rs!=null)rs.close(); 
     } catch (SQLException e) { 

      e.printStackTrace(); 
     }try { 
      if(st!=null)st.close(); 

     } catch (SQLException e) { 

      e.printStackTrace(); 
     } 


    }*/ 
     return temp1; 

    } 
    public static void main(String args[]) 
    { 
     PopulateTextbox obj = new PopulateTextbox(); 
     String temp1= obj.method(); 


    } 
} 

Esto me devuelve una matriz JSON. Ahora quiero llamar al método() de esta clase en JavaScript una y otra vez para obtener nuevos valores a medida que actualizo mi base de datos. Tengo una cuadrícula de datos que funciona bien cuando la página se carga por primera vez con un conjunto de valores en esta matriz json. Pero cómo actualizar datos usando Ajax. O cómo llamar al método() usando Ajax para que los datos se actualicen cuando hago clic en un botón en la página. El código donde estoy llamada a este método en Java-Script es ::

<% 

    String temp1; 
    PopulateTextbox obj = new PopulateTextbox(); 
    temp1 = obj.method(); 
    %> 

que estoy recibiendo un problema en la recuperación de nuevo conjunto de valores en Temp 1 a través de una llamada Ajax al servidor. por favor ayuda ? Gracias.

+0

El código que ha proporcionado no es Javascript, parece un scriptlet JSP (algo completamente distinto). ¿Con qué estás luchando exactamente? ¿Has intentado escribir Javascript que hace una solicitud de AJAX? –

Respuesta

4

Crear un JSP en blanco (por ejemplo, textBoxAjaxResp.jsp) y fuera poner su cadena JSON a partir de ese JSP:

<% 

String temp1; 
PopulateTextbox obj = new PopulateTextbox(); 
temp1 = obj.method(); 
%> 

<%=temp1 %> 

y golpear ese JSP usando la llamada jQuery AJAX.

$.get("mypath/textBoxAjaxResp.jsp", function (response) { 
    //do operation using the response 
}, "json"); 
+0

¿Puedes explicar en detalle? crear una JSP en blanco significa que no tengo que escribir nada dentro de ella. y ¿El código de mi script permanecerá en esa página? –

+0

sí, un jsp en blanco y llame a su obj.method() dentro de ese jsp y envíe la cadena json desde ese jsp configure contentType a application/json – Nemoy

+0

Hola, gt código de año. Cuando ejecuto mi textBoxAjaxResp.jsp en un navegador obtengo el resultado como una matriz json. Pero, ¿cómo almacenar eso en una variable de JavaScript para poder pasarlo a la fuente de mi cuadrícula de datos? –

1

puede utilizar Direct Web Remoting biblioteca para llamar a las funciones de Java usando javascript

pero sugeriría a escribir servlet (tutorial es bastante viejo, pero bueno, se debe utilizar servlet 3.0 si es posible) mismo (en lugar de utilizar DWR que será tener su servlet para escribir en la secuencia de respuesta también es un requisito muy simple, así que debe escribir servlet usted mismo en lugar de usar una biblioteca de terceros) y escribir la respuesta JSON directamente.

Cuestiones relacionadas