门户网站需要哪些人,郑州做网络优化的公司,做家宴网站,wordpress coolcode目录
引言:
1. 获取request对象的几种常用方式
- 1.1 获取请求对象 通过请求上下文对象 获取信息[推荐] - 1.2 在controller层直接获取[不推荐 侵害性太强]
- 1.3 interceptor中获取[部分业务中使用] - 1.4 request常用api简介
2. 获取request的body的工具…目录
引言:
1. 获取request对象的几种常用方式
- 1.1 获取请求对象 通过请求上下文对象 获取信息[推荐] - 1.2 在controller层直接获取[不推荐 侵害性太强]
- 1.3 interceptor中获取[部分业务中使用] - 1.4 request常用api简介
2. 获取request的body的工具类如下:
3. 使用方式: 引言: request对象获取url uri param参数 但是没有直接的api去查看body参数,参考1.4 1. 获取request对象的几种常用方式
- 1.1 获取请求对象 通过请求上下文对象 获取信息[推荐]
RequestAttributes attributes RequestContextHolder.getRequestAttributes();
ServletRequestAttributes servletRequestAttributes (ServletRequestAttributes) attributes;
HttpServletRequest request servletRequestAttributes.getRequest(); - 1.2 在controller层直接获取[不推荐 侵害性太强] PostMapping(/add)ApiOperation(添加用户)public ResultResponse add(Validated RequestBody UserReqDTO userReqDTO, HttpServletRequest request) {userService.addUserMsg(userReqDTO,request);return ResultResponse.ok(添加成功!);}
- 1.3 interceptor中获取[部分业务中使用]
Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {} - 1.4 request常用api简介 1.getRequestURL()方法返回客户端发出请求时的完整URL http:localhost:8080/aaa/bbb 2.getRequestURI()方法返回请求行中的资源名 /aaa/bbb 3.getQueryString()方法返回请求行的参数部分。 4.getRemoteAddr()方法返回发出请求的客户机的IP地址。 5.getRemoteHost()方法返回发出请求的客户机的完整主机名。 6.getRemotePort()方法返回客户机所使用的网络端口号。 7.getLocalAddr()方法返回服务器的IP地址。 8.getLocalName()方法返回服务器的主机名。 9.getMethod()得到客户机请求方式。 2. 获取request的body的工具类如下: 原因: api中没有获取body的方法 import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;
import java.io.*;/*** 请求体工具类** author pzy* version 0.1.0*/
public class RequestBodyUtils {private static final int BUFFER_SIZE 1024 * 8;/*** read string.** param reader Reader instance.* return String.* throws IOException*/public static String read(Reader reader) throws IOException {try (StringWriter writer new StringWriter()) {write(reader, writer);return writer.getBuffer().toString();}}/*** write.** param reader Reader.* param writer Writer.* return count.* throws IOException*/public static long write(Reader reader, Writer writer) throws IOException {return write(reader, writer, BUFFER_SIZE);}/*** write.** param reader Reader.* param writer Writer.* param bufferSize buffer size.* return count.* throws IOException*/public static long write(Reader reader, Writer writer, int bufferSize) throws IOException {int read;long total 0;char[] buf new char[bufferSize];while ((read reader.read(buf)) ! -1) {writer.write(buf, 0, read);total read;}return total;}/*** 获取requestBody*/public static String getRequestBody() throws IOException {RequestAttributes attributes RequestContextHolder.getRequestAttributes();ServletRequestAttributes servletRequestAttributes (ServletRequestAttributes) attributes;assert servletRequestAttributes ! null;HttpServletRequest request servletRequestAttributes.getRequest();BufferedReader reader new BufferedReader(new InputStreamReader(request.getInputStream()));//读取输入流的内容转换为String类型IOUtils必须引入org.apache.dubbo.common.utils.IOUtils;包return RequestBodyUtils.read(reader);}}
3. 使用方式: 当有请求的时候 需要获取 直接调用就可以, JSONObject对象- 需要的DTO对象 String requestBody RequestBodyUtils.getRequestBody();
JSONObject jsonObject JSONObject.parseObject(requestBody);