SpringMVC与安卓之间的交互1

接着上一篇 springMVC与jsp的交互,今天有空就测试了一下与安卓的交互
其实安卓与servlet交互和安卓与SpringMVC的交互一样就是改变一下,目前我用的是get方法访问SpringMVC,由于服务器程序沿用的是与上次jsp一样的代码,所以间接的进行了一次数据交互,把jsp的页面代码传到安卓上面来了
环境声明 :服务器环境与上一篇一样,安卓使用的是 Android studio 2.3.3

1、主要代码解释 #

A 服务器端程序 ##

package com.springmvc.test1;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;

import com.springmvc.pojo.RoleParams;

@Controller
@RequestMapping("/tsetClass")
public class SpringMVCTest1 {

@RequestMapping("/testParams")
public ModelAndView testParams(String roleName,String note) throws Exception{

    System.out.println("roleName===" + roleName);
    System.out.println("note===" + note);
    ModelAndView mv = new ModelAndView();
    mv.setViewName("t2params");//请看下面的图片    
    return mv;      
}

}


mv.setViewName(“t2params”);就是把jsp中的内容返回了给安卓APP,角色名称、备注都只是个标识,在介绍安卓APP的时候就会发现APP上有同样的字眼

B 安卓APP程序 ##

package com.hemycoo.server.androidserverv1;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.hemycoo.server.androidserverv1.utils.HttpUtils;
import com.hemycoo.sever.javabean.Test;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Response;


public class MainActivity extends AppCompatActivity {


private EditText ed_number;
private EditText ed_pwd;
private TextView tv_status;

String path;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ed_number = (EditText) findViewById(R.id.ed_number);
    ed_pwd = (EditText) findViewById(R.id.ed_pwd);
    tv_status = (TextView) findViewById(R.id.login_status);

}

public void login(View v) throws IOException {

    // 获得 QQ号码和 密码 , 然后登录
    final String number = ed_number.getText().toString().trim();
    final String pwd = ed_pwd.getText().toString().trim();

    if (TextUtils.isEmpty(number) || TextUtils.isEmpty(pwd)) {
        Toast.makeText(this, "号码或者密码不能为空", Toast.LENGTH_SHORT).show();
        return;
    }
//使用okhtttp连接服务器
    path = "http://10.149.72.101:8080/SpringMVC1024/tsetClass/testParams.action?roleName="+number+"&"+"note="+pwd;
//其中10.149.72.101为你本机的ip
    HttpUtils.sendHttpRequest(path, new okhttp3.Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            //Toast.makeText(MainActivity.this, "连接错误",Toast.LENGTH_SHORT).show();
            Log.e("okhttpOnFailer", "连接失败");
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {

            String responseData = response.body().string();
            if(responseData == null){
                tv_status.setText("null");
                return;
            }

            showResponse(responseData);
        }
    });

}

private void showResponse(final String response) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // 在这里进行UI操作,将结果显示到界面上
            tv_status.setText(response);
        }
    });
}
}

其中okhttp的使用才是联网的重点,下面我先把我的工程目录截图,再粘贴okhttp联网工具我封装的代码

package com.hemycoo.server.androidserverv1.utils;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;

public class HttpUtils {
public static final MediaType JSON= MediaType.parse("application/json; charset=utf-8");

public static void sendHttpRequest(String address,okhttp3.Callback callback){
    OkHttpClient client = new OkHttpClient();
    Request request = new Request.Builder()
            .url(address)
            .build();
    client.newCall(request).enqueue(callback);
}

public static void sendHttpRequestPost(String path, String json, okhttp3.Callback callback) {
    OkHttpClient client = new OkHttpClient();

    RequestBody requestBody = RequestBody.create(JSON ,json);


    Request request = new Request.Builder()
            .url(path)
            .post(requestBody)
            .build();
     client.newCall(request).enqueue(callback);
}

}  

我用的okhttp不是最新的,如有需要可以百度一下或者谷歌一下在github上会有新版本的介绍

2 效果显示 #

A 首先是服务器端 ##


前面两个是网址测试时候打印的,圈出来的是APP提交的。

B APP界面 ##


可以看出来账号密码就是提交给SpringMVC的,而下面的内容就是jsp的内容,就是服务器返回的
至此呢springMVC与前端的交互就完成了,虽然是基本的,但也足够了,别的只不过是在这个基础这个原理上的延伸。
与SpringMVC交互就是与SSM交互,都是一样的,这些都是简单的数据交互,与前端最大的困难其实就是数据交互,接下来遇到的新的数据交互问题在有空的时候再进行更新吧,写这篇主要是给初学者看的,毕竟培训机构也没有讲SpringMVC之类的与安卓的交互,网上的内容也不太多,我的程序在我的电脑上是完全能够运行的,看到这篇文章还有疑问的欢迎评论交流,说不定可以成为好朋友呢?

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值