通过GET方式传递数据给服务器

1.web服务端的建立

建立Dynamic Web Project,名称为ServerGET

2.新建servlet

自动生成的ServerGET.java中有 @WebServlet(“/ServerGET”) 所以web.xml就不需要配置了

3.编写ServerGET.java

package com.example.servletGet;

import java.io.IOException;
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 ServerGET
 */
@WebServlet("/ServerGET")
public class ServerGET extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServerGET() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        System.out.println(name + "   " + age);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
    }
}

4.测试服务端

5.建立android客户端

布局文件main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.userinformation.MainActivity" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="name:" />

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="age:" />

    <EditText
        android:id="@+id/age"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="save" />

</LinearLayout>

MainActivity.java

package com.example.userinformation;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
    private EditText nameText, ageText;
    private Button button;
    private Handler myHandler = new Handler() {
        public void handleMessage(Message msg) {
            String text = "";
            if (msg.what == 1) {
                text = "success";
            } else if (msg.what == 2){
                text = "fail";
            }
            Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
        };
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        nameText = (EditText) findViewById(R.id.name);
        ageText = (EditText) findViewById(R.id.age);
        button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                final String name = nameText.getText().toString();
                final String age = ageText.getText().toString();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            //将EditText中的数据传到服务器
                            boolean result = UserInfoService.save(name, age);
                            if (result == true) {
                                myHandler.sendEmptyMessage(1);
                            } else {
                                myHandler.sendEmptyMessage(2);
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
    }
}

UserInfoService.java

package com.example.userinformation;

import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class UserInfoService {
    public static boolean save(String name, String age) throws Exception {
        String path = "http://10.107.56.64:8080/ServerGET/ServerGET";
        Map<String, String> params = new HashMap<String, String>();
        params.put("name", name);
        params.put("age", age);
        return sendGETRequest(path, params, "UTF-8");
    }

    private static boolean sendGETRequest(String path,
            Map<String, String> params, String encoding) throws Exception {

        StringBuilder sb = new StringBuilder(path);
        if (params != null && !params.isEmpty()) {
            sb.append("?");
            for (Entry<String, String> entry : params.entrySet()) {
                sb.append(entry.getKey()).append("=");
                sb.append(URLEncoder.encode(entry.getValue(), encoding))
                        .append("&");
            }
            sb.deleteCharAt(sb.length() - 1);
        }
        // 上面的sb用来构造url
        HttpURLConnection connection = (HttpURLConnection) new URL(sb.toString())
                .openConnection();
        connection.setConnectTimeout(5000);
        connection.setRequestMethod("GET");
        if (connection.getResponseCode() == 200) {
            return true;
        }
        return false;
    }
}

测试效果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SpringCloud专栏

JEasyframe使用教程2 项目结构

   以AreaDAO为例,里面非常简单,直接extendsBaseDAO传入javabean类即可。BaseDAO里面功能很多,基本能涵盖主要的db操作方法。...

14040
来自专栏acoolgiser_zhuanlan

JavaScript shift() 方法

如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject...

15470
来自专栏SpringCloud专栏

在普通Java类里使用spring里注入的service、dao等

在spring管理的web项目里,譬如Struts和spring的项目,配置好后,Struts里就可以直接使用定义好的service。但是如果要在普通的工具类里...

16430
来自专栏SpringCloud专栏

如何复制一个java对象(浅克隆与深度克隆)

在项目中,有时候有一些比较重要的对象经常被当作参数传来传去,和C语言的值传递不同,java语言的传递都是引用传递,在任何一个...

1.6K10
来自专栏SpringCloud专栏

傻瓜方法求集合的所有子集问题(java版)

    给定任意长度的一个集合,用一个数组表示,如{"a", "b","c"},求它的所有子集。结果是{ {a}, {b}, {c}, {a,b}, {a,c}...

16960
来自专栏SpringCloud专栏

回溯算法解数独问题(java版)

    下图是一个数独题,也是号称世界上最难的数独。当然了,对于计算机程序来说,只要算法是对的,难不难就不知道了,反正计算机又不累。回溯算法基本上就是穷举,解这...

30130
来自专栏SpringCloud专栏

回溯算法解迷宫问题(java版)

    以一个M×N的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计程序,对任意设定的迷宫,求出从入口到出口的所有通路。

30230
来自专栏SpringCloud专栏

1Java学习笔记之数据结构——单链表

前两天找工作面试过程中,被一家搞大数据的问到了二叉树、算法相关的,本来大学时就没学好,经过几年的工作,平时用的更少,一下子看着题简单,就是写不上来。

23940
来自专栏SpringCloud专栏

回溯算法解八皇后问题(java版)

    八皇后问题是学习回溯算法时不得不提的一个问题,用回溯算法解决该问题逻辑比较简单。

35050
来自专栏SpringCloud专栏

2Java学习笔记之数据结构——双向链表

在上一篇的单链表里,数据结构是单向的,只能从前往后一个一个找,而不能倒着来。因为每个节点Node只保存了下一个节点的位置。

11320

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励