2 我的第一个手机提交数据到tomcat服务器

~~~~~~~~~~~~~~~~WebProject的项目,在这里我们建为fe工程~~~~~~~


-----------------LoginServlet.java-------------

package com.csx;


import java.io.IOException;

import java.io.PrintWriter;


import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


public class LoginServlet extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {


doPost(request, response);

}


public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String name = request.getParameter("name");

String password = request.getParameter("password");

if(name.equals("zz") && password.equals("123")) {

response.getOutputStream().write("success".getBytes());

} else {

response.getOutputStream().write("failed!!!!".getBytes());

}

}


}


。。。。。。web.xml。。。。。。。。。

 <servlet>

    <servlet-name>LoginServlet</servlet-name>

    <servlet-class>com.csx.LoginServlet</servlet-class>

  </servlet>


  <servlet-mapping>

    <servlet-name>LoginServlet</servlet-name>

    <url-pattern>/*</url-pattern>

  </servlet-mapping>



~~~~~~~~~~~~~~~~~~~Android项目~~~~~~~~~~~~~~~~~~~


----------------main.java--------------

package com.example.jn;


import android.os.Bundle;

import android.support.v7.app.ActionBarActivity;

import android.view.View;

import android.widget.EditText;

import android.widget.Toast;


public class MainActivity extends ActionBarActivity {


private EditText etUserName;

private EditText etPassword;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

etUserName = (EditText) findViewById(R.id.et_username);

etPassword = (EditText) findViewById(R.id.et_password);

}


public void doGet(View v) {

final String userName = etUserName.getText().toString();

final String password = etPassword.getText().toString();

new Thread(

new Runnable() {

@Override

public void run() {

// 使用get方式抓去数据

final String state = NetUtils.loginOfGet(userName, password);

// 执行任务在主线程中

runOnUiThread(new Runnable() {

@Override

public void run() {

// 就是在主线程中操作

Toast.makeText(MainActivity.this, state, 0).show();

}

});

}

}).start();

}

public void doPost(View v) {

final String userName = etUserName.getText().toString();

final String password = etPassword.getText().toString();

new Thread(new Runnable() {

@Override

public void run() {

final String state = NetUtils.loginOfPost(userName, password);

// 执行任务在主线程中

runOnUiThread(new Runnable() {

@Override

public void run() {

// 就是在主线程中操作

Toast.makeText(MainActivity.this, state, 0).show();

}

});

}

}).start();

}

}


//javaURL方式的访问网页

---------------------NetUtils.java------------------



import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import java.net.URLEncoder;


import android.util.Log;


public class NetUtils {


private static final String TAG = "NetUtils";

/**

* 使用post的方式登录

* @param userName

* @param password

* @return

*/

public static String loginOfPost(String userName, String password) {

HttpURLConnection conn = null;

try {

URL url = new URL("http://192.168.137.1:8080/fe/LoginServlet");

conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("POST");

conn.setConnectTimeout(10000); // 连接的超时时间

conn.setReadTimeout(5000); // 读数据的超时时间

conn.setDoOutput(true);// 必须设置此方法, 允许输出

//conn.setRequestProperty("Content-Length", 234);// 设置请求头消息, 可以设置多个

// post请求的参数

String data = "name=" + userName + "&password=" + password;

// 获得一个输出流, 用于向服务器写数据, 默认情况下, 系统不允许向服务器输出内容

OutputStream out = conn.getOutputStream();

out.write(data.getBytes());

out.flush();

out.close();

int responseCode = conn.getResponseCode();

if(responseCode == 200) {

InputStream is = conn.getInputStream();

String state = getStringFromInputStream(is);

return state;

} else {

Log.i(TAG, "访问失败: " + responseCode);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if(conn != null) {

conn.disconnect();

}

}

return null;

}


/**

* 使用get的方式登录

* @param userName

* @param password

* @return 登录的状态

*/

public static String loginOfGet(String userName, String password) {

HttpURLConnection conn = null;

try {

String data = "name=" + URLEncoder.encode(userName) + "&password=" + URLEncoder.encode(password);

    //由于我是通过真机连接电脑的wifi访问电脑的tomcat服务器,所以192.168.137.1为电脑发射wifi的ip地址(在手机上查则是网关地址)

URL url = new URL("http://192.168.137.1:8080/fe/LoginServlet?" + data);

conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("GET");// get或者post必须得全大写

conn.setConnectTimeout(10000); // 连接的超时时间

conn.setReadTimeout(5000); // 读数据的超时时间

int responseCode = conn.getResponseCode();

if(responseCode == 200) {

InputStream is = conn.getInputStream();

String state = getStringFromInputStream(is);

return state;

} else {

Log.i(TAG, "访问失败: " + responseCode);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if(conn != null) {

conn.disconnect();// 关闭连接

}

}

return null;

}

/**

* 根据流返回一个字符串信息

* @param is

* @return

* @throws IOException 

*/

private static String getStringFromInputStream(InputStream is) throws IOException {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int len = -1;

while((len = is.read(buffer)) != -1) {

baos.write(buffer, 0, len);

}

is.close();

String html = baos.toString();// 把流中的数据转换成字符串, 采用的编码是: utf-8

//String html = new String(baos.toByteArray(), "GBK");

baos.close();

return html;

}

}



。。。。。。。。。。。。。main.xml。。。。。。。。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

     >


    <EditText

        android:id="@+id/et_username"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:hint="请输入姓名" />


    <EditText

        android:id="@+id/et_password"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:hint="请输入密码" />


    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:onClick="doGet"

        android:text="Get方式提交" />


    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:onClick="doPost"

        android:text="Post方式提交" />

</LinearLayout>


、、、、、、权限、、、

<uses-permission android:name="android.permission.INTERNET"/>



//Android提供的访问网页的方式

//以下的红色字体可以代替上面的蓝色字体

----------------NetUtils2.java--------------

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;


import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.client.HttpClient;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;


import android.util.Log;


public class NetUtils2 {


private static final String TAG = "NetUtils";

/**

* 使用post的方式登录

* @param userName

* @param password

* @return

*/

public static String loginOfPost(String userName, String password) {

HttpClient client = null;

try {

// 定义一个客户端

client = new DefaultHttpClient();

// 定义post方法

HttpPost post = new HttpPost("http://192.168.137.1:8080/fe/LoginServlet");

// 定义post请求的参数

List<NameValuePair> parameters = new ArrayList<NameValuePair>();

parameters.add(new BasicNameValuePair("name", userName));

parameters.add(new BasicNameValuePair("password", password));

// 把post请求的参数包装了一层.

// 不写编码名称服务器收数据时乱码. 需要指定字符集为utf-8

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, "utf-8");

// 设置参数.

post.setEntity(entity);

// 设置请求头消息

// post.addHeader("Content-Length", "20");

// 使用客户端执行post方法

HttpResponse response = client.execute(post); // 开始执行post请求, 会返回给我们一个HttpResponse对象

// 使用响应对象, 获得状态码, 处理内容

int statusCode = response.getStatusLine().getStatusCode(); // 获得状态码

if(statusCode == 200) {

// 使用响应对象获得实体, 获得输入流

InputStream is = response.getEntity().getContent();

String text = getStringFromInputStream(is);

return text;

} else {

Log.i(TAG, "请求失败: " + statusCode);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if(client != null) {

client.getConnectionManager().shutdown(); // 关闭连接和释放资源

}

}

return null;

}


/**

* 使用get的方式登录

* @param userName

* @param password

* @return 登录的状态

*/

public static String loginOfGet(String userName, String password) {

HttpClient client = null;

try {

// 定义一个客户端

client = new DefaultHttpClient();

// 定义一个get请求方法

String data = "name=" + userName + "&password=" + password;

HttpGet get = new HttpGet("http://192.168.137.1:8080/fe/LoginServlet?" + data);

// response 服务器相应对象, 其中包含了状态信息和服务器返回的数据

HttpResponse response = client.execute(get); // 开始执行get方法, 请求网络

// 获得响应码

int statusCode = response.getStatusLine().getStatusCode();

if(statusCode == 200) {

InputStream is = response.getEntity().getContent();

String text = getStringFromInputStream(is);

return text;

} else {

Log.i(TAG, "请求失败: " + statusCode);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if(client != null) {

client.getConnectionManager().shutdown(); // 关闭连接, 和释放资源

}

}

return null;

}

/**

* 根据流返回一个字符串信息

* @param is

* @return

* @throws IOException 

*/

private static String getStringFromInputStream(InputStream is) throws IOException {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int len = -1;

while((len = is.read(buffer)) != -1) {

baos.write(buffer, 0, len);

}

is.close();

String html = baos.toString(); // 把流中的数据转换成字符串, 采用的编码是: utf-8

// String html = new String(baos.toByteArray(), "GBK");

baos.close();

return html;

}

}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。