• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android实战简易教程-第六十六枪(服务器端搭建和服务器端Json数据交互)

Android实战简易教程-第六十六枪(服务器端搭建和服务器端Json数据交互)

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了Android实战简易教程-第六十六枪(服务器端搭建和服务器端Json数据交互)等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android实战简易教程-第六十六枪(服务器端搭建和服务器端Json数据交互)


学习Android有一段时间了,对服务器端有很深的好奇,决定对服务器端的实现进行一些研究,这里实现了一个简单的小例子,用于获取服务器端的json数据,例子很简单,适合初学者学习使用。

服务器端

首先我们搭建服务器端,服务器端使用struct2架构,对该架构不熟悉的人可以花一点时间看看慕课网上的相关视频,这里用myeclipse实现服务器端。

新建一个web工程,这里要引入struct2相关,方法是:点击新建的web工程邮件-》myeclipse选项-》project facets->选择安装struct2相关即可。

\

看一下相关代码:

struts.xml:

  
  

      
          
      
     index.jsp  
      
          
      


web.xml:



  Test2
  
    struts2
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  
  
    struts2
    *.action
  


下面是JSONAction.java:

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) {  
        this.request = request;  
    }  
  
    @Override  
    public void setServletResponse(HttpServletResponse response) {  
        this.response = response;  
    }  
      
    public  void json(){  
        List list = new ArrayList();  
        Gson gson = new  Gson();  
        Music m1 = new Music();  
        m1.setId(1);  
        m1.setAuthor("周杰伦");  
        m1.setName("外婆");  
        m1.setTime("04:04");  
        list.add(m1);  
        Music m2 = new Music();  
        m2.setId(2);  
        m2.setAuthor("周杰伦");  
        m2.setName("半兽人");  
        m2.setTime("04:05");  
        list.add(m2);  
        Music m3 = new Music();  
        m3.setId(3);  
        m3.setAuthor("周杰伦");  
        m3.setName("乌克丽丽");  
        m3.setTime("02:55");  
        list.add(m3);  
        java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken>() {  
        }.getType();  //指定type
        String beanListToJson = gson.toJson(list,type);  //list转换成json字符串
        System.out.println("GSON-->"+beanListToJson);     
        try {    
             response.setCharacterEncoding("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;  
        }   
} 


好了,下面选择工程右键:run as->myeclipse server application:

 

\

注意,本项目的端口选择的是8888,yayun表示本机。

这时在浏览器地址栏输入:http://yayun:8888/Test2/getjson.action

出现如下 :

\

说明服务器端搭建成功。另外,本系统json解析用到了Gson的jar包,要自己导入哦,下载Gson引入到项目中,Android端也需要这个jar包。

移动端

移动端用eclipse实现

\

首先是JsonClientActivity:

package com.test.demo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.example.testandroid.R;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
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 {
	private Button update;
	private ListView listView;
	private String jsonResult;
	private Handler handler=new Handler(){
		public void handleMessage(android.os.Message msg) {
			jsonResult=(String) msg.obj;
		};
	};

	@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) {
				String urlStr = "http://192.168.0.103:8888/Test2/getjson.action";
				
				getJson(urlStr);
				String jString=jsonResult;
				List list = GsonUtil.getListFromJson(jString);
				System.out.println(list);
				if (list != null) {
					System.out.println(list);
					List> 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);
				}

				
			}
		});
	}

	private List> getAdapterData(List list) {
		List> data = new ArrayList>();
		for (int i = 0; i < list.size(); i++) {
			Map map = new HashMap();
			Music music = (Music) list.get(i);
			map.put("name", music.getName());
			map.put(&q



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-26Android Studio创建/打开项目时一直处于Building“project name”Gradle project info的解决办法,androidgradle
  • 2017-05-26Android搜索功能的案例,本地保存搜索历史记录
  • 2017-05-26充值,充值平台
  • 2017-05-26Android--控件属性汇总
  • 2017-05-26如何处理 android 方法总数超过 65536 . the number of method references in a .dex file exceed 64k,android.dex
  • 2017-05-26Android自定义控件(二),android自定义控件
  • 2017-05-228.3.6 Paint API之—— Xfermode与PorterDuff详解(三)
  • 2017-05-26在Android应用程序使用YouTube API来嵌入视频,
  • 2017-05-26Android GZIP压缩IO流,优化APP数据传输(一),androidapp
  • 2017-05-26android开发中遇到的问题汇总【九】

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • linux 破解版 confluence
    • Yarn上运行spark-1.6.0
    • Listview详解,listview
    • Android中的 Multiple dex files define 编译错误引发的思考
    • Android4.4访问外部存储,android4.4访问存储
    • Drawable资源的初步使用
    • BadgeView使用,jsbadgeview使用方法
    • android图文混排布局错乱
    • Java多线程常见问题,java多线程
    • Android打印机--小票打印格式及模板设置

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有