• 使用Struts2服务端与android交互


    转自:http://www.cnblogs.com/android-html5/archive/2011/09/25/2534107.html

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

    一,服务器端:

      首先搭建struts2的环境,导入必要的类库。

    web.xml文件:

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app version="2.5"   
    3.     xmlns="http://java.sun.com/xml/ns/javaee"   
    4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
    7.   <welcome-file-list>  
    8.     <welcome-file>index.jsp</welcome-file>  
    9.   </welcome-file-list>  
    10.  <filter>  
    11.     <filter-name>struts2</filter-name>  
    12.     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
    13.   </filter>  
    14.   <filter-mapping>  
    15.    <filter-name>struts2</filter-name>  
    16.    <url-pattern>/*</url-pattern>  
    17.   </filter-mapping>  
    18. </web-app>  

    struts.xml文件:
    1. <?xml version="1.0" encoding="GBK"?>  
    2. <!DOCTYPE struts PUBLIC  
    3.         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
    4.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
    5. <struts>  
    6. <package name="testjson" <span style="color:#ff0000;">extends="json-default"</span>>  
    7.   
    8.     <action name="getjson" class="com.shao.action.JSONAction" method="json">  
    9.       <result type="json"></result>  
    10.     </action>  
    11.   
    12. </package>  
    13. </struts>          

    Action类:
    1. package com.shao.action;  
    2.   
    3. import java.io.IOException;  
    4. import java.util.ArrayList;  
    5. import java.util.List;  
    6.   
    7. import javax.servlet.http.HttpServletRequest;  
    8. import javax.servlet.http.HttpServletResponse;  
    9.   
    10. import org.apache.struts2.interceptor.ServletRequestAware;  
    11. import org.apache.struts2.interceptor.ServletResponseAware;  
    12.   
    13. import com.google.gson.Gson;  
    14. import com.opensymphony.xwork2.ActionSupport;  
    15. import com.shao.domain.Music;  
    16.   
    17. public class JSONAction extends ActionSupport implements ServletRequestAware,  
    18.         ServletResponseAware {  
    19.   
    20.     /** 
    21.      *  
    22.      */  
    23.     private static final long serialVersionUID = -3604892179657815531L;  
    24.     private  HttpServletRequest request;  
    25.     private  HttpServletResponse  response;  
    26.     private  String  format;  
    27.     public String getFormat() {  
    28.         return format;  
    29.     }  
    30.   
    31.     public void setFormat(String format) {  
    32.         this.format = format;  
    33.     }  
    34.   
    35.     @Override  
    36.     public void setServletRequest(HttpServletRequest request) {  
    37.         // TODO Auto-generated method stub  
    38.         this.request = request;  
    39.     }  
    40.   
    41.     @Override  
    42.     public void setServletResponse(HttpServletResponse response) {  
    43.         // TODO Auto-generated method stub  
    44.         this.response = response;  
    45.     }  
    46.       
    47.     public  void json(){  
    48.         List<Music> list = new ArrayList<Music>();  
    49.     //  JsonArray  jsonArray = new JsonArray();  
    50.     //  JsonObject jsonObject = new JsonObject();  
    51.         Gson gson = new  Gson();  
    52.         Music m1 = new Music();  
    53.         m1.setId(1);  
    54.         m1.setAuthor("游鸿明");  
    55.         m1.setName("白色恋人");  
    56.         m1.setTime("04:01");  
    57.         list.add(m1);  
    58.         Music m2 = new Music();  
    59.         m2.setId(2);  
    60.         m2.setAuthor("陈奕迅");  
    61.         m2.setName("淘汰");  
    62.         m2.setTime("04:44");  
    63.         list.add(m2);  
    64.         Music m3 = new Music();  
    65.         m3.setId(3);  
    66.         m3.setAuthor("谢霆锋");  
    67.         m3.setName("黄种人");  
    68.         m3.setTime("04:24");  
    69.         list.add(m3);  
    70.         java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<Music>>() {  
    71.         }.getType();  
    72.         String beanListToJson = gson.toJson(list,type);  
    73.         System.out.println("GSON-->"+beanListToJson);     
    74.         try {    
    75.              response.setCharacterEncoding("GBK");   
    76.             //response.setContentType("text/xml;charset=utf-8");  
    77.             this.response.getWriter().write(beanListToJson);    
    78.         } catch (IOException e) {    
    79.             e.printStackTrace();    
    80.         }    
    81.     }  
    82. }  
    这个Music实体类,android客户端也用到。
    1. package com.shao.domain;  
    2.   
    3. public class Music {  
    4.   
    5.         private Integer id;    
    6.         private String name;    
    7.         private String time;  
    8.         private String  author;  
    9.         public Integer getId() {  
    10.             return id;  
    11.         }  
    12.         public void setId(Integer id) {  
    13.             this.id = id;  
    14.         }  
    15.         public String getName() {  
    16.             return name;  
    17.         }  
    18.         public void setName(String name) {  
    19.             this.name = name;  
    20.         }  
    21.         public String getTime() {  
    22.             return time;  
    23.         }  
    24.         public void setTime(String time) {  
    25.             this.time = time;  
    26.         }  
    27.         public String getAuthor() {  
    28.             return author;  
    29.         }  
    30.         public void setAuthor(String author) {  
    31.             this.author = author;  
    32.         }   
    33. }  

    访问 http://localhost:8080/Client/getjson.action;结果:

    二,android客户端:

    Activity类:

         

    1. package com.shao.main;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.HashMap;  
    5. import java.util.List;  
    6. import java.util.Map;  
    7.   
    8. import android.app.Activity;  
    9. import android.os.Bundle;  
    10. import android.view.View;  
    11. import android.view.View.OnClickListener;  
    12. import android.widget.Button;  
    13. import android.widget.ListView;  
    14. import android.widget.SimpleAdapter;  
    15.   
    16. public class JsonClientActivity extends Activity {  
    17.     /** Called when the activity is first created. */  
    18.     private  Button  update;  
    19.     private ListView listView;  
    20.     @Override  
    21.     public void onCreate(Bundle savedInstanceState) {  
    22.         super.onCreate(savedInstanceState);  
    23.         setContentView(R.layout.main);  
    24.         update = (Button) findViewById(R.id.update);  
    25.         listView = (ListView) findViewById(R.id.list);  
    26.         update.setOnClickListener(new OnClickListener() {  
    27.               
    28.             @Override  
    29.             public void onClick(View v) {  
    30.                 // TODO Auto-generated method stub  
    31.                  String urlStr="http://10.0.2.2:8080/Client/getjson.action";  
    32.               String    result  = GsonUtil.getJson(urlStr);  
    33.               List<Music>  list = GsonUtil.getListFromJson(result);  
    34.               List<Map<String,Object>>  data  = getAdapterData(list);  
    35.                 
    36.              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});   
    37.              listView.setAdapter(adapter);  
    38.              //listView.  
    39.             }  
    40.         });  
    41.     }   
    42.     private List<Map<String,Object>>  getAdapterData(List  list){  
    43.           List<Map<String,Object>>  data = new  ArrayList<Map<String,Object>>();  
    44.           for(int i=0;i<list.size();i++){  
    45.               Map<String,Object>  map = new HashMap<String, Object>();  
    46.               Music music= (Music)list.get(i);  
    47.               map.put("name",music.getName());  
    48.               map.put("author", music.getAuthor());  
    49.               map.put("time",music.getTime());  
    50.               data.add(map);  
    51.           }  
    52.           return   data;  
    53.     }  
    54. }  

    1. package com.shao.main;  
    2.   
    3. import java.net.URI;  
    4. import java.util.List;  
    5.   
    6. import org.apache.http.HttpEntity;  
    7. import org.apache.http.HttpResponse;  
    8. import org.apache.http.client.HttpClient;  
    9. import org.apache.http.client.methods.HttpPost;  
    10. import org.apache.http.impl.client.DefaultHttpClient;  
    11. import org.apache.http.util.EntityUtils;  
    12.   
    13. import com.google.gson.Gson;  
    14.   
    15. public class GsonUtil {  
    16.        public static  String getJson(String  url){  
    17.              
    18.            HttpClient client = new DefaultHttpClient();  
    19.              
    20.            HttpPost  request;  
    21.            try {  
    22.             request = new HttpPost(new URI(url));  
    23.             HttpResponse  response  =  client.execute(request);  
    24.               // 判断请求是否成功      
    25.             if (response.getStatusLine().getStatusCode() == 200) { //200表示请求成功    
    26.                 HttpEntity  entity = response.getEntity();  
    27.                 if(entity!=null){  
    28.                     String beanListToJson = EntityUtils.toString(entity,"GBK");  
    29.                     return beanListToJson;  
    30.                 }  
    31.             }  
    32.             
    33.         } catch (Exception e) {  
    34.             // TODO: handle exception  
    35.         }  
    36.          return  null;  
    37.        }  
    38.    public  static  List<Music>  getListFromJson(String json){  
    39.         java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<Music>>() {  
    40.         }.getType();  
    41.         Gson gson = new Gson();  
    42.         List<Music>  list  = gson.fromJson(json, type);  
    43.         return list;  
    44.    }  
    45. }  

    list.xml

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:orientation="vertical"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="fill_parent"  
    6.     >  
    7. <TextView    
    8.     android:id="@+id/name"  
    9.     android:layout_width="fill_parent"   
    10.     android:layout_height="wrap_content"   
    11.     android:text="name"  
    12.     />  
    13.  <TextView   
    14.     android:id="@+id/author"  
    15.     android:layout_width="wrap_content"   
    16.     android:layout_height="wrap_content"  
    17.     android:layout_below="@id/name"  
    18.     android:paddingTop="5px"  
    19.     android:text="author"  
    20.      >  
    21.  </TextView>  
    22.  <TextView   
    23.     android:id="@+id/time"  
    24.     android:layout_width="wrap_content"   
    25.     android:layout_height="wrap_content"  
    26.     android:layout_below="@id/name"  
    27.     android:layout_alignTop="@id/author"  
    28.     android:layout_alignParentRight="true"  
    29.     android:text="time">  
    30.  </TextView>      
    31. </RelativeLayout>  
    运行结果:

    主要的交互都是通过goolge的Gson完成

  • 相关阅读:
    flash 异性窗体
    ASCⅡ 表 关键字符
    VC 中显示位图的步骤
    输出电脑的所有Mac地址
    const char* 和 char* const
    C# 生成PDF
    vc6显示行号
    纪念一下。
    MII接口全家福
    Virtex6 GTX设计总结:预加重、均衡、输出振幅的值
  • 原文地址:https://www.cnblogs.com/x_wukong/p/4180714.html
Copyright © 2020-2023  润新知