很多应用要求SSH服务器不仅和PC通信,还要和Android移动设备通信,这时就需要用到JSON了。其基本原理是服务器将数据转换成JSON格式,发送给Android客户端,客户端再将JSON格式的数据解析出来,从而实现了SSH服务器和Android客户端之间的通信。

(1)新建一个User library,包含JSON所需要的jar:

注意其中的gson除了加入Build path以外,还要复制到WEB-INF/lib/,否则会出错。

(2)新建一个ResUtil文件,使用GSON将数据转换成JSON字符串:

代码如下:

package com.school.tool;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse; import com.google.gson.Gson; public class ResUtil { public static void toJson(HttpServletResponse response, Object data)
throws IOException { Gson gson = new Gson();
String result = gson.toJson(data);
response.setContentType("text/json; charset=utf-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.print(result);
out.flush();
out.close(); } }

(3)新建AClasQueryAction文件,处理Android客户端的请求:

代码如下:

package com.school.action;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.apache.struts2.ServletActionContext; import net.sf.json.JSONArray; import com.school.entity.Clas;
import com.school.service.ClasService;
import com.school.tool.ResUtil;
import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial")
public class AClasQueryAction extends ActionSupport { private ClasService clasService;
public void setClasService(ClasService clasService) {
this.clasService = clasService;
} private Clas clas;
// 封装并返回所有课程信息
public String execute(){
Map<String, Object> map = new HashMap<String, Object>();
List<Clas> claslist = clasService.findAll();
try{
map.put("Classes", claslist);
ResUtil.toJson(ServletActionContext.getResponse(), map);
}catch (IOException e){
e.printStackTrace();
}
return null;
} }

该文件获得所有的课程信息,封装在Map里面,并返回给客户端。

(4)修改applicationContext.xml和struts.xml文件,在applicationContext.xml中加入以下语句:

    <bean id="aClasQueryAction" class="com.school.action.AClasQueryAction">
<property name="clasService" ref="clasService"></property>
</bean>

在struts.xml文件中加入以下语句:

        <action name="aclasquery" class="aClasQueryAction">
</action>

(5)重新启动服务器,在浏览器中访问http://localhost:8080/School/aclasquery,结果如下:

可见服务器正确的以JSON格式返回了所有课程的数据。如果使用Android客户端访问该URL,也可以获得以上JSON格式的数据,然后再解析出来就可以了。

SSH服务器与Android通信(1)--服务器端发送数据的更多相关文章

  1. SSH服务器与Android通信(3)--Android客户端发送数据

    Android客户端向SSH服务器发送数据主要有三种情况:通过客户端删除数据.添加数据和修改数据. 1.删除数据 先看看jsp文件里面是怎样删除数据的: <td align="cent ...

  2. SSH服务器与Android通信(2)--Android客户端接收数据

    基本原理是Android客户端通过HttpClient向服务器发出请求,服务器向Android客户端返回JSON字符串,Android客户端解析JSON字符串获得数据. 1. 新建一个Android项 ...

  3. Android客户端向服务器端发送数据的流程(1)

    原理: android客户端通过使用org.apache.http.impl.client.DefaultHttpClient类来发送数据; 方法介绍: HttpClient是android中提供的一 ...

  4. Android学习笔记--通过wifi向服务器端发送数据

    (转自http://www.cnblogs.com/zhxiang/archive/2011/07/21/2112825.html) 客户端程序: 1 2 3 4 5 6 7 8 9 10 11 12 ...

  5. C#串口通信—向串口发送数据,同步接收返回数据

    最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接 ...

  6. Android,使用Json发送数据中,使用的Java转义字符 KanKan原创

    kankan原创 与php后台发送数据的时候.要求用到这样的格式. private void sendJson(){ //初始化自己定义的handler CashHandler handler = n ...

  7. 《java入门第一季》之tcp协议下的编程实现键盘录入数据不断地往服务器端发送数据案例

    这里要封装通道流,封装键盘录入数据流. 同样地,还是两台电脑.一个客户端,一个服务器. 客户端代码: import java.io.BufferedReader; import java.io.Buf ...

  8. Android - 向服务器发送数据(POST) - HTTPClient.

    该篇文章主要说明使用Apache提供的HTTPClient,通过post方式,向服务器发送数据.由于有些东西在 Android - 向服务器发送数据(GET)中提到过,就不再重复. 一,Android ...

  9. Android - 向服务器发送数据(GET).

    在此,使用HTTP协议,通过GET请求,向服务器发送请求,这种方式适合于数据量小,数据安全性要求不高的情况下. 一,服务器端,使用Servlet. 在服务器端,定义一个HttpServlet的子类,以 ...

随机推荐

  1. node.js小结 2

    下载node安装npm什么的就不说了 入门总结 http://www.cnblogs.com/Darren_code/archive/2011/10/31/nodejs.html 进入node_HOM ...

  2. iOS xcode6 添加.pch文件

    1, 新建文件 (command+N)选择other组,再次选择pch,输入文件名保存. eg: 创建的工程为Demo; 创建文件名为DemoPrefixHeader.pch 2,到工程里面的buil ...

  3. String的length()和Array的length

    String是个final修饰的最终类,不能被继承,String中属性都设置为private,方法为public,并不提供set方法,想要获得字符串的长度必须调用length()方法这个长度是确定的, ...

  4. Ext2.x学习笔记

    Ext2.X学习笔记一 一.ExtJS简介  1.1 什么是Ext JS? · Ext JS是一个Ajax框架,可以用来开发富客户端的Ajax应用,是一个用javascript写的,主要用于创建前端用 ...

  5. vsCode 添加浏览器调试和js调试的方法

    1.直接按F5可以调试的方法或者点击运行按钮(可以直接运行html文件或者js文件) 在launch.json文件中的配置如下: {     "version": "0. ...

  6. 通过shape-outside来设置文字环绕时的形状

    现在真是越来越注重用户体验了,而"shape-outside"就是其中一个能让网页排版更友好的一个属性. 默认文字是根据图片的边进行的. 但现在我们完全有能力去改变这一行为,下面是 ...

  7. Open Cascade DataExchange IGES

    Open Cascade DataExchange IGES eryar@163.com 摘要Abstract:本文结合OpenCascade和Initial Graphics Exchange Sp ...

  8. 深入理解PHP内核(六)哈希表以及PHP的哈希表实现

    原文链接:http://www.orlion.ga/241/ 一.哈希表(HashTable) 大部分动态语言的实现中都使用了哈希表,哈希表是一种通过哈希函数,将特定的键映射到特定值得一种数据 结构, ...

  9. jxl读取excel实现导入excel写入数据库

    @RequestMapping(params = "method=import", method = RequestMethod.POST) @ResponseBody publi ...

  10. Struts2整合Hibernate3实现用户登录功能

    所用技术:struts2 ,hibernate,jsp,mysql 本DEMO仅仅实现用户登录功能,采用MVC思想,自己也觉得相对是比较简单,比较容易理解数据流向的一个例子,通过整合这个过程,能够清晰 ...