************************************************************服务器端代码**************************************************************************
Spring Web MVC(Servlet) 具体细节就不说了,比较不一样的地方,下面会注明!
1. web.xml 的内容如下:
2. foodcenter-servlet.xml 的内容如下:
3. 子控制器FindFoodListController.java
package com.liuxi.foodcenter.controller; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import com.liuxi.bean.Food; import com.liuxi.food.service.IFoodService; @Controller public class FindFoodListController { @Autowired @Qualifier("foodService") private IFoodService foodService; /** 根据餐菜的类别返回 该类别下的所有菜*/ @RequestMapping("/findFoodList") public ModelAndView queryFoodList(@RequestParam("typeId") int typeId){ List
4. FoodServiceImpl.java
package com.liuxi.food.service; import java.util.ArrayList; import java.util.List; import com.liuxi.bean.Food; public class FoodServiceImpl implements IFoodService{ @Override public List
5.IFoodService.java
package com.liuxi.food.service; import java.util.List; import com.liuxi.bean.Food; public interface IFoodService { List
6.Food.java
package com.liuxi.bean; public class Food { private int id; // ID private String name; // 菜名 private double price; // 价格 private String notes; // 菜的简要介绍 private int foodTypeId; // 菜所属的类别 private double kouWeiScore; // 口味的分值 private double hotLevel; // 星级别 public Food(int id, int foodTypeId, String name, double price, String notes, double kouWeiScore, double hotLevel) { this.id = id; this.name = name; this.price = price; this.notes = notes; this.foodTypeId = foodTypeId; this.kouWeiScore = kouWeiScore; this.hotLevel = hotLevel; } public Food() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getNotes() { return notes; } public void setNotes(String notes) { this.notes = notes; } public int getFoodTypeId() { return foodTypeId; } public void setFoodTypeId(int foodTypeId) { this.foodTypeId = foodTypeId; } public double getKouWeiScore() { return kouWeiScore; } public void setKouWeiScore(double kouWeiScore) { this.kouWeiScore = kouWeiScore; } public double getHotLevel() { return hotLevel; } public void setHotLevel(double hotLevel) { this.hotLevel = hotLevel; } public String toString() { return id + "--" + name + "--" + price + "--" + notes + "--" + foodTypeId + "--" + kouWeiScore + "--" + hotLevel; } }
7.Spring Web MVC 中 将ModelAndView 中的数据自动转换成json ,靠的是jackjson 中 连个jar 包 (这个下载大本营里有下,花了我2积分哦)
jackson-core-asl-1.4.2.jar
jackson-mapper-asl-1.4.2.jar
*************************************以上是服务器端代码,已全部贴完!**********************************************
访问链接是: http://192.168.1.104:8088/FCAS/findFoodList.json?typeId=1
***************************************************************************Android 客户端 访问部分************************************************************
下面进入 Android 客户端访问部分(这里暂不贴 界面,用android 的单元测试 来 测试 服务器返回的json 数据是什么样的
8. GetFoodListTest.java
package com.liuxi.takeorder.test; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import android.test.AndroidTestCase; import android.util.Log; public class GetFoodListTest extends AndroidTestCase { private static final String TAG="GetFoodListTest"; public void testFindFoodList() { String uri="http://192.168.1.104:8088/FCAS/findFoodList.json?typeId=1"; try{ HttpClient httpClient=new DefaultHttpClient(); //HttpPost 实现 HttpUriRequest 接口,HttpUriRequest接口 继承 HttpRequest HttpPost httpPostReq=new HttpPost(uri); ArrayList
9. 激动人心的时刻-----> 结果是啥?
日志记录为:
07-19 16:12:53.282: INFO/GetFoodListTest(1287): {"TYPE_ID":1,"FOOD_LIST":[{"name":"鱼香肉丝","id":1,"price":12.0,"notes":"好吃的不得了-鱼香肉丝","foodTypeId":1,"kouWeiScore":4.5,"hotLevel":5.0},{"name":"农家小炒肉","id":2,"price":15.0,"notes":"好吃的不得了-农家小炒肉","foodTypeId":1,"kouWeiScore":3.7,"hotLevel":4.3},{"name":"韭菜炒蛋","id":3,"price":10.0,"notes":"好吃的不得了-韭菜炒蛋","foodTypeId":1,"kouWeiScore":2.6,"hotLevel":3.0},{"name":"回锅肉","id":4,"price":13.0,"notes":"好吃的不得了-回锅肉","foodTypeId":1,"kouWeiScore":3.1,"hotLevel":3.8},{"name":"宫保鸡丁","id":5,"price":14.0,"notes":"好吃的不得了-宫保鸡丁","foodTypeId":1,"kouWeiScore":3.7,"hotLevel":5.0},{"name":"苦瓜炒蛋","id":6,"price":9.0,"notes":"好吃的不得了-宫保鸡丁","foodTypeId":1,"kouWeiScore":4.9,"hotLevel":4.7},{"name":"莴笋肉片","id":7,"price":10.0,"notes":"好吃的不得了-莴笋肉片","foodTypeId":1,"kouWeiScore":2.6,"hotLevel":3.9}]}
我把上面{} 里的东西 放到一个foodlist.json 文件中,格式化后的内容如下:
{ "TYPE_ID" : 1, "FOOD_LIST" : [{ "name" : "鱼香肉丝", "id" : 1, "price" : 12.0, "notes" : "好吃的不得了-鱼香肉丝", "foodTypeId" : 1, "kouWeiScore" : 4.5, "hotLevel" : 5.0 }, { "name" : "农家小炒肉", "id" : 2, "price" : 15.0, "notes" : "好吃的不得了-农家小炒肉", "foodTypeId" : 1, "kouWeiScore" : 3.7, "hotLevel" : 4.3 }, { "name" : "韭菜炒蛋", "id" : 3, "price" : 10.0, "notes" : "好吃的不得了-韭菜炒蛋", "foodTypeId" : 1, "kouWeiScore" : 2.6, "hotLevel" : 3.0 }, { "name" : "回锅肉", "id" : 4, "price" : 13.0, "notes" : "好吃的不得了-回锅肉", "foodTypeId" : 1, "kouWeiScore" : 3.1, "hotLevel" : 3.8 }, { "name" : "宫保鸡丁", "id" : 5, "price" : 14.0, "notes" : "好吃的不得了-宫保鸡丁", "foodTypeId" : 1, "kouWeiScore" : 3.7, "hotLevel" : 5.0 }, { "name" : "苦瓜炒蛋", "id" : 6, "price" : 9.0, "notes" : "好吃的不得了-宫保鸡丁", "foodTypeId" : 1, "kouWeiScore" : 4.9, "hotLevel" : 4.7 }, { "name" : "莴笋肉片", "id" : 7, "price" : 10.0, "notes" : "好吃的不得了-莴笋肉片", "foodTypeId" : 1, "kouWeiScore" : 2.6, "hotLevel" : 3.9 }] }
10. OK! 返回数据正确。
************************************************Spring 是用ObjectMapper 将 数据转换成json 数据的*****************************
下面自己写了个转换的例子:
ObjectMapperTest.java
package com.bean.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.codehaus.jackson.map.ObjectMapper; public class ObjectMapperTest { /** * @param args */ public static void main(String[] args) throws Exception { ObjectMapper mapper=new ObjectMapper(); Map
上述程序输出的是:
{"foodlist":[{"id":1,"kouWeiScore":4.5,"price":12.0,"hotLevel":5.0,"name":"鱼香肉丝","notes":"好吃啊,真的!"}]}
format 下:
{
"foodlist" : [{
"id" : 1,
"kouWeiScore" : 4.5,
"price" : 12.0,
"hotLevel" : 5.0,
"name" : "鱼香肉丝",
"notes" : "好吃啊,真的!"
}]
}
好吧,就到这里了。基本架子搭好,接着,就用这个架子来 实现 Android 客户端+Spring MVC 去做后面的项目。继续挖矿。。。。