android+struts2 数据交互

Android远程访问Struts2服务器程序(用到Json解析数据) [Android访问Struts2服务器程序]我发现在网上下载这个源码很困难,我一步步配置成功了,还将具体应该注意的事项都列出来了,很详细,能够运行成功! Android+struts2+JSON形式的手机开发 把本机当作服务器,将Android当作客户端 服务器端采用Struts2编码,Android客户端采用Json解析它的数据 服务器端程序为ServerProject(用MyEclipse建立此项目),Android客户端程序代码为:AndroidHttpJSONActivity 注意Android客户端代码中,有一个ip地址,要替换成你笔记本所在的ip地址【通过在命令提示符中输入ipconfig /all来查看你本机的ip地址,替换掉程序中的】。 你可能发现一个有趣的现象,将Android客户端中的代码http://192.168.1.52:8080/ServerProject/login.action? 放进浏览器中,发现会自动下载Action文件。 注意,因为Android要访问互联网,所以一定要在AndroidManifest.xml中给其赋予访问互联网的权利。 加上 <uses-permission android:name="android.permission.INTERNET"/> 程序运行后,输入admin【用户名】和密码:123456,则显示为管理员登录;输入不是admin的值如XXX,和密码:123456,显示为XXX登录; 其余显示为非法登录 立即下载

移动端发送数据到 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();
		}
		
	}
}

 

 

 

 

 

 

 

 

android调用Struts2 里面是一个利用android的httpclient调用sturts2的anction 并且返回一个json对象的例子。详细看我博客地址 http://blog.youkuaiyun.com/renlei0109/article/details/22725955 立即下载

相关推荐

android接收json例子struts2Action返回json格式数据

androind http 请求 struts2 action 返回 json 数据 例子

Android设备与structs2服务器程序进行json型数据交互

软件支持:androidADT 4.4.2            Myeclipse  10 注:本程序服务器程序是从利用网上现有程序,由于android版本差异,导致原android程序实现时出现问题,所以自己进行了修改!原服务器程序链接:http://blog.youkuaiyun.com/woshisap  感谢原作者提供的程序参考,本文只是对android部分的实现: 1.新建and

沧海一粟lc的专栏 611

Android+struts2实现图片上传

Android文件上传,服务端struts2实现。可运行,代码注释全。 另参考博文 http://blog.youkuaiyun.com/qq964166471/article/details/19073761

解决VMware虚拟机剪贴板失效的全面指南

虚拟机剪贴板共享是虚拟化技术中的关键功能,通过前后端架构实现主机与虚拟机间的数据交换。其核心原理依赖于VMware Tools服务(vmtoolsd)与用户进程(vmware-user)的协同工作,采用X11协议进行图形界面数据传输。该技术在开发测试环境中具有重要价值,能显著提升跨系统操作的效率。当出现剪贴板失效时,通常表现为复制粘贴无响应或同步异常,这可能是由于服务异常、挂起恢复进程僵死或配置错误导致。本文针对Ubuntu系统下的VMware Workstation环境,提供了从基础重启到内核模块编译的多

weixin_30414305的博客 488

Struts2+Json+Android简单实现

Struts2+Json+Android简单实现,StrutsJson为服务端代码,JSONDemo为Android端代码

Struts2_Android(2.2)_模拟数据访问项目 JSON项目

NULL 博文链接:https://xiongjiajia.iteye.com/blog/1886655

android客户端与struts,android客户端和struts框架之间的通信

android客户端和struts框架使用json数据通信很方便。参考了网上的一些资料和博客struts.xml文件一定要注意小心:今天因为粗心浪费了不少时间。。一定不要写成android客户端得json数据。服务器端:其中一个action配置如:服务器端其他的和一样,返回单个实体对象和实体列表没有区别。json返回结果类型,那么这个响应结果不需要返回给任何视图层,JSON会将Action里的状态...

weixin_35275189的博客 152

深入理解EtherCAT状态机:从IGH代码看伺服电机如何从‘上电’到‘使能’

本文深入解析EtherCAT状态机的工作原理,重点探讨伺服电机从'上电'到'使能'的状态转换过程。通过分析状态字(Status Word)和控制字(Control Word)的交互机制,结合IGH代码实例,揭示DS402状态机的核心逻辑,帮助工程师解决60%以上的伺服控制问题,提升EtherCAT网络调试效率。

weixin_42549037的博客 288

Struts2——开发Action

文章目录一、Action开发的三种方式1.1 继承ActionSupport类1.2 实现Action接口1.3 不继承任何类、不实现任何接口二、请求数据的封装2.1 提出问题2.2 解决问题2.2.1 向后端传递数据2.2.2 后端接收数据 一、Action开发的三种方式 参考:https://mp.weixin.qq.com/s/6YLd8CwsieXOht8cf_R-LQ 1.1 继承Act...

且行且珍惜 1016

组态王通过以太网与西门子S7-200 SMART PLC通讯案例详解

通过以上步骤,我们成功实现了组态王与西门子S7-200 SMART PLC的以太网通讯。这一技术不仅提高了工业自动化系统的灵活性和可靠性,还为初学者提供了一个实用的学习案例。希望本文能帮助您快速掌握组态王与西门子S7-200 SMART PLC的通讯技术。如有任何疑问,欢迎留言讨论!

2401_88785500的博客 2004

C#粘包和分包问题及解决方法

一:通过图解法来描述一下分包和粘包,这样客户更清晰直观的了解:  下面对上面的图进行解释:  1.正常情况:如果Socket Client 发送的数据包,在Socket Server端也是一个一个完整接收的,那个就不会出现粘包和分包情况,数据正常读取。  2.粘包情况:Socket Client发送的数据包,在客户端发送和服务器接收的情况下都有可能发送,因为客户端发送的数据都是发送的一个缓冲...

weixin_42033401的博客 7767

Android与服务器端数据交互(http协议整合struts2+android)

在android中有时候我们不需要用到本机的SQLite数据库提供数据,更多的时候是从网络上获取数据,那么Android怎么从服务器端获取数据呢?有很多种,归纳起来有 一:基于Http协议获取数据方法

dearbaba_8520的博客 259

BMW Trojan 样本分析

仅用于链接已经删却但是需要方便查阅的原文http://blog.youkuaiyun.com/zirconsdu/article/details/7997470 转载请注明出处http://blog.youkuaiyun.com/zirconsdu/article/details/8153813。 一些具体数据结构和具体路径隐去。   BMW木马样本分析 摘要 2011年底和某Hunter的谈话涉及到当时新检

zirconsdu的专栏 3910

android--使用Struts2服务端与android交互

转自博客园 android开发实例 一,服务器端:   首先搭建struts2的环境,导入必要的类库。 web.xml文件: xml version="1.0" encoding="UTF-8"?>   web-app version="2.5"        xmlns="http://java.sun.com/xml/ns/javae

cluzax的专栏 741

微信小程序:errno: 1500104, errCode: 10008, errMsg: “writeBLECharacteristicValue:fail:system error, status

微信小程序errno: 1500104, errCode: 10008, errMsg: "writeBLECharacteristicValue:fail:system error, status: UNKNOWN (239)"微信小程序调用蓝牙API,wx.writeBLECharacteristicValue()报错,微信小程序蓝牙写入错误,在开发uniapp微信小程序蓝牙通信功能时报错,蓝牙开发设备控制核心api,微信小程序调用蓝牙API “wx.writeBLECharacteristicValu

✅ 精选推荐文章 3928

多层环境室内定位系统综述总结

本文是一篇发表于2025年《IEEE Access》期刊的综述论文,由埃及开罗美国大学与卡塔尔卡内基梅隆大学团队合作完成,聚焦多层环境室内定位系统的核心挑战、技术方案及未来方向,填补了该领域缺乏全面综述的空白。

程序员石磊 440
上一篇: java jdk7 jdk8 32位 64位
下一篇: struts2 简单数据返回
cery_csdn
博客等级 码龄11年 2粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值