专高二 MVC架构 day2

该文章展示了如何在Java中使用MVC模式进行网络请求处理。定义了MyCallBack接口处理回调,实现了MyModel接口以执行GET和POST请求,通过HttpUtils网络单例进行HTTP操作,并使用MyPostHttpThread异步执行任务。
摘要由CSDN通过智能技术生成

MVC分三层

View层             显示

Controller层     逻辑

Model层           存储

定义两个接口

package com.bw.day2.callback;

public interface MyCallBack {
    void ok(String json);
    void error(String json);

}
package com.bw.day2.model;

import com.bw.day2.callback.MyCallBack;

public interface MyModel {
    void doGet(String path, MyCallBack myCallBack);
    void doPost(String path,String params, MyCallBack myCallBack);
}

实现MyModel接口

package com.bw.day2.model;

import com.bw.day2.callback.MyCallBack;

public class MyRegisterModel implements MyModel{
    @Override
    public void doGet(String path, MyCallBack myCallBack) {
        
    }

    @Override
    public void doPost(String path, String params, MyCallBack myCallBack) {

    }
}

网络单例

package com.bw.day2.utils;

import com.bw.day2.callback.MyCallBack;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class HttpUtils {
    private HttpUtils(){

    }
    private static HttpUtils httpUtils=null;
    public static HttpUtils getInstance(){
        if(httpUtils==null){
            httpUtils=new HttpUtils();
        }
        return httpUtils;
    }

    public void postString(String url, String params, MyCallBack myCallBack){
        try {
            URL url1 = new URL(url);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url1.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setConnectTimeout(2000);
            httpURLConnection.setReadTimeout(2000);
            httpURLConnection.setDoInput(true);
            httpURLConnection.setDoOutput(true);
            httpURLConnection.connect();
            OutputStream outputStream = httpURLConnection.getOutputStream();
            outputStream.write(params.getBytes());
            outputStream.flush();
            if(httpURLConnection.getResponseCode()==200){
                InputStream inputStream = httpURLConnection.getInputStream();
                byte[] bytes = new byte[1024];
                int len=0;
                StringBuilder stringBuilder = new StringBuilder();
                while ((len=inputStream.read(bytes))!=-1){
                    stringBuilder.append(new String(bytes,0,len));
                }
                String json = stringBuilder.toString();
                myCallBack.ok(json);
            }
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

异步任务调用网络单例

package com.bw.day2.utils;

import com.bw.day2.callback.MyCallBack;

public class MyPostHttpThread extends Thread {
    String path;
    String params;
    MyCallBack myCallBack;

    public MyPostHttpThread(String path, String params, MyCallBack myCallBack) {
        this.path = path;
        this.params = params;
        this.myCallBack = myCallBack;
    }

    @Override
    public void run() {
        super.run();
        HttpUtils.getInstance().postString(path, params, myCallBack);
    }
}

调用异步任务 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值