POST获取参数。【POST】

请求后台controller的时候经常需要传递参数过来。当请求方式为GET 的时候就可以很容易的获取到参数,通过request对象即可。


//参数名称为departmentId
int departmentId=request.getParameter("departmentId");

当使用 GET 传输的时候就可以采用上述的方式获取,但是GET传输是将参数直接拼接在URL后面,通过地址栏传输,一些敏感的参数会直接暴漏同时GET传输对于参数的长度也有所限制,所以很多时候需要我们通过POST传输,而当利用上面的方法获取POST传输的参数就会发现我们获取到的都是null;所以,分享一下POST获取参数的方式。


可以通过HTTP协议将参数转换为JSONObject,然后获取POST传递的参数。


public class HTTPUtil {
	/*
	 *将post请求的json字符串格式的参数转为JSONObject 
	 */
	public static JSONObject httpProcess(HttpServletRequest request,HttpServletResponse response) throws IOException, JSONException{
		StringBuffer sb = new StringBuffer() ; 
		InputStream is = request.getInputStream(); 
		BufferedReader br = new BufferedReader(new InputStreamReader(is,"utf-8")); 
		String s = "" ; 
		while((s=br.readLine())!=null){ 
			sb.append(s) ; 
		} 
		if(sb.toString().length()<=0){
			return null;
		}else {
			return new JSONObject(sb.toString());
		}
	}
然后在获取参数的时候就可以直接调用该方法获取:

JSONObject js=HTTPUtil.httpProcess(request, response);
if(js==null){
	out.print("no paramters");
}
String departmentId=js.optString("departmentId");
String telphone=js.optString("telphone");

这样就可以解觉POST传输参数request.getParameter()无法获取的问题了。

--------------------------------------------------------------------------------------------------------------------------------------------------------

如果使用request对象获取post参数,最近新发现了一个简单的方式,即:

在使用ajax请求接口时,或者使用psoter或postman测试接口的时候,只需要将请求头里的content-type设置为application/x-www-form-urlencoded,request对象中就会有值,这样无论是通过request.getParameter还是通过@RequestParam都可以获取到post传递过来的值。


你可能感兴趣的:(java开发)