你的位置:首页 > Java教程

[Java教程]SSH服务器与Android通信


很多应用要求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.

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

在struts.

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

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

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




贵州旅游路线推荐贵州自驾游攻略贵州旅游线路大全什么时候去贵州旅游最好贵州跟团旅游报价多少桂林神龙水世界度假怎么样?神龙水世界景区有什么好玩的? 桂林神龙水世界两日游攻略?神龙水世界两日游费用? 旅游大事件:国人赴日赏樱,促日形成“樱花经济”[二] 旅游大事件:国人赴日本赏樱,促成“樱花经济”[二] 白水寨紫荆花开了吗?增城白水寨景区紫荆花开花时间? 2015三八妇女节东莞龙凤山庄门票多少?东莞龙凤山庄门票3.8女士免费吗? 2015广东油菜花几时去最好看?3月广东油菜花开了吗? 香市动物园游玩攻略?东莞香市动物园有哪些动物? 郭沫若与鼋头渚的故事 秀色可餐游康定 美食难挡味觉享受 佛光普照甘孜城 庙宇文化引人入胜 周庄美食有什么? 去泰国需要提前换多少泰铢? 机场去曼谷宜必思娜娜酒店怎么走?有多远? 可以直接从皮皮岛前往皇帝岛吗? 从泰国曼谷机场到四面佛怎么去,要多久时间? IDT71V3558XS133PFI8 Datasheet IDT71V3558XS133PFI8 Datasheet IDT72V3650L15PFI Datasheet IDT72V3650L15PFI Datasheet IDT71V3559S75BG Datasheet IDT71V3559S75BG Datasheet 长春到港澳4日游 长春到港澳4日游 长春到港澳4日游 牡丹江到港澳3日游 牡丹江到港澳3日游 牡丹江到港澳3日游 黑龙江到香港两日旅游 黑龙江到香港两日旅游 黑龙江到香港两日旅游