2011-03-18 3 views
0

J'ai un programme en Java où je récupère le contenu d'une base de données.
Maintenant, j'ai un formulaire dans le programme, et ce que je veux faire est, sur simple pression d'un bouton, du contenu (texte) extrait de la base de données, devrait être envoyé sur un site web que j'héberge localement . Le contenu ainsi envoyé doit être affiché sur le site Web lorsqu'il est actualisé.Utilisation de Java pour envoyer des données à un formulaire sur un site Web hébergé localement

Quelqu'un peut-il me guider sur la façon dont je peux y parvenir (l'envoi de données à afficher sur le site Web)? J'apprécierai beaucoup, si vous pouvez montrer quelques exemples d'extraits ou me donner une référence à un tutoriel qui peut vous aider.

---- Bon alors j'ai trouvé un lien vers un extrait qui est censé faire cela, mais je suis incapable de comprendre à ce stade comment fonctionne exactement cet extrait ... quelqu'un peut-il me guider s'il vous plaît pour le savoir ? est ici le code

try { 
    // Construct data 
    String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8"); 
    data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8"); 

    // Send data 
    URL url = new URL("http://hostname:80/cgi"); 
    URLConnection conn = url.openConnection(); 
    conn.setDoOutput(true); 
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(data); 
    wr.flush(); 

    // Get the response 
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    String line; 
    while ((line = rd.readLine()) != null) { 
     // Process line... 
    } 
    wr.close(); 
    rd.close(); 
} catch (Exception e) { 
} 
+0

Utilisez AJAX pour accomplir cette tâche.,. Tutoriel/Référence pour ajax .. http://www.jaxtut.com/ – user617597

+0

Merci de regarder dans – Arun

+0

"Utiliser Ajax" n'est pas la solution à tous les problèmes impliquant l'envoi de données à travers un réseau. – Quentin

Répondre

1

Je ne suis pas sûr de la façon dont vous stocker et de gérer l'un des dossiers, mais de Java, vous pouvez envoyer un message HTTP à l'URL (Dans votre cas http://localhost/, probablement).

Jetez un oeil à http://www.exampledepot.com/egs/java.net/post.html pour un extrait sur la façon de procéder.

Votre site Web pourrait alors stocker les informations reçues dans une base de données et les afficher lorsque vous actualisez.

Mise à jour Heres la fonction

Juste un côté pas est certainement pas la meilleure façon de le faire et je n'ai aucune idée sur la façon dont cette échelle, mais des solutions simples, cela a fonctionné pour moi dans le passé.

 /** 
    * Posts a Set of forms variables to the Remote HTTP Host 
    * @param url The URL to post to and read 
    * @param params The Parameters to post to the remote host 
    * @return The Content of the remote page and return null if no data was returned 
    */ 
    public String post(String url, Map<String, String> params) { 

     //Check if Valid URL 
     if(!url.toLowerCase().contains("http://")) return null; 

     StringBuilder bldr = new StringBuilder(); 

     try { 
      //Build the post data 
      StringBuilder post_data = new StringBuilder(); 

      //Build the posting variables from the map given 
      for (Iterator iter = params.entrySet().iterator(); iter.hasNext();) { 
       Map.Entry entry = (Map.Entry) iter.next(); 
       String key = (String) entry.getKey(); 
       String value = (String)entry.getValue(); 

       if(key.length() > 0 && value.length() > 0) { 

        if(post_data.length() > 0) post_data.append("&"); 

        post_data.append(URLEncoder.encode(key, "UTF-8")); 
        post_data.append("="); 
        post_data.append(URLEncoder.encode(value, "UTF-8")); 
       } 
      } 

      // Send data 
      URL remote_url = new URL(url); 
      URLConnection conn = remote_url.openConnection(); 
      conn.setDoOutput(true); 
      OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
      wr.write(post_data.toString()); 
      wr.flush(); 

      // Get the response 
      BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
      String inputLine; 
      while ((inputLine = rd.readLine()) != null) { 
       bldr.append(inputLine); 
      } 
      wr.close(); 
      rd.close(); 
     } catch (Exception e) { 
      //Handle Error 
     } 

     return bldr.length() > 0 ? bldr.toString() : null; 
    } 

Vous pouvez ensuite utiliser la fonction comme suit:

 Map<String, String> params = new HashMap<String, String>(); 
     params.put("var_a", "test"); 
     params.put("var_b", "test"); 
     params.put("var_c", "test"); 
     String reponse = post("http://localhost/", params); 
     if(reponse == null) { /* error */ } 
     else { 
      System.out.println(reponse); 
     } 
+0

Salut @Johann J'ai regardé l'extrait, pouvez-vous me donner un aperçu de la manière dont les trois parties fonctionnelles, à savoir la construction de données, l'écriture de flux et le flux de lecture fonctionnent conjointement pour envoyer mes données personnalisées? Où dois-je placer la référence pour mes données de chaîne personnalisées dans l'extrait? – Arun

+0

Salut, j'ai une petite fonction astucieuse que j'utilise normalement pour accomplir l'envoi de formulaire et retourner une chaîne.Mettra à jour quand j'arriverai à mon PC. Et le processus est relativement facile. Vous construisez la chaîne qui contiendra vos données de formulaire (qui est normalement formatée comme "var = test & var_second = test & var_three = text"). La chaîne est ensuite envoyée à l'url et votre lecture de toute sortie que l'url vous donne. (Peut-être un "vrai" si les données ont été reçues avec succès ou un "faux" s'il s'agissait d'une erreur). –

+0

Merci @Johann gentil, im capable de relier cela à l'extrait que vous m'avez référé, attendra avec impatience votre mise à jour chaque fois que vous pouvez obtenir à votre pc, merci! – Arun

0

La grande question est de savoir comment vous authentifiez la « mise à jour » de votre programme Java sur votre site?

Vous pouvez facilement écrire un gestionnaire sur votre site Web, dites "/ update" qui enregistre le corps POST (ou la valeur d'un paramètre de requête) dans un fichier ou autre magasin persistant mais comment serez-vous sûr que seulement peut définir cette valeur, au lieu de quiconque le découvre?

Questions connexes