安卓向服务器发送List数据
生活随笔
收集整理的這篇文章主要介紹了
安卓向服务器发送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
編寫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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Caffe中的卷积实现
- 下一篇: 什么是单应矩阵和本质矩阵