JavaFX 三 学会与服务器打交道 (漫长的打怪升级篇)

来源:互联网 发布:2013年全国火灾数据 编辑:程序博客网 时间:2024/05/29 17:03

         上一期我们学会了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

      

1 0
原创粉丝点击