SpringMVC與安卓之間的互動1
阿新 • • 發佈:2019-02-14
接著上一篇 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之類的與安卓的互動,網上的內容也不太多,我的程式在我的電腦上是完全能夠執行的,看到這篇文章還有疑問的歡迎評論交流,說不定可以成為好朋友呢?