HttpServletRequest获取参数

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package cn.idea360.demo.modules.sign;

import com.alibaba.fastjson.JSONObject;
import org.springframework.http.HttpMethod;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.stream.Collectors;

/**
* @author 当我遇上你
* @公众号 当我遇上你
* @since 2020-08-30
*/
/**
* 接口参数提取
*/
public class RequestUtils {


/**
* 将URL请求参数转换成Map
* @author show
* @param request
*/
public static Map<String, String> getUrlParams(HttpServletRequest request) {

String param = "";
if (Objects.isNull(request.getQueryString())) {
return Collections.EMPTY_MAP;
}
try {
param = URLDecoder.decode(request.getQueryString(), "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Map<String, String> result = new HashMap<>(16);
String[] params = param.split("&");
for (String s : params) {
int index = s.indexOf("=");
result.put(s.substring(0, index), s.substring(index + 1));
}
return result;
}

public static Map<String, String> getFormParams(HttpServletRequest request) {
Map<String, String> paramMap = new HashMap<String, String>();
Map<String, String[]> requestMap = request.getParameterMap();
Iterator<Map.Entry<String, String[]>> it = requestMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String[]> entry = it.next();
if(entry.getValue().length==1){
paramMap.put(entry.getKey(), entry.getValue()[0]);
} else {
String[] values = entry.getValue();
String value = "";
for(int i=0; i<values.length; i++){
value = values[i] + ",";
}
value = value.substring(0, value.length()-1);
paramMap.put(entry.getKey(), value);
}
}
return paramMap;

}

/**
* 获取body中参数
* @param request
* @return
* @throws IOException
*/
public static Map<String, String> getBodyParams (HttpServletRequest request) throws IOException {
String body = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
//转化成json对象
Map<String, String> map = new Gson().fromJson(body, new TypeToken<HashMap<String, String>>() {}.getType());
return map;
}


/**
* 获取url参数和body参数
* @param request
* @return
* @throws IOException
*/
public static Map<String, String> getAllParams(HttpServletRequest request) throws IOException {

SortedMap<String, String> sortedParams = new TreeMap<>();

// 获取url参数
Map<String, String> urlParams = getUrlParams(request);
for (Map.Entry entry : urlParams.entrySet()) {
sortedParams.put((String) entry.getKey(), (String) entry.getValue());
}

// 获取body参数
if (!HttpMethod.GET.name().equals(request.getMethod())) {
Map<String, String> bodyParams = getBodyParams(request);
if (null != bodyParams) {
for (Map.Entry entry : bodyParams.entrySet()) {
sortedParams.put((String) entry.getKey(), (String) entry.getValue());
}
}
}

// 获取表单参数
Map<String, String> formParams = getFormParams(request);
for (Map.Entry entry : formParams.entrySet()) {
sortedParams.put((String) entry.getKey(), (String) entry.getValue());
}

return sortedParams;
}

public static String obtainParameter(HttpServletRequest request, String parameter) {
String result = request.getParameter(parameter);
return result == null ? "" : result;
}
}

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package cn.idea360.demo.modules.sign;

import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Map;

/**
* @author 当我遇上你
* @公众号 当我遇上你
* @since 2020-08-30
*/

@RestController
@RequestMapping("/sign")
public class SignController {

/**
* http://localhost:7777/sign/getParamsMap?name=admin&password=123&sign=fP+QOzj05RVbVj54U9kA2T20eWQ=
* @param request
* @return {password=123, name=admin, sign=fP QOzj05RVbVj54U9kA2T20eWQ=}
*/
@GetMapping("/getParamsMap")
public Object getParamsMap(HttpServletRequest request) throws IOException {

Map<String, String> urlParams = RequestUtils.getUrlParams(request);

System.out.println(urlParams);

return urlParams;
}

/**
* http://localhost:7777/sign/postBodyMap
* @return {password=123, name=admin, sign=fP+QOzj05RVbVj54U9kA2T20eWQ=}
*/
@Sign
@PostMapping("/postBodyMap")
public Object postBodyMap(HttpServletRequest request) throws IOException {

Map<String, String> bodyParams = RequestUtils.getBodyParams(request);

System.out.println(bodyParams);

return bodyParams;
}


}

最后

本文到此结束,感谢阅读。如果您觉得不错,请关注公众号【当我遇上你】,您的支持是我写作的最大动力。