安卓向服务器发送List数据
生活随笔
收集整理的這篇文章主要介紹了
安卓向服务器发送List数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一步:
首先寫一個自定義的JavaBean,以UserInfo.java為例,需要實現對象序列化的接口,因為之后輸出流對象需要實現輸出可序列化的對象。不這樣的話,后續時發送時會報異常
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號 */ private int QQNumber; /** * 電話號 */ 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; } }注意,服務器與客戶端的javabean包名必須一致,不然的話會報ClassNotFoundException異常。
第二步:
編寫客戶端模擬發送數據的類SendData.java。中間一大段的連接處理,具體解釋可參考:
JDK中的URLConnection參數詳解 - wlzf6296149的專欄 - 博客頻道 - CSDN.NET
編寫servlet,接收數據
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 { // 鏈接數據庫 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形式上傳數據時,調用此方法,獲取上傳的list數據 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(); } } /** * 獲取輸入流中的數據 * * @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) { // 獲取數據,插入數據庫 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"); } /** * 插入數據庫代碼可以寫在這.. */ } }最后:
運行SendData.java文件,可看到控制臺輸出,根據前面的設定我們知道,客戶端和服務端已經建立連接,并且數據成功發送給了服務端
參考鏈接:
關于servlet服務端接收客戶端發送的List
總結
以上是生活随笔為你收集整理的安卓向服务器发送List数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Caffe中的卷积实现
- 下一篇: 什么是单应矩阵和本质矩阵