servlet接收http接口入参两种方式

在做开发时,有时可能因为某种原因,需要使目标系统对外暴露接口供第三方系统调用,这是为方便就可能暴露一个servlet,其接受参数只能从j2ee内置对象HttpServletRequest取参数,不同方式提交参数,取参数方式也不一样

方式一:

传json字符串

例如第三方ajax请求如下:

var str = {"title":"上线商品数","number":"45671","unit":"个"};
function getNum(){
	        $.ajax({
		type : "POST",
		url : "http://localhost:8080/updateBroadcastService",
		data : JSON.stringify(str),
		contentType : "application/json",
		dataType : "json",
		 success: function (data){
			 console.log(data.message)
		}
		});
		}

本系统接受参数:

//1.从http请求中获取json参数
InputStream is= null;
String contentStr="";
is = request.getInputStream();
contentStr= IOUtils.toString(is, "utf-8");
Map maps = (Map)JSON.parse(contentStr);

这样接受之后就会将传过来的json字符串转化成map,再从mao中获取参数处理业务,此为方式一

方式二:

传键值对参数

function getNum(){
		$.ajax({
		type : "POST",
		url : "http://localhost:8080/updateBroadcastService",
		data : {"title":"上线商品数","number":"45671","unit":"个"},
		contentType : "application/x-www-form-urlencoded",
		dataType : "json",
		success: function (data){
			console.log(data.message)
		 }
		});
		}

本系统接受参数:

Map maps = new HashMap();
Enumeration paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();
String[] paramValues = request.getParameterValues(paramName);
if (paramValues.length == 1) {
String paramValue = paramValues[0];
if (paramValue.length() != 0) {
maps.put(paramName, paramValue);
		}
	}
}

此种方式接受参数之后也会将ajax传递的键值对参数转化成map,再去map中参数处理业务,此为方法2

ajax提交post请求时注意事项:

1、ajax中,contentType: "application/json"是必须的。dataType: "json"是表示返回值是json格式,依据返回值类型而定。
2、data中,将json对象序列化。使用JSON.stringfy()函数或者双引号形式的字符串。
3、调试的一个技巧,有时候json变量和实体类相对复杂时提交老是报415或者400的错误又找不到原因,可以将Action中的实体类换成JSONObject 看看能不能接收到参数,@RequestBody JSONObject requestJso,接收后在JSON系列化到实体类。有次就是因为json变量向实体类转换时发生字符向数字转换的错误。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值