上一期我们学会了JavaFX一些基本控件的用法和按钮的触发事件处理,这期我们来学习如何与服务器做数据交互,借助这次机会我也好好巩固自己学到的东西,乘热打铁.看看,前两期的惨淡收视率,也是,毕竟JavaFX也很少有人问津,我写我的,你们看你们的,基本没人给我鼓励鼓励,没让我感到一丝积极的动力.呵呵,废话不说,回归话题
用FX构完图,写好相关控件处理,我们就要访问服务器.做相关的数据交互,例如用户登录验证,文件上下载传输,版本更新维护等等,这就需要了解http访问协议一些基本知识,这里我不多做讲解,有兴趣可以自己问度娘,学习室靠自己
做数据交互,一般有两种方法:
1.直接与DB交接,做数据处理,在javaFX自己封装JDBC与相应DB进行连接
2.与服务端(Server后台)做接口对接,进行后台数据处理
第一种:我不做详解,有一点java基础的都知道JDBC的操作,作为JavaFX客户端,我们也不愿意看任何一款client能随时随意不做声息把你老家数据库进行访问,除非是你自己写给自己的程序.否则不要轻易选择这种数据交互的方式,安全问题不是一般的危险,总之慎用
我们详解下第二种,我用的是ssh做后台架构,提供相相应服务接口给fx访问,采用https方式进行数据交互,不了解https是什么的,还是老话,问度娘,要学会主动学习.
下面是我自己封装的https方式的方法工大家参考
package util;
import java.net.URLEncoder;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.util.EntityUtils;
public class HttpConnectionUtil {
private static final String APPLICATION_JSON = "application/json";
private static final String CONTENT_TYPE_TEXT_JSON = "text/json";
public static String doPostByJson(String url, String json) throws Exception {
String result = null;
CloseableHttpClient httpclient = CloseableHttpClientUtil.getInstance();
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Content-Type", "application/json;charset=utf-8");
httpPost.addHeader("Content-Type", APPLICATION_JSON);
StringEntity se = new StringEntity(json,"UTF-8"); //这里必须处理编码UTF-8,不然就会出现中文乱码
se.setContentType(CONTENT_TYPE_TEXT_JSON);
se.setContentEncoding(new BasicHeader("Content-Type", APPLICATION_JSON));
httpPost.setEntity(se);
try {
HttpResponse httpResp = httpclient.execute(httpPost);
int statusCode = httpResp.getStatusLine().getStatusCode();
if (statusCode == 200) {
result = EntityUtils.toString(httpResp.getEntity());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
httpPost.releaseConnection();
}
return null == result ? "" : result;
}
}
以上封装了一个post方法,该方法由两个参数,第一是url即你要访问的https的路径,第二个json即用于与服务器交互的数据,以json格式封装,返回的参数也是(服务端处理)并以json格式反馈给fx客户端.
本期内容基本上就讲完了,不懂的同学可以随时留言给我,我会及时一一解答的,待阅读量超过300的时候,我就会更新第四讲.......嘿嘿...更新速度快与慢全由你们来决定哦.88