使用Java将数据发送到本地托管的网站上的表单

时间:2011-03-18 07:25:20

标签: java web

我有一个Java程序,我从数据库中检索内容 现在我在程序中有一个表单,我想要做的是,按下按钮,从数据库中检索的一些字符串(文本)内容应该发送到我在本地托管的网站。发送的内容应在刷新时显示在网站上。

有人可以指导我如何实现这一点(发送数据通过网站显示)? 非常感激,如果你能够展示一些样本片段,或者给我一些可以提供帮助的教程的参考。

----好的所以我找到了一个链接到一个应该这样做的片段,但我现在无法理解这个片段究竟是如何工作的......有人可以引导我更好地了解这个吗? 这是代码

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) {
}

2 个答案:

答案 0 :(得分:1)

我不确定如何存储和管理任何记录,但是从Java可以发送HTTP Post到Url(在您的情况下http://localhost/)。

请查看http://www.exampledepot.com/egs/java.net/post.html有关如何执行此操作的摘录。

然后,您的网站可以将收到的信息存储在数据库中,并在刷新时显示。

更新继承人的功能

只是一方而不是这不是最好的方法,我不知道这是如何扩展的,但对于简单的解决方案,这在过去对我有用。

     /**
     * 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;
    }

然后您将使用以下函数:

        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);
        }

答案 1 :(得分:0)

最大的问题是如何验证从Java程序到您网站的“更新”?

您可以轻松地在您的网站上编写处理程序,说“/ update”将POST正文(或请求参数的值)保存到文件或其他持久性存储中,但您如何确定只有可以设置该值,而不是任何发现它的人吗?