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

一,服务器端:

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="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>  

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;
        }
}  

二,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>  

时间: 2024-10-05 22:07:12

android--使用Struts2服务端与android交互的相关文章

struts2服务端与android交互

本文主要包括以下内容 android与struts2服务器实现登陆 android从struts2服务器获取list数据 android上传数据到struts2服务器 服务器端代码 package com.easyway.json.android; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpS

使用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=&

Android客户端与服务端交互之登陆示例

今天了解了一下android客户端与服务端是怎样交互的,发现其实跟web有点类似吧,然后网上找了大神的登陆示例,是基于IntentService的 1.后台使用简单的servlet,支持GET或POST.这个servlet最终返回给前台一个字符串flag,值是true或false,表示登录是否成功. servlet使用之前需要配置,主义servlet的servlet-name要和servlet-mapping的servlet-name一致,否则找不到路径 我是在myEclipse上创建的一个we

Android WebView与服务端交互Demo

使用WebView可以让Android端的开发工作大量减少,原因是在服务端可以为其做一定的工作,下面这个小Demo就实现了从Android客户端与服务端的交互.我这里客户端使用的工具是Eclipse,服务端使用MyEclipse. 实现效果图: 客户端: 点击登录按钮后,页面跳转,而在服务端Console中看到如下(只看最后一行即可): 可以看到服务端收到了客户端发过来的用户名:yao. 源代码: 客户端: activity_main: <RelativeLayout xmlns:android

Android客户端与服务端(jsp)之间json的传输与解析【附效果图附源码】

最近有个项目需要用到json的传输,之前不是太了解,在网上找了些相关资料,写了一个小小的demo,可以实现基本功能:android客户端发送json到服务端,服务端使用jsp接收,解析后以json的形式返回给客户端,客户端接收打印,先看看运行的效果截图,源码会在文章的末尾给出. 1.服务端:接收到json后解析打印,然后发送json到客户端 2.客户端,收到服务端返回的json后打印 简单的介绍下源码: 服务端使用json.jsp来接收解析客户端传过来的json,json的解析需要使用lib目录

Android 客户端与服务端JSP相互传递中文

为了兼容简体.繁体及其他语系,推荐使用UTF-8编码. 首选,我们看看Android端应该怎么做: 在发送前,应该对参数值要进行UTF-8编码,我写了一个static的 转换函数,在做发送动作前用它将参数值转换成utf8编码: public class NetUtil { static public String toUtf8Url(String value) { try { return java.net.URLEncoder.encode(value, "utf8"); } cat

Android版Ftp服务端软件

分享一款开发的Android版Ftp服务端软件,支持Android4.0及以上版本,可以实现局域网无线传输文件到手机,或者把手机上的多媒体文件分享到iPad等设备来扩展这些设备的存储空间,详情请见软件的使用帮助,截图如下: iPad等设备播放手机上的多媒体文件: 下载地址: http://pan.baidu.com/s/1sjlZBzR 提取码: khji

简单的android客户端servlet服务端的交互

android客户端通过GET方式发送数据到服务端,服务端获得数据后,从服务端获取数据库里的信息,并以JSON数据格式返回. 1.GET方式传参的格式: http://127.0.0.1/AndroidService/android/upload?title=aaa&timelength=90的形式 参数是?后的title=aaa&timelength=90.多个参数用&连接. 2.连接服务器发送请求参数并获得服务器返回的数据,客户端获得数据后,主要是对JSON数据的一些解析. /

Android客户端采用Http 协议Post方式请求与服务端进行数据交互

本示例以Servlet为例,演示Android与Servlet的通信. 众所周知,Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post两种方式.至于Socket通信会在以后的博文中介绍. HTTP协议简介: HTTP (Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种协议. HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响