android+struts2 数据交互

移动端发送数据到 struts服务端 并且 服务端返回数据到移动端 。

 

注意要添加权限 :

<!-- 访问网络的权限-->

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

<!-- 读写存储卡的权限-->

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

 

struts2

xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd"
   >
   <struts>
   	 <constant name="struts.multipart.maxSize" value="102400000"/> 
 		<package name="default" extends="json-default">
 			<action name="login_*" class="com.cery.Login" method="{1}">
 			
 				<result name="success" type="stream">
 					<!-- 指定stream生成的 响应数据的类型  -->
 					<param name="contentType">text/html</param>
 					<!-- 指定由 getTip()方法返回 输出结果的 inputstream 字节流 -->
 					<!-- 其中 tip 对应Login类中的  private String tip = null; -->
 					<param name="inputName">tip</param>
 				</result>
 			</action>
 		</package>
   </struts>

 

 

Action类:

 

 

 

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

public class Login {

	private String tip=null;
	
	public InputStream getTip() throws UnsupportedEncodingException{
		//返回 字节流并 改变编码集 
		return new ByteArrayInputStream(tip.getBytes("utf-8"));
	}
	
	public String login(){
		HttpServletRequest request = ServletActionContext.getRequest(); 
		String name = request.getParameter("name");
		
		if(name.equals("123")){
			tip="密码正确";
			System.out.println("success");
		}else{
			tip="密码错误";
			System.out.println("fail");
		}
		return "success";
	}
}

 

 

 

android

 

 

Activtiy:

 

import com.common.android.HttpLoginThread;
import com.example.android_teacher.R;

import android.app.Activity;
import android.os.Bundle;

public class TestHttpActivity extends Activity {

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

	private void init() {
		//写本机的 ip 地址, ipconfig 一下, 手机要和电脑在同一个路由下(同一个局域网)
		new HttpLoginThread("http://192.168.1.100:8080/Struts2test/login_login", 123).start();
	}
}

 

 

线程类:

注:android本身是utf-8的编码集 所以 post请求不需要转码

查看android 的一些配置信息:
Properties poperty = System.getProperties();
poperty.list(System.out);

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;

import android.util.Log;


public class HttpLoginThread extends Thread{

	private String name;
	private String url;
	
	public HttpLoginThread(String url, String name){
		this.url = url;
		this.name = name;
	}
	
	//get请求
	private void doGet(){
		try {
			url = url+"?name="+URLEncoder.encode(name, "utf-8");//拼接get 请求的url地址
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		try {	
			httpUrl = new URL(url);
			conn = (HttpURLConnection) httpUrl.openConnection();
			conn.setReadTimeout(5000);		//设置响应时间
			conn.setRequestMethod("GET");	 	//设置请求方式
			StringBuffer sb = new StringBuffer();
			//得到 服务器返回的数据
			BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			
			String str;
			while((str = br.readLine()) != null){
				sb.append(str);
			}
			String result = sb.toString();
			Log.w("sss", "结果:"+result);
			
			br.close();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//post 请求
	private void doPost(){
		try {
			httpUrl = new URL(url);
			conn = (HttpURLConnection) httpUrl.openConnection();
			conn.setReadTimeout(5000);
			conn.setRequestMethod("POST");
			
			OutputStream out = conn.getOutputStream();
			String content = "username="+name;
			out.write(content.getBytes());
			
			StringBuffer sb = new StringBuffer();
			BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String str;
			while((str = br.readLine()) != null){
				sb.append(str);
			}
			
			Log.v("sss", sb.toString());
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void run(){
		doGet();
		//doPost();
	}
}

 

 

 

 

 

运行结果:

 

 

如果还想对 UI 组件 进行操作 就要加 Handler 类。

 

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.audiofx.EnvironmentalReverb;
import android.os.Environment;
import android.os.Handler;
import android.util.Log;
import android.webkit.WebView;
import android.widget.ImageView;

public class HttpThread extends Thread{
	
	private String url;
	private WebView webView;
	private Handler handler;
	
	public HttpThread(String url, WebView webView, Handler handler){
		this.url = url;
		this.webView = webView;
		this.handler = handler;
	}
	
	@Override
	public void run(){
		
		try {
			URL httpUrl = new URL(url);
			HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
			conn.setConnectTimeout(5000);//设置请求的时长
			conn.setRequestMethod("GET");
			
			final StringBuffer sb = new StringBuffer();
			BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			
			String str;
			while((str = br.readLine()) != null){
				sb.append(str);
			}
			
			handler.post(new Runnable() {
				
				@Override
				public void run() {
					//将网页加到 webview 中
					webView.loadData(sb.toString(), "text/html;charset=utf-8", null);
				}
			});
		
			Log.w("sss", sb.toString());
			
			br.close();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值