我有一个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) {
}
答案 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正文(或请求参数的值)保存到文件或其他持久性存储中,但您如何确定只有您可以设置该值,而不是任何发现它的人吗?