我個人開發常用的如下所示:
之是以像下面這樣下,一是前台Ajax,二是為安卓提供接口資料
現在常用的是傳回JSON資料,XML的時代一去不複返
JSON相對于XML要輕量級的多
對JSON不是十分熟悉的可參考此網站:http://www.w3school.com.cn/json/index.asp
對Ajax不是十分熟悉的可參考此網站:http://www.w3school.com.cn/ajax/index.asp
下面例子環境為:JDK8+tomcat7+MAVEN+WINDOWS環境
架構環境為:Spring+Mybatis+SpringMVC
第一種方式:
@RequestMapping(value = "/getUserInfo2", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
@ResponseBody
public String getUserInfo(String User_No, Model model) {
User user = userService.findUserInfo(User_No);
if (user != null) {
Map<String, User> map = new HashMap<String, User>();
map.put("user", user);
model.addAttribute("user", user);
return JSON.toJSONString(map);
} else {
String msg = "{\"returnMsg\":\"不存在\"}";
Map<String, Object> returnMsg = JSON.parseObject(msg);
return JSON.toJSONString(returnMsg);
}
}
第二種方式:
@RequestMapping(value="getHeadHotelIdInfo",method=RequestMethod.POST,produces="application/json;charset=utf-8")
@ResponseBody
public String getHeadHotelIdInfo(HttpServletRequest request) {
String ids = request.getParameter("id");
Integer id = new Integer(ids);
Map<String,Object> map = new HashMap<String,Object>();
HeadHotel hh = headHotelService.selectById(id);
map.put("hh", hh);
return JSONObject.toJSONString(map);
}
第三種方式:
@RequestMapping(value="/deleteHeadHotelInfo", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
@ResponseBody
public Object deleteHeadHotelInfo(HttpServletRequest request) {
JSONObject json = new JSONObject();
String ids = request.getParameter("id");
logger.info(ids);
Integer id = new Integer(ids);
HeadHotel hh = headHotelService.selectById(id);
try {
int lines = hotelChainService.TreeSelectHotelChainSize(hh.getNo());
if(lines==0) {
headHotelService.deleteHeadHotelInfo(id);
json.put("returnCode", "000000");
json.put("returnMsg", "删除集團公司成功");
logger.info("删除成功");
}else {
json.put("returnCode", "000000");
json.put("returnMsg", "存在子酒店不能删除");
logger.info("删除失敗");
}
} catch (Exception e) {
e.printStackTrace();
json.put("returnCode", "111111");
json.put("returnMsg", "删除集團公司失敗");
logger.error("删除失敗");
}
return json;
}
第四種方式:
@RequestMapping(value="removePermission",method=RequestMethod.POST,produces="application/json;charset=utf-8")
@ResponseBody
public Object removePermission(@RequestBody QueryVo qv,HttpServletRequest request, Model model) {
JSONObject json = new JSONObject();
Integer id[] = qv.getId();
int size=java.lang.reflect.Array.getLength(qv.getId());
logger.info("ID數量:"+size);
try {
for (int i = 0; i < id.length; i++) {
RoleResource rr = new RoleResource();
rr.setId(id[i]);
logger.info("ID:"+id[i]);
List<RoleResource> rs = new ArrayList<RoleResource>();
rs.add(rr);
roleResourceService.removeRoleResourceStatus(rs);
}
json.put("returnCode", "000000");
json.put("returnMsg", "權限修改成功");
logger.info("權限修改成功");
} catch (Exception e) {
json.put("returnCode", "000000");
json.put("returnMsg", "權限修改失敗");
logger.error("權限修改失敗");
}
return json;
}
結合QueryVO:
package cn.pms.vo;
import java.util.List;
import cn.pms.model.AccountCoupon;
/**
* 多參數傳遞定義QueryVo
* @author youcong
*
*/
public class QueryVo{
private List<AccountCoupon> acs;
String[] memberId;
private String couponId;
/*
* 角色編号
*/
String[] roleNo;
/**
* 資源編号
*/
String[] resourceNo;
/**
* 角色-資源 ID
* @return
*/
Integer id[];
public Integer[] getId() {
return id;
}
public void setId(Integer[] id) {
this.id = id;
}
public String[] getRoleNo() {
return roleNo;
}
public void setRoleNo(String[] roleNo) {
this.roleNo = roleNo;
}
public String[] getResourceNo() {
return resourceNo;
}
public void setResourceNo(String[] resourceNo) {
this.resourceNo = resourceNo;
}
public String[] getMemberId() {
return memberId;
}
public void setMemberId(String[] memberId) {
this.memberId = memberId;
}
public String getCouponId() {
return couponId;
}
public void setCouponId(String couponId) {
this.couponId = couponId;
}
public List<AccountCoupon> getAcs() {
return acs;
}
public void setAcs(List<AccountCoupon> acs) {
this.acs = acs;
}
}
第五種方式:
@RequestMapping(value = "/updateVersion", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
@ResponseBody
public String updateHeadHotel(@RequestBody AppVersion appVersion) {
Map<String, Object> map = new HashMap<String, Object>();
logger.info(appVersion);
try {
logger.info("APP名字:"+appVersion.getAppName());
// 調用資料庫修改操作
appVersion.setUpdateTime(Tools.getCurrentDate());
appVersion.setServerFlag("1");
appVersionService.updateById(appVersion);
map.put("returnCode", "000000");
map.put("message", "成功更新版本資訊");
}catch (Exception e) {
// TODO: handle exception
map.put("returnCode", "111111");
map.put("message", "更新版本資訊失敗");
}
return JSONObject.toJSONString(map);
}
第六種方式:
@RequestMapping(value="/delectHotel", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
@ResponseBody
public Map<Object,Object> delectHotel(HttpServletRequest request) {
Map<Object,Object> map = new HashMap<Object,Object>();
String id = request.getParameter("id");
logger.info("delectHotel ===== id : " + id);
//System.out.println("delectHotel ===== id : " + id);
String hotelNo = request.getParameter("hotelNo");
logger.info("delectHotel ===== hotelNo : " + hotelNo);
//System.out.println("delectHotel ===== hotelNo : " + hotelNo);
try {
List<Room> room_list = roomService.selectRoomByHotelNo(hotelNo.trim());
//System.out.println("delectHotel ===== room_list : " + room_list);
//如果集合不為空,說明該酒店關聯有房間, 不允許删除
if(room_list != null) {
map.put("returnMsg", "該酒店關聯有房間, 不允許删除!");
map.put("returnCode", "121212");
return map;
}
hotelService.deleteHotelById(Integer.parseInt(id.trim()));
//成功
map.put("returnCode", "000000");
map.put("returnMsg", "success");
} catch (Exception e) {
e.printStackTrace();
//失敗
map.put("returnCode", "111111");
map.put("returnMsg", "失敗");
}
logger.info("map = " + map);
return map;
}
第七種方式:
@RequestMapping(value="/getServiceId", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
@ResponseBody
public Object getServiceId(HttpServletRequest request) {
Map<Object,Object> map = new HashMap<Object,Object>();
JSONObject json = new JSONObject();
logger.info("省 ================ " + request.getParameter("province"));
logger.info("市 ================ " + request.getParameter("cityname"));
String city = request.getParameter("province");
String address = request.getParameter("cityname");
map.put("city", city);
map.put("address", address);
try {
//調用資料庫查詢操作
List<YuntuBase> yun_list = yuntuBaseService.selectYuntuBase(map);
logger.info("yun_list.size() : " + yun_list.size());
//成功
json.put("yun_list", yun_list);
json.put("returnCode", "000000");
json.put("returnMsg", "success");
return json;
} catch (Exception e) {
e.printStackTrace();
//插入資料庫失敗,傳回失敗碼
json.put("returnCode", "111111");
json.put("returnMsg", "儲存失敗");
return json;
}
}
第八種方式:
@RequestMapping(value="/selMessageById", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
@ResponseBody
public Object selMessageById(HttpServletRequest request) {
AJAXResult result = new AJAXResult();
String id = request.getParameter("id");
logger.info("id = " + id);
try {
Message message = messageService.selMessageById(Integer.parseInt(id.trim()));
result.setData(message);
result.setSuccess(true);
result.setReturnCode("000000");
result.setReturnMsg("success");
} catch (Exception e) {
e.printStackTrace();
//查詢資料庫失敗,傳回失敗碼
result.setSuccess(false);
result.setReturnCode("111111");
result.setReturnMsg("系統異常");
logger.error("result = " + result);
return result;
}
return result;
}
AJAXResul代碼如下:
package cn.pms.model;
import java.util.Map;
public class AJAXResult {
private boolean success;
//傳回碼
private String returnCode;
//傳回資訊
private String returnMsg;
//傳回資料
private Object data;
//資料
private Object datas;
private Map<Object, Object> map;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getReturnCode() {
return returnCode;
}
public void setReturnCode(String returnCode) {
this.returnCode = returnCode;
}
public String getReturnMsg() {
return returnMsg;
}
public void setReturnMsg(String returnMsg) {
this.returnMsg = returnMsg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Object getDatas() {
return datas;
}
public void setDatas(Object datas) {
this.datas = datas;
}
public Map<Object, Object> getMap() {
return map;
}
public void setMap(Map<Object, Object> map) {
this.map = map;
}
}
常用AJAX請求背景資料的幾種方式:
第一種:
var id = getQueryParam("id");
var zt = getQueryParam("zt");
var hotelNo = getQueryParam("hotelNo");
//alert("id = " + id + "zt = " + zt);
$.post("/ssm_pms/selectRoomById", { id : id }, function (result){
if(result.returnCode == "000000" && result.returnMsg == "success"){
$("#RoomNo").val(result.room.roomNo);
$("#Status").val(result.room.roomStatus);
}else{
alert("connection error");
}
});
第二種:
var data = {
floor : name,
hotel_no : "88"
}
$.ajax({
url : "/ssm_pms/addFloor",
type : "POST",
contentType: 'application/json;charset=utf-8',
async : false,
data : JSON.stringify(data),
dataType : 'json',
success : function(result){
if(result.returnCode == "000000" && result.returnMsg == "success"){
//window.location.href = "";
closeWin();
alert("添加成功");
}else if(result.returnCode == "101011" && result.returnMsg == "重複,請重新輸入"){
alert("重複,請重新輸入");
}else{
//showTips(3, 'Name', data.State.Errkey);
alert("添加失敗");
}
}
});
Ajax的get不常用,通常$.ajax夠用了,有的時候常用的也就$.post,不過目前用的最多的還是$.ajax