后端开发菜鸟日记-八

   这次任务,是用接口将数据获取,在前端,级联带出,就是客户选了客户名称后,自动带出客户代码。

   在流程结束的时候,在调用接口,将数据回传,并将附件上传到FTP服务器,并根据当天时间新建一个文件夹,并把失败的做一个标记,并每天定时再推一次。

    经过两天的开发,已经完成,数据拿到,展示,回传,上传FTP。还缺的是定时任务和新建文件夹。

    JS是一个很好玩的东西,我正在自学,很垃圾,经常被带我的嫌弃。哈哈

    这次的代码我直接片段的进行讲解,希望对以后的我和大家有帮助。

    $(document).ready(function(){

    //select2是一个强大的插件
    $("#companyCode").select2();

    //这是获取输入框的对象
    var companyCode = $('input[name="extendDataFormInfo.value(fd_34037e4e3069dc)"]').val();
    if(companyCode){
        var nodes = companyCode.split(",");
        $("#companyCode").val(nodes).trigger('change');
    }

   //这里是当选择select2值的时候,触发事件。级联带出可以在这里完成。
    $("#companyCode").on("change",function(e){
        // e 的话就是一个对象 然后需要什么就 “e.参数” 形式 进行获取 console.log(e);
        console.log(e);
    });
});

 

 

这是自己定义的map数据结构,用来存放带过来的值。

// 键值对存放数据
function Map() {
    this.keys = new Array();
    this.data = new Object();
    // 放入一个键值对
    this.put = function(key, value) {
        if (this.data[key] == null) {
            this.keys.push(key);
        }
        this.data[key] = value;
    };
    // 根据key值取value
    this.get = function(key) {
        return this.data[key];
    };
    // 遍历Map
    this.each = function(fn) {
        if (typeof fn != 'function')
            return;
        var len = this.keys.length;
        for (var i = 0; i < len; i++) {
            var k = this.keys[i];
            fn(k, this.data[k], i);
        }
    };
    // 获取键值对数量
    this.size = function() {
        return this.keys.length;
    };
    // 判断Map是否为空
    this.isEmpty = function() {
        return this.keys.length == 0;
    };
}

</script>

就这样,就可以把后端传来的值带出。

后端自己遇到一个坑就是,String.replace的时候,如果是replace(String oldString,String newString),如果old是没有的,则返回一个对此对象的引用,就是原来这个对象的引用。但是都有返回值,都有新的String对象,要String一个新的对象是接收。自己基础太差劲了,这里没意识到,但是发现了就记住了。以后不会犯了。

 

url = new URL(urlString);
HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
StringBuffer buffer = new StringBuffer();
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnect.getInputStream(), "UTF-8"));
while ((line = reader.readLine()) != null) {
                buffer.append(line);
            }

这里是读数据的过程BufferedReader,是字符缓冲输入流,缓存是保存在内存中的,从内存中读数据是远快于从硬盘中的,BufferedReader里面的构造函数,也是先新建一个reader,每次读取完成后,再从后续中读取。是继承了reader.

在这里对JAVA的IO进行总结一下。

JAVA分为字节流和字符流,字节流的话是除了文本和XML以外的EXE和二进制的类的可以用字节流读取。

加了buffered的话是缓冲区,字节流和字符流都是有的,Stream的是字节,reader的是字符(write结尾的)。

 

 

到了FTP的使用

FTPClient ftpClient = new FTPClient();
        /* FileInputStream fis =new FileInputStream(); */
        String charset = LOCAL_CHARSET;
        try {

            ftpClient.connect(server);
            ftpClient.login(uname, pwd);
            /* fis = new FileInputStream(srcFile); */
            // 设置上传目录
            ftpClient.changeWorkingDirectory(foldName);
            ftpClient.setBufferSize(1024);
            ftpClient.enterLocalPassiveMode();
            if (FTPReply.isPositiveCompletion(ftpClient.sendCommand("OPTS UTF8", "ON"))) {
                // 开启服务器对UTF-8的支持,如果服务器支持就用UTF-8编码,否则就使用本地编码(GBK).
                charset = "UTF-8";
            }
            ftpClient.setControlEncoding(charset);
            fileName = new String(fileName.getBytes(charset), SERVER_CHARSET);
            // 设置文件类型(二进制)
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
            if (ftpClient.storeFile(fileName, in)) {
                System.out.println("成功");
            } else {
                System.out.println("失败");

            }

 

 

在HTTP接口使用过程中,

httpURLConnection.setRequestProperty("nretail-central-ability-customer-api-name",
                    "web.customerBaseInfo.getcustomerBaseInfo");
httpURLConnection.setRequestProperty("Content-type", "application/json");

这里是设置了报文头,这样的话,他那边的地址,一个地址就可以复用了。这个知识点挺好的。

 

大致的话,就是这些的,后面会进行补充的。

加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值