1 获取头部信息
- 类:HttpServletRequest
描述:获取请求头信息.
序号 | 方法 | 描述 |
---|
1 | getHeaderNames | 获取请求头包含的所有键名,返回Enumeration |
2 | getHeader | 获取键名对应的值 |
3 | getRequestURL | 获取客户端请求的地址 |
4 | getRequestURI | 获取客户端请求的资源定位符 |
5 | getRemoteAddr | 获取客户端IP |
6 | getRemoteHost | 获取客户端主机名 |
7 | getRemotePort | 获取客户端使用的端口 |
8 | getLocalAddr | 获取服务端IP |
9 | getLocalName | 获取服务端主机名 |
10 | getQueryString | 获取请求行中的参数 |
package com.sb.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RestController
@RequestMapping("/api")
public class PeopleInfosController{
@RequestMapping(value="/get-headers/infos", method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> getHeaderInfos(HttpServletRequest req){
Map<String, Object> headerInfos = new HashMap<String, Object>();
Enumeration<String> headerNames = req.getHeaderNames();
while(headerNames.hasMoreElements()){
String nextElement = headerNames.nextElement();
headerInfos.put(nextElement, req.getHeader(nextElement));
System.out.format(nextElement+":"+req.getHeader(nextElement)+"\n");
}
System.out.format("header infos: "+headerInfos+"\n");
System.out.format("============\n");
headerInfos.put("URL", req.getRequestURL());
headerInfos.put("URI", req.getRequestURI());
headerInfos.put("RemoteAddr", req.getRemoteAddr());
headerInfos.put("RemoteHost", req.getRemoteHost());
headerInfos.put("RemotePort", req.getRemotePort());
headerInfos.put("LocalAddr", req.getLocalAddr());
headerInfos.put("LocalName", req.getLocalName());
return headerInfos;
}
}
{
"content-length": "22",
"cookie": "JSESSIONID=F86435226AF347A3890C6D2D5CE39ED8; JSESSIONID=8Q1CZi3DD5gbyr8nsv_bAi4xKf4Omv4kahQxDCVq",
"postman-token": "b935c3e9-fff4-4280-bc05-a4fee16772cd",
"RemotePort": 45802,
"URI": "/api/get-headers/infos",
"RemoteAddr": "0:0:0:0:0:0:0:1",
"URL": "http://localhost:8090/api/get-headers/infos",
"token": "token-input",
"accept": "*/*",
"LocalAddr": "0:0:0:0:0:0:0:1",
"LocalName": "ip6-localhost",
"RemoteHost": "0:0:0:0:0:0:0:1",
"host": "localhost:8090",
"content-type": "application/json",
"connection": "keep-alive",
"cache-control": "no-cache",
"accept-encoding": "gzip, deflate",
"user-agent": "PostmanRuntime/7.2.0"
}
2 响应
- 类:HttpServletResponse
描述:服务端生成响应信息.
序号 | 方法 | 描述 |
---|
1 | addDateHeader(String name, long date) | 添加只有一个值且类型为long类型的响应头,如过期时间expires |
2 | addHeader(String name, String value) | 添加有多个值的响应头 |
3 | addHeader(String name, int value) | 添加有多个值且值类型为int类型的响应头 |
4 | setHeader(String name, String value) | 设置有多个值的响应头 |
5 | setHeader(String name, int value) | 设置有多个值且值类型为int类型的响应头 |
6 | setDateHeader(String name, long value) | 设置只有一个值且类型为long类型的响应头,如过期时间expires |
7 | setDateHeader(String name, int value) | 设置只有一个值且类型为int类型的响应头,如过期时间expires |
8 | setIntHeader(String name, int value) | 设置只有一个值且值为类型int的响应头 |
package com.sb.controller;
import com.sb.po.PeopleInfos;
import com.sb.service.PeopleInfosService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RestController
@RequestMapping("/api")
public class PeopleInfosController{
@RequestMapping(value="/set-response/infos", method=RequestMethod.GET)
@ResponseBody
public Map<String, Object> setResponseInfos(HttpServletResponse resp){
Map<String, Object> responseInfos = new HashMap<String, Object>();
resp.addHeader("testHeader", "addHeader");
resp.setDateHeader("expires", 500);
return responseInfos;
}
}
图2.1 添加请求头
3 Get请求
@RequestMapping(value="/get-url/query", params="id", method=RequestMethod.GET)
@RequestMapping(value="/get-url/query", params="!id", method=RequestMethod.GET)
@RequestMapping(value="/get-url/query", params={"id", "name"}, method=RequestMethod.GET)
public Map<String, Object> getUrlInfos(HttpServletRequest req, @RequestParam("id") Integer id, @RequestParam("name") String name){}
package com.sb.controller;
import com.sb.po.PeopleInfos;
import com.sb.service.PeopleInfosService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RestController
@RequestMapping("/api")
public class PeopleInfosController{
@RequestMapping(value="/get-url/query", params={"id", "name"}, method=RequestMethod.GET)
@ResponseBody
public Map<String, Object> getUrlInfos(HttpServletRequest req, @RequestParam("id") Integer id, @RequestParam("name") String name){
Map<String, Object> queryInfos = new HashMap<String, Object>();
queryInfos.put("infos", req.getQueryString());
queryInfos.put("id", id);
queryInfos.put("name", name);
return queryInfos;
}
}
http://localhost:8090/api/get-url/query?id=250&name=xiaohong
4 Post请求
package com.sb.controller;
import com.sb.po.PeopleInfos;
import com.sb.service.PeopleInfosService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RestController
@RequestMapping("/api")
public class PeopleInfosController{
@RequestMapping(value="/get-body/infos", method=RequestMethod.POST)
@ResponseBody
public Map<String, String> getBodyInfos(@RequestBody Map<String, String> bodyInfos){
return bodyInfos;
}
}
【参考文献】
[1]https://www.cnblogs.com/lichangyun/p/8524780.html
[2]https://blog.csdn.net/jiahao1186/article/details/82026330
[3]https://www.jianshu.com/p/8bc6b82403c5
[4]https://www.cnblogs.com/naihuangbao/p/9705625.html