使用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 ...
随机推荐
- gc 调优记录
qps 10,0000 -Xms10240m -Xmx10240m -XX:NewRatio=5 -XX:SurvivorRatio=6 2017-12-19T15:10:14.539+0800: 1 ...
- Java的Stack类实现List接口真的是个笑话吗
今天在网上闲逛时看到了这样一个言论,说“Java的Stack类实现List接口的设计是个笑话”. 当然作者这篇文章的重点不是这个,原本我也只是一笑置之,然而看评论里居然还有人附和,说“Ja ...
- jmeter-----GUI运行和非GUI运行的区别
gui:界面会消耗很多资源,并且运行的结果是保存在Jmeter运行的内存中.当时间一长,内存增长到一定程度,就会报错,甚至假死. 非gui:实时的将运行log文件保存到本地文件中,不会撑爆内存.并且对 ...
- python快速教程-vamei
2016年10月26日 12:00:53 今天开始着手python的学习,希望能高效快速的学完! Python基础(上)... 7 实验简介... 7 一.实验说明... 8 1. 环境登录... 8 ...
- [实战]MVC5+EF6+MySql企业网盘实战(19)——BJUI和ztree
写在前面 上周在博客园看到一篇通用权限系统的文章,看到他那个UI不错,这里就研究了一下,将网盘的UI修改为他的那个,感兴趣的可以参考:http://b-jui.com/ 系列文章 [EF]vs15+e ...
- poj1606 Jugs(BFS)
题目链接 http://poj.org/problem?id=1606 题意 有两个容量分别为ca,cb的杯子,可以向杯子里倒水,将杯子里的水倒空,将一个杯子里的水倒到另一个杯子里,求怎样倒才能使其中 ...
- 转:The Great DOM Fuzz-off of 2017
The Great DOM Fuzz-off of 2017 Posted by Ivan Fratric, Project Zero https://googleprojectzero.blogsp ...
- TCP/IP重新学习
TCP/IP 是用于因特网 (Internet) 的通信协议. 1.什么是TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的通信协议. TCP/IP 指传输控制协议/网际协议(Trans ...
- 洛谷P3538 [POI2012]OKR-A Horrible Poem [字符串hash]
题目传送门 A Horrible Poem 题目描述 Bytie boy has to learn a fragment of a certain poem by heart. The poem, f ...
- Bzoj2510 弱题(矩阵快速幂)
题面(权限题) 题解 一道概率\(dp\),可以设\(f[i][j]\)表示第\(i\)次操作后,标号为\(j\)的小球的期望个数,那么有: \[ \begin{aligned} &f[i][ ...