上一篇:Android 本地tomcat服务器接收处理手机上传的数据之环境搭建
 
 
本篇基于上一篇搭建的服务器端环境,具体介绍Android真机上传数据到tomcat服务器的交互过程
 
场景:Android客户端上传用户名和密码到tomcat服务端,tomcat服务器自动接收Android客户端上传的数据,并打印出结果
 
一、tomcat服务器端实现
 
1.首先启动tomcat服务器
 
 
 
直接点击“finish”即可,启动后效果如下:
 
2. 编写servlet实现:ServletDemo1.java
 
package com.servlet.demo;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
/**
* Servlet implementation class ServletDemo1
*/
@WebServlet(asyncSupported = true, urlPatterns = { "/ServletDemo1" })
public class ServletDemo1 extends HttpServlet {
    private static final long serialVersionUID = 1L;
 
    private static Log Log = LogFactory.getLog(ServletDemo1.class);
 
    /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     *
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("    This is ");
        out.print(this.getClass());
        out.println(", using the GET method");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
 
        // 获取请求的数据,并向控制台输出
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("-----> doGet username:" + username + "   password:" + password);
    }
 
    /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to
     * post.
     *
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("    This is ");
        out.print(this.getClass());
        out.println(", using the POST method");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
 
        // 获取请求的数据,并向控制台输出
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("-----> doPost username:" + username + "   password:" + password);
    }
}
 
3.运行Servlet
运行成功:

 
二、Android客户端实现
 
1. 主页 MainActivity
 
package com.example.client;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
public class MainActivity extends Activity {
    private EditText username;
    private EditText password;
    private Button signup;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        username = (EditText) findViewById(R.id.account);
        password = (EditText) findViewById(R.id.password);
        signup = (Button) findViewById(R.id.btnSign);
        signup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onLogin();
            }
        });
    }
    // 发起HTTP请求
    public void onLogin() {
        String url = "http://192.168.191.1:8080/First/test/ServletDemo1";
        new HttpTread(url, username.getText().toString(), password.getText().toString()).start();
    }
}
 
说明:
1. 上述 "http://192.168.191.1:8080/First/test/ServletDemo1",其中ip地址的确定方法,请查看《Android 本地搭建Tomcat服务器供真机测试》介绍
2.  First:是web工程名
3.  test/ServletDemo1:是如下高亮部分映射的名称
 
 
2. 线程HttpTread
 
package com.example.client;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
 
public class HttpTread extends Thread {
    String url;
    String username;
    String password;
 
    public HttpTread(String url, String username, String password) {
        this.url = url;
        this.username = username;
        this.password = password;
    }
 
    private void send() throws IOException {
        // 将username和password传给Tomcat服务器
        url = url + "?username=" + username + "&password=" + password;
        try {
 
            URL httpUrl = new URL(url);
            // 获取网络连接
            HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
            // 设置请求方法为GET方法
            conn.setRequestMethod("GET"); // 或 "POST"
            // 设置访问超时时间
            conn.setReadTimeout(5000);
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String str;
            StringBuffer sb = new StringBuffer();
            // 读取服务器返回的信息
            while ((str = reader.readLine()) != null) {
                sb.append(str);
            }
            // 把服务端返回的数据打印出来
            System.out.println("HttpTreadResult:" + sb.toString());
        } catch (MalformedURLException e) {
        }
    }
 
    @Override
    public void run() {
        super.run();
        try {
            send();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
 
3. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.client"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="25"
        android:targetSdkVersion="25" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
 
说明:
需要声明权限:<uses-permission android:name="android.permission.INTERNET" />
 
编码结束。
 
4. Android 客户端主页面:
填写用户名和密码,例如:用户名:aaaa 密码:bbb123
 

 
点击“提交”按钮。切换到Eclipse中,可以看到Tomcat自动打印出所提交的数据:
 
完成。
 
Android客户端和tomcat服务端完整源码

转载于:https://www.cnblogs.com/onelikeone/p/9963142.html

Android 本地tomcat服务器接收处理手机上传的数据之案例演示相关推荐

  1. 服务器下传Android端,本地Tomcat服务器接收android端上传的数据

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 大体描述 android端提交账号和密码,Tomcat服务器端会接收到,eclipse的控制台输出得到的账号和密码. T ...

  2. APP后台上传Nginx+Tomcat服务器后图片可以上传但无法访问问题解决

    首先,得确认Nginx服务正常运行. 其次,图片的确已经正确上传. 然后,可以这样来做来减少调试的时间成本,将要访问的图片的路径粘贴到浏览器上来进行访问测试. OK.具体操作: 1.一般本地环境能够正 ...

  3. 手机文件传云服务器失败怎么办,手机上传文件到云服务器上

    const db = wx.cloud.database();//连接数据库 const userInfo = db.collection('userInfo')//查询数据库中的表 Page({ d ...

  4. ESP8266上传DHT11数据给私人javaweb服务器实现网页查询数据的电路方案

    系列文章目录 第一章ESP8266的java软件仿真测试 第二章ESP8266硬件与软件测试 第三章ESP8266客户端与Java后台服务器联调 第四章ESP8266客户端与JavaWeb服务器联调 ...

  5. 手机访问本地Tomcat服务器

    关于手机访问本地Tomcat服务器上正在运行的项目 前言 一.第一步打开电脑端口(win10) 二.第二步手机访问Tomcat项目 三.第三步设置电脑固定IP 第一种方式 第二种方式 *重点,装a克斯 ...

  6. Android实时监听短信并上传服务器

    短信监听 Android监听手机短信的方法有两种,分别为: 1.接受系统的短信广播:当手机收到新消息时,会发送一条广播,通过该广播就可以获取短信内容: 2.监听短信数据库:利用观察者模式监听短信数据库 ...

  7. 服务器怎么看系统安装时间,配置本地tomcat服务器时间查看时间

    配置本地tomcat服务器时间查看时间 内容精选 换一换 弹性云服务器显示的Windows操作系统时间与本地标准时间不一致.系统时间由于受到网络或一些进程驱动的影响可能会出现和标准时间不一致的情况.手 ...

  8. HTML项目部署到本地tomcat服务器

    最近使用duilib+cef做了一个内嵌网页形式的c++客户端项目.在HBuilder中开发html的时候,可以通过http://127.0.0.1/xxx.html的形式打开html,但是HBuil ...

  9. linux 下,解决tomcat服务器接收中文乱码的问题

    linux 下,解决tomcat服务器接收中文乱码的问题 参考文章: (1)linux 下,解决tomcat服务器接收中文乱码的问题 (2)https://www.cnblogs.com/taz372 ...

最新文章

  1. 武汉大学计算机学院放假时间,计算机学院关于2019年学生放暑假的通知
  2. javaweb学习总结(三十)——EL函数库
  3. [转载] 百科全说——王晓斋:解析中西医应对肝肾问题(10-10-12)
  4. Java整数缓存-为什么Integer.valueOf(127)== Integer.valueOf(127)为True
  5. Windows环境下smarty安装简明教程
  6. C语言---关于关键字const与static的简单理解
  7. SpaceX 火箭发射成功,一文了解所用的软件技术栈!
  8. mysql 如何把整列数据*10_10张图告诉你,MySQL 是如何查找数据的?
  9. webstrom html校验css语法,webstorm ECMAScript 6 语法检查
  10. c语言里,关于宏定义的使用
  11. windows7 纯净版各个版本下载
  12. smartadmin mysql_SmartAdmin 一套基于SpringBoot和Vue前后端分离的互联网企业级的通用型中后台解决方案...
  13. 网络爬虫案例——前程无忧网java岗位
  14. 【Unity3D日常开发】修改游戏对象的材质颜色
  15. 由俭入奢易,由奢入俭难
  16. 我的iphone6退货之路
  17. idea搭建bpm环境
  18. 函数库,GDB调试,结构体
  19. python计算机器人运动学分析_机器人学之逆运动学数值解法及SVD算法
  20. 时序分析应用案例-【工具篇】用EVIEWS处理时间序列

热门文章

  1. HBase(五):HBase基本API操作之CRUD
  2. apache日志轮转
  3. VC 开机自动启动程序 方法
  4. AES_ENCRYPT() 和 AES_DECRYPT()
  5. Docker实现运行tomcat并部署项目war包,并实现挂载目录
  6. 分辨率与栅格系统的对应关系:
  7. 获取自定义data的几种属性
  8. js 判断 undefined,单选 以及下拉框选中状态
  9. python面向对象编程类的成员总结
  10. 数字图像处理(一):灰度变换和直方图处理