日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓向服务器发送List数据

發(fā)布時(shí)間:2024/7/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓向服务器发送List数据 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第一步:

首先寫一個(gè)自定義的JavaBean,以UserInfo.java為例,需要實(shí)現(xiàn)對(duì)象序列化的接口,因?yàn)橹筝敵隽鲗?duì)象需要實(shí)現(xiàn)輸出可序列化的對(duì)象。不這樣的話,后續(xù)時(shí)發(fā)送時(shí)會(huì)報(bào)異常

package xl.java.bean; import java.io.Serializable; /** * 用戶信息 * @author xl 2012-9-20 */ public class UserInfo implements Serializable { private static final long serialVersionUID = 1L; /** * 用戶名 */ private String UserName; /** * 密碼 */ private String Password; /** * 昵稱 */ private String NickName; /** * QQ號(hào) */ private int QQNumber; /** * 電話號(hào) */ private String TelNumber; /** * 年齡 */ private int Age; public String getUserName() { return UserName; } public void setUserName(String userName) { UserName = userName; } public String getPassword() { return Password; } public void setPassword(String password) { Password = password; } public String getNickName() { return NickName; } public void setNickName(String nickName) { NickName = nickName; } public int getQQNumber() { return QQNumber; } public void setQQNumber(int qQNumber) { QQNumber = qQNumber; } public String getTelNumber() { return TelNumber; } public void setTelNumber(String telNumber) { TelNumber = telNumber; } public int getAge() { return Age; } public void setAge(int age) { Age = age; } }

注意,服務(wù)器與客戶端的javabean包名必須一致,不然的話會(huì)報(bào)ClassNotFoundException異常。

第二步:

編寫客戶端模擬發(fā)送數(shù)據(jù)的類SendData.java。中間一大段的連接處理,具體解釋可參考:
JDK中的URLConnection參數(shù)詳解 - wlzf6296149的專欄 - 博客頻道 - CSDN.NET

package xl.java.send; import java.io.IOException; import java.io.InputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; import xl.java.bean.UserInfo; /** * 模擬發(fā)送數(shù)據(jù) * @author xl 2012-9-20 * */ public class SendData { private static final String BASIC_URL_QUEST = "http://192.168.1.1:8080/test/TestServlet"; public static void main(String[] args) { SendData senddata=new SendData(); try { senddata.sendDataToServer(); } catch (IOException e) { e.printStackTrace(); } } /** * 上傳處理結(jié)果 * * @throws IOException * */ private void sendDataToServer() throws IOException { //用于servlet判別請(qǐng)求,執(zhí)行相應(yīng)方法 String QuestId = "SubmitUserInfoList"; //模擬發(fā)送自定義類型的List數(shù)據(jù) List<UserInfo> listdata = new ArrayList<UserInfo>(); for (int i = 0; i < 10; i++) { UserInfo li = new UserInfo(); li.setUserName("XL" + i); li.setPassword("00000" + i); li.setQQNumber(1234567 + i); li.setTelNumber("15012344321" + i); li.setNickName("xiaolang" + i); li.setAge(18 + i); listdata.add(li); } URL url = new URL(BASIC_URL_QUEST); try { URLConnection con = url.openConnection(); HttpURLConnection httpUrlConnection = (HttpURLConnection) con; httpUrlConnection.setUseCaches(false); httpUrlConnection.setDoOutput(true); httpUrlConnection.setDoInput(true); httpUrlConnection.setRequestProperty("Content-type", "application/x-java-serialized-object"); //不設(shè)置這個(gè)默認(rèn)為Get,服務(wù)器會(huì)沒反應(yīng),不知道什么情況, //糾結(jié)了很久,改成Post的話,servlet里的 //doPost方法就有反應(yīng)了 httpUrlConnection.setRequestMethod("POST"); httpUrlConnection.connect(); OutputStream outStrm = httpUrlConnection.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(outStrm); //輸出流第一段數(shù)據(jù)是QuestId的值 oos.writeObject(QuestId); //第二段數(shù)據(jù)是List數(shù)據(jù) oos.writeObject(listdata); oos.flush(); oos.close(); InputStream inStrm = httpUrlConnection.getInputStream(); System.out.println("數(shù)據(jù)發(fā)送成功!"); } catch (Exception e) { e.printStackTrace(); } } }

編寫servlet,接收數(shù)據(jù)

import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import xl.java.bean.UserInfo; /** * @author xl 2012-9-20 * */ public class TestServlet extends HttpServlet { private static final long serialVersionUID = 1L; private Connection mConnection = null; private Statement mStatement = null; private String QuestId = ""; private static final String SUBMIT_USERINFO_LIST = "SubmitUserInfoList";// 客戶端提交到用戶信息 protected void doPost(HttpServletRequest request, HttpServletResponse response) { System.out.println("________---------doPost--------_____________"); try { // 鏈接數(shù)據(jù)庫 Class.forName("org.gjt.mm.<a href="http://lib.csdn.net/base/14" class="replace_word" title="undefined" target="_blank" style="color: rgb(223, 52, 52); font-weight: bold;">mysql</a>.Driver").newInstance(); mConnection = DriverManager .getConnection("jdbc:mysql://localhost/test?user=root&password=123&useUnicode=true&characterEncoding=UTF-8"); mStatement = mConnection.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); // 如果不是通過URL的Get形式上傳數(shù)據(jù)時(shí),調(diào)用此方法,獲取上傳的list數(shù)據(jù) getListDataByObjectInputStream(request, response); } catch (SQLException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 獲取輸入流中的數(shù)據(jù) * * @param request * @param response * @throws IOException * @throws ClassNotFoundException */ private void getListDataByObjectInputStream(HttpServletRequest request, HttpServletResponse response) throws IOException, ClassNotFoundException { System.out.println("---------getListDataByObjectInputStream--------"); response.setContentType("text/html"); InputStream inStream = request.getInputStream(); ObjectInputStream objInStream = new ObjectInputStream(inStream); QuestId = (String) objInStream.readObject(); @SuppressWarnings("unchecked") List<UserInfo> inList = (List<UserInfo>) objInStream.readObject(); if (QuestId.equals(SUBMIT_USERINFO_LIST)) { System.out.println("QuestId.equals(SUBMIT_ORDER_LIST)"); submitOrderList(request, response, inList); } objInStream.close(); System.out.println("objInStream.close()"); } /** * @param request * @param response * @param inList */ private void submitOrderList(HttpServletRequest request, HttpServletResponse response, List<UserInfo> inList) { // 獲取數(shù)據(jù),插入數(shù)據(jù)庫 for (UserInfo item : inList) { System.out.println("UserName=" + item.getUserName()); System.out.println("Password=" + item.getPassword()); System.out.println("NickName=" + item.getNickName()); System.out.println("QQNumber=" + item.getQQNumber()); System.out.println("TelNumber=" + item.getTelNumber()); System.out.println("Age=" + item.getAge() + "\n"); } /** * 插入數(shù)據(jù)庫代碼可以寫在這.. */ } }

最后:

運(yùn)行SendData.java文件,可看到控制臺(tái)輸出,根據(jù)前面的設(shè)定我們知道,客戶端和服務(wù)端已經(jīng)建立連接,并且數(shù)據(jù)成功發(fā)送給了服務(wù)端

參考鏈接:

關(guān)于servlet服務(wù)端接收客戶端發(fā)送的List

總結(jié)

以上是生活随笔為你收集整理的安卓向服务器发送List数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。