使用Struts2服务端与android交互
转自:http://www.cnblogs.com/android-html5/archive/2011/09/25/2534107.html
android--使用Struts2服务端与android交互
一,服务器端:
首先搭建struts2的环境,导入必要的类库。

web.xml文件:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- </web-app>
struts.xml文件:
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <package name="testjson" <span style="color:#ff0000;">extends="json-default"</span>>
- <action name="getjson" class="com.shao.action.JSONAction" method="json">
- <result type="json"></result>
- </action>
- </package>
- </struts>
Action类:
- package com.shao.action;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.struts2.interceptor.ServletRequestAware;
- import org.apache.struts2.interceptor.ServletResponseAware;
- import com.google.gson.Gson;
- import com.opensymphony.xwork2.ActionSupport;
- import com.shao.domain.Music;
- public class JSONAction extends ActionSupport implements ServletRequestAware,
- ServletResponseAware {
- /**
- *
- */
- private static final long serialVersionUID = -3604892179657815531L;
- private HttpServletRequest request;
- private HttpServletResponse response;
- private String format;
- public String getFormat() {
- return format;
- }
- public void setFormat(String format) {
- this.format = format;
- }
- @Override
- public void setServletRequest(HttpServletRequest request) {
- // TODO Auto-generated method stub
- this.request = request;
- }
- @Override
- public void setServletResponse(HttpServletResponse response) {
- // TODO Auto-generated method stub
- this.response = response;
- }
- public void json(){
- List<Music> list = new ArrayList<Music>();
- // JsonArray jsonArray = new JsonArray();
- // JsonObject jsonObject = new JsonObject();
- Gson gson = new Gson();
- Music m1 = new Music();
- m1.setId(1);
- m1.setAuthor("游鸿明");
- m1.setName("白色恋人");
- m1.setTime("04:01");
- list.add(m1);
- Music m2 = new Music();
- m2.setId(2);
- m2.setAuthor("陈奕迅");
- m2.setName("淘汰");
- m2.setTime("04:44");
- list.add(m2);
- Music m3 = new Music();
- m3.setId(3);
- m3.setAuthor("谢霆锋");
- m3.setName("黄种人");
- m3.setTime("04:24");
- list.add(m3);
- java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<Music>>() {
- }.getType();
- String beanListToJson = gson.toJson(list,type);
- System.out.println("GSON-->"+beanListToJson);
- try {
- response.setCharacterEncoding("GBK");
- //response.setContentType("text/xml;charset=utf-8");
- this.response.getWriter().write(beanListToJson);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
这个Music实体类,android客户端也用到。
- package com.shao.domain;
- public class Music {
- private Integer id;
- private String name;
- private String time;
- private String author;
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getTime() {
- return time;
- }
- public void setTime(String time) {
- this.time = time;
- }
- public String getAuthor() {
- return author;
- }
- public void setAuthor(String author) {
- this.author = author;
- }
- }
访问 http://localhost:8080/Client/getjson.action;结果:

二,android客户端:

Activity类:
- package com.shao.main;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.ListView;
- import android.widget.SimpleAdapter;
- public class JsonClientActivity extends Activity {
- /** Called when the activity is first created. */
- private Button update;
- private ListView listView;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- update = (Button) findViewById(R.id.update);
- listView = (ListView) findViewById(R.id.list);
- update.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- String urlStr="http://10.0.2.2:8080/Client/getjson.action";
- String result = GsonUtil.getJson(urlStr);
- List<Music> list = GsonUtil.getListFromJson(result);
- List<Map<String,Object>> data = getAdapterData(list);
- SimpleAdapter adapter =new SimpleAdapter(JsonClientActivity.this, data, R.layout.list, new String[]{"name","author","time"}, new int[]{R.id.name,R.id.author,R.id.time});
- listView.setAdapter(adapter);
- //listView.
- }
- });
- }
- private List<Map<String,Object>> getAdapterData(List list){
- List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
- for(int i=0;i<list.size();i++){
- Map<String,Object> map = new HashMap<String, Object>();
- Music music= (Music)list.get(i);
- map.put("name",music.getName());
- map.put("author", music.getAuthor());
- map.put("time",music.getTime());
- data.add(map);
- }
- return data;
- }
- }
- package com.shao.main;
- import java.net.URI;
- import java.util.List;
- import org.apache.http.HttpEntity;
- import org.apache.http.HttpResponse;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.util.EntityUtils;
- import com.google.gson.Gson;
- public class GsonUtil {
- public static String getJson(String url){
- HttpClient client = new DefaultHttpClient();
- HttpPost request;
- try {
- request = new HttpPost(new URI(url));
- HttpResponse response = client.execute(request);
- // 判断请求是否成功
- if (response.getStatusLine().getStatusCode() == 200) { //200表示请求成功
- HttpEntity entity = response.getEntity();
- if(entity!=null){
- String beanListToJson = EntityUtils.toString(entity,"GBK");
- return beanListToJson;
- }
- }
- } catch (Exception e) {
- // TODO: handle exception
- }
- return null;
- }
- public static List<Music> getListFromJson(String json){
- java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<Music>>() {
- }.getType();
- Gson gson = new Gson();
- List<Music> list = gson.fromJson(json, type);
- return list;
- }
- }
list.xml
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:id="@+id/name"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="name"
- />
- <TextView
- android:id="@+id/author"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/name"
- android:paddingTop="5px"
- android:text="author"
- >
- </TextView>
- <TextView
- android:id="@+id/time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/name"
- android:layout_alignTop="@id/author"
- android:layout_alignParentRight="true"
- android:text="time">
- </TextView>
- </RelativeLayout>
运行结果:

主要的交互都是通过goolge的Gson完成
使用Struts2服务端与android交互的更多相关文章
- android--使用Struts2服务端与android交互
一,服务器端: web.xml文件: <?xml version="1.0" encoding="UTF-8"?> <web-app vers ...
- Android客户端与PC服务端、android服务端通过WiFi通信
前期准备:我的是Linux Mint操作系统(总之折腾的过程中怀疑过是不是系统的问题),首先是要创建wifi热点给android手机使用,这个时候笔记本作为通信的服务器端,android手机作为客户端 ...
- MQTT协议学习及实践(Linux服务端,Android客户端的例子)
前言 MQTT(Message Queuing Telemetry Transport),是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提 ...
- [PHP]AES加密----PHP服务端和Android客户端
本文采取128位AES-CBC模式加密和解密 1.首先对服务端安装mcrypt: sudo apt-get install php5-mcrypt php5-dev sudo php5enmod mc ...
- 完整版本的停车场管理系统源代码带服务端+手机android客户端
该源码是停车场管理软件附带源代码 J2EE服务端+android客户端,也是一套停车场管理车辆进出的管理软,喜欢的朋友可以看看吧. 应用的后台管理主要功能介绍:1 机构管理 ,机构有从属管理< ...
- js与C#服务端 json数据交互
1.1 服务端返回给前端 返回的数据都放入对象中(根据需求:单个对象,集合,键值对),然后JSON序列化返回给前端.这里可以引用JSON.NET 库,也可以用.NET自带的类库: JavaScript ...
- Java网络编程(TCP协议-服务端和客户端交互)
客户端: package WebProgramingDemo; import java.io.IOException; import java.io.InputStream; import java. ...
- 大家帮我测试下,IOCP服务端和客户端交互
大家帮我测试下,主要是对游戏服务端的测试,这个客户端C#版本,需要NET4.0支持
- #Eureka 客户端和服务端间的交互
Eureka 服务器客户端相关配置 1.建立eureka服务器 只需要使用@EnableEurekaServer注解就可以让应用变为Eureka服务器,这是因为spring boot封装了Eureka ...
随机推荐
- 深度揭秘阿里移动端高性能动态化方案Weex
2016年Qcon大会首日,阿里巴巴资深总监.淘宝移动平台.阿里百川负责人庄卓然宣布移动端高性能动态化方案Weex即时内测,并将于6月开源.此消息一出,群情汹涌,在座的程序猿.攻城狮们纷纷拿起手机扫码 ...
- 全栈Python 必备库
强大的库: 转自:微信公众号 Python最棒的地方之一,就是大量的第三方库,覆盖之广,令人惊叹.Python 库有一个缺陷就是默认会进行全局安装.为了使每个项目都有一个独立的环境,需要使用工具vir ...
- Linux下rsync的用法
一.rsync的概述 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync” ...
- Pytest UI自动化测试实战实例
前言 明天就放假了,4天小长假,是不是很开心!也许很多人要回老家帮家里种地,干农活.其实能陪陪家里人,帮忙干点农活还是挺开心的,希望大家有个愉快的假期!废话不多说哈,今天再来说说pytest吧,经过几 ...
- 【转载】Xutils3源码解析
Github源码地址:https://github.com/wyouflf/xUtils3 原文地址 :http://www.codekk.com/blogs/detail/54cfab086c476 ...
- markdown在list或者引用之后怎么去重新令其一段
多打一个空格,虽然这个方法简单的要是,但是我就是没有想到,真是尴尬到奶奶家啦!
- 湖南大学ACM程序设计新生杯大赛(同步赛)C - Do you like Banana ?
题目描述 Two endpoints of two line segments on a plane are given to determine whether the two segments a ...
- 学点编码知识又不会死:Unicode的流言终结者和编码大揭秘
如果你是一个生活在2003年的程序员,却不了解字符.字符集.编码和Unicode这些基础知识.那你可要小心了,要是被我抓到你,我会让你在潜水艇里剥六个月洋葱来惩罚你. 这个邪恶的恐吓是Joel Spo ...
- 【BZOJ 2665】 2665: [cqoi2012]编号(暴力?)
2665: [cqoi2012]编号 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 347 Solved: 217 Description 你需要给一 ...
- android 网络
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha android - async - http 安卓 异步 超文本传输协议 xUtil a ...