Android和servlet的互联
生活随笔
收集整理的這篇文章主要介紹了
Android和servlet的互联
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- Android與Servlet的互聯(lián)
- 手機本地向服務器上傳圖片
- client
- servlet
- 從服務器下載文件
- client
- servlet
Android與Servlet的互聯(lián)
手機本地向服務器上傳圖片
client
package net.onest.androidandservletpractice;import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.view.View; import android.widget.Button; import android.widget.Toast;import java.io.FileInputStream; 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 MainActivity extends AppCompatActivity {/****實例一、 向服務器上上傳圖片* 所以應該是Android先讀取該文件然后使用輸出流向服務器端進行輸出,所以應該是網絡輸出流* 那么這個文件應該是Android上的,所以我們應該在data--》data-->code-cache-->創(chuàng)建文件夾--》引入圖片* 由于上傳圖片是一個耗時任務,所以需要使用子線程來完成* 這里我們就是用handle+message的方法** 在說完客戶端后我們就需要考慮服務器端了,首先服務器端應該的獲取請求* 然后獲取文件的輸入流,并將其采用輸出流輸出到本地* @param savedInstanceState*/private Button btnDownPicture;//2.創(chuàng)建handler對象Handler handler = new Handler(Looper.getMainLooper()){@Overridepublic void handleMessage(@NonNull Message msg) {super.handleMessage(msg);switch (msg.what){case 1:Toast.makeText(getApplicationContext(),"上傳圖片成功",Toast.LENGTH_LONG);break;}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//1.獲得控件idfindViews();//3.給按鈕設置點擊事件監(jiān)聽器btnDownPicture.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//上傳圖片upPicture();}});}上傳圖片private void upPicture() {//4.創(chuàng)建子線程new Thread(){@Overridepublic void run() {super.run();try {//a.獲取網絡輸出流,地址是服務器的地址URL url = new URL("http://you/AndroidAndServlet/uploadimg");HttpURLConnection con = (HttpURLConnection)url.openConnection();//設置在服務器端的請求方式con.setRequestMethod("POST");OutputStream out = con.getOutputStream();//b.讀取手機上的圖片然后使用網絡輸出流輸出到網絡上//得到圖片的絕對路徑String file = getFilesDir().getAbsolutePath()+"bg.jpg";InputStream in = new FileInputStream(file);int len=0;while ((len=in.read())!=-1){out.write(len);out.flush();}in.close();out.close();//c.上傳完成后,讓handle處理ui界面Message msg = handler.obtainMessage();msg.what = 1;handler.sendMessage(msg);} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}.start();}//獲得控件idprivate void findViews() {btnDownPicture = findViewById(R.id.btn_downpicture);} } <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:orientation="vertical"><Buttonandroid:id="@+id/btn_downpicture"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="上傳圖片" /></LinearLayout>servlet
package net.onest.servlet;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class UploadImg*/ @WebServlet("/uploadimg") public class UploadImg extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public UploadImg() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.根據(jù)請求獲得輸入流InputStream in = request.getInputStream();//2.獲得輸出流,考慮將文件寫到位置OutputStream out = new FileOutputStream("F:/copy.jpg");//3.循環(huán)寫出int len = 0;while((len=in.read())!=-1) {out.write(len);out.flush();}out.close();in.close();}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}從服務器下載文件
client
package net.onest.androidandservletpractice;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;public class DownText extends AppCompatActivity {/*** 示例二、從服務器下載文本到手機并顯示* 客戶端:所以應該是輸入流,將獲得到的文本顯示在text view框內** 服務器端:采用網絡輸出流將文件輸出* @param savedInstanceState*/private TextView tvDownText;private Button btnDownText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_down_text);//1.獲得控件idfindViews();//2.創(chuàng)建異步類對象btnDownText.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Down down = new Down(getApplicationContext(),tvDownText);down.execute("http://192.168.1.100:8080/AndroidAndServlet/DownloadtextServlet");}});//3.調用方法}//獲得控件idprivate void findViews() {tvDownText = findViewById(R.id.tv_dowmText);btnDownText = findViewById(R.id.btn_downText);} } package net.onest.androidandservletpractice;import android.content.Context; import android.os.AsyncTask; import android.widget.TextView;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL;public class Down extends AsyncTask<String,Void,String> {private Context context;private TextView tvDownText;private String result;public Down(Context context, TextView tvDownText) {this.context = context;this.tvDownText = tvDownText;}@Overrideprotected String doInBackground(String... strings) {/*** 在該方法內完成下載文件*/try {//1.獲得網絡輸入流URL url = new URL(strings[0]);InputStream in = new FileInputStream(String.valueOf(url));String file = context.getFilesDir()+"/copy.txt";OutputStream out = new FileOutputStream(file);int str=-1;StringBuffer buf = new StringBuffer();while((str=in.read())!=-1){out.write(str);out.flush();buf.append(str+"\n");}in.close();out.close();result = buf.toString();} catch (MalformedURLException | FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return result;} }servlet
package net.onest.servlet;import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class DownloadtextServlet*/ @WebServlet("/downloadtext") public class DownloadtextServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public DownloadtextServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.獲取本地輸入流InputStream in = new FileInputStream("F:/3.txt");//2.獲取本地輸出流OutputStream out = response.getOutputStream(); //3.循環(huán)讀寫int len=0;while((len=in.read())!=-1) {out.write(len);out.flush();}in.close();out.close();}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}總結
以上是生活随笔為你收集整理的Android和servlet的互联的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 医院预约挂号系统设计与实现(论文+源码)
- 下一篇: ARFoundation系列讲解 - 3