很多应用要求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. Git Day03,GitHub 1st

    1st, SSH key: Add a pic @ Sep 18 2016 20:26 To note the configuration process on Linux: 2nd,github网站 ...

  2. IT传统组织结构及新型扁平化组织

    如今互联网企业正凶猛的改变人们衣食住行的方方面面,衣->淘宝,蘑菇街;食->大众点评,口碑;住->去哪,途牛:行->12306, 多次听到互联网的同行介绍他们就是要“快”,快速 ...

  3. IOS Socket 01-网络协议基础知识

    1. 网络参考模型 OSI参考模型                                          TCP/IP参考模型 2. 七层简述 1)物理层:主要定义物理设备标准,如网线的接 ...

  4. 搭建hexo博客

    hexo 是一款快速.简单.并且强大的博客博客模板框架 - 基于nodejs . 特点 基于nodejs 使用Markdown书写文章 无需数据库 可以使用GitHub Pages发布 要用到的模块 ...

  5. C#并行编程-Task

    菜鸟学习并行编程,参考<C#并行编程高级教程.PDF>,如有错误,欢迎指正. 目录 C#并行编程-相关概念 C#并行编程-Parallel C#并行编程-Task C#并行编程-并发集合 ...

  6. 每天一个linux命令(24):Linux文件类型与扩展名

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...

  7. javascript设计模式与开发实践阅读笔记(5)——策略模式

    策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换. 我的理解就是把各种方法封装成函数,同时存在一个可以调用这些方法的公共函数.这样做的好处是可以消化掉内部的分支判断,使代码效率 ...

  8. 探讨js字符串数组拼接的性能问题

    这篇文章主要介绍了有关js对字符串数组进行拼接的性能问题,字符串连接一直是js中性能最低的操作之一,应该如何解决呢?请参看本文的介绍 我们知道,在js中,字符串连接是性能最低的操作之一. 例如: 复制 ...

  9. mongodb 关系、引用、覆盖索引查询

    一.关系 MongoDB 的关系表示多个文档之间在逻辑上的相互联系.文档间可以通过嵌入和引用来建立联系.MongoDB 中的关系可以是:1对1,1对多,多对1,多对多. 一个用户可以用多个地址,这是典 ...

  10. URL中的特殊字符

    原网址:http://pichcar.iteye.com/blog/676292 URL中的特殊字符 有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.编 ...