* @param message
* @return
*/
public static String generateAccessDenyResponse(String message)...{
return generateResponse(false, message, REASON_ACCESS_DENY, null);
}
/** *//**
* 返回处理失败的报文, 原因为业务限制
* @param message
* @return
*/
public static String generateBizConstraintResponse(String message)...{
return generateResponse(false, message, REASON_BIZ_CONSTRAINT, null);
}
/** *//**
* 返回处理失败的报文, 原因为系统异常
* @param message
* @return
*/
public static String generateExceptionResponse(String message)...{
return generateResponse(false, message, REASON_EXCEPTION, null);
}
private static String generateJsonObjectString(Map map)...{
JSONObject jObj=new JSONObject();
jObj.putAll(map);
return jObj.toString();
}
public static void main(String[] args) ...{
System.out.println(generateSuccessResponse());
System.out.println(generateSuccessResponse("保存成功"));
Map customerizedContent=new HashMap();
customerizedContent.put("newid", "101");
System.out.println(generateSuccessResponse("保存成功", customerizedContent));
System.out.println(generateUnlogonResponse("您尚未登陆"));
System.out.println(generateAccessDenyResponse("您没有权限访问"));
System.out.println(generateBizConstraintResponse("用户名不可重复"));
System.out.println(generateExceptionResponse("数据库异常,请稍后再试"));
}
}
运行main后,将打印如下几种相同格式的报文,代表响应的不同种情况:
{"result":true}
{"message":"保存成功","result":true}
{"extraContent":{"newid":"101"},"message":"保存成功","result":true}
{"reason":"unlogon","message":"您尚未登陆","result":false}
{"reason":"accessDeny","message":"您没有权限访问","result":false}
{"reason":"bizConstraint","message":"用户名不可重复","result":false}
{"reason":"error","message":"数据库异常,请稍后再试","result":false}
Result属性代表这次处理的结果,只有true代表成功,false代表失败。
Message属性代表输出到客户端的打印信息。
Reason熟悉是对处理结果的解释,一般的业务系统有的情况基本上是unlogon未登陆,accessDeny访问拒绝,bizConstraint业务限制, error系统错误或异常。
extraContent用于输出额外的信息,比如在处理成功后客户端需要新生成纪录的主键,这时可以通过这个节点输出。
至于客户端的解析,由于是json格式的数据,非常简单地就能获取到报文中的数据。客户端代码如下:
function submitForm(form)...{
var elemStr=Form.serialize(form);
alert(elemStr);
var url = "<c:url value="/multiActController.spr?action=jsonResponseSuccess"/>";
var mailAjax = new Ajax.Request(url,...{method: 'post',parameters:elemStr,
onComplete: function(response)...{
var responseText=response.responseText;
alert(responseText);
var jobj=responseText.parseJSON();
alert(jobj.result+","+jobj.message+","+jobj.extraContent.name+","+jobj.extraContent.address+","+jobj.extraContent.sex);
}
}
);
return false;
}
附:服务端需要引入jsonlib;客户端需引入json.js和prototype1.5。

