SpringMVC中静态获取request对象 Spring中获取 HttpServletRequest对象 SpringBoot中静态获取request

19 篇文章 0 订阅
18 篇文章 0 订阅

  SpringMVC中静态获取request对象 Spring中获取 HttpServletRequest对象 SpringBoot中静态获取request

一、web.xml 中配置Listener

<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>  
</listener>

二、代码实现

        1、创建RequestUtil 静态获取request、response对象

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.context.request.ServletWebRequest;

/**
 * description: 静态获取request、response对象
 * @version v1.0
 * @author w
 * @date 2020年6月23日下午3:23:58
 **/
public class RequestUtil {
	
	/**
	 * description: 静态获取request对象
	 * @return HttpServletRequest
	 * @version v1.0
	 * @author w
	 * @date 2020年6月23日 下午3:39:43
	 */
	public static HttpServletRequest getRequest() {
		ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
		HttpServletRequest request = servletRequestAttributes.getRequest();
		return request ;
	}

	/**
	 * description: 静态获取response 对象
	 * @return HttpServletResponse
	 * @version v1.0
	 * @author w
	 * @date 2020年6月23日 下午3:40:02
	 */
	public static HttpServletResponse getResponse() {
		ServletWebRequest servletWebRequest = (ServletWebRequest)RequestContextHolder.getRequestAttributes();
		HttpServletResponse response = servletWebRequest.getResponse();
		return response;
	}
	
}

        2、Spring Boot 中静态获取 response 如下:

public static HttpServletResponse getResponse() {
    ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
	HttpServletResponse response = servletRequestAttributes.getResponse();
	log.debug("get response success ... ");
	return response;
}

(2021年4月19日20:57:23 增加)

        

        3、常用方法:

/**
 * Description: 获取 request 请求 header
 * @param request
 * @return java.util.Map<java.lang.String,java.lang.String>
 * @version v1.0
 * @author wu
 * @date 2023/5/8 9:25
 */
public static Map<String,String> getRequestHeader(HttpServletRequest request){
    final Map<String, String> map = new HashMap<>();
    final Enumeration<String> headerNames = request.getHeaderNames();
    while (headerNames.hasMoreElements()){
        final String headerName = headerNames.nextElement();
        final String header = request.getHeader(headerName);
        map.put(headerName,header);
    }
    return map;
}

/**
 * Description: 获取 response 响应 header
 * @param response
 * @return java.util.Map<java.lang.String,java.lang.String>
 * @version v1.0
 * @author wu
 * @date 2023/5/8 9:26
 */
public static Map<String,String> getResponseHeader(HttpServletResponse response){
    final Map<String, String> map = new HashMap<>();
    final Collection<String> headerNames = response.getHeaderNames();
    headerNames.stream().forEach(e->{
        final String val = response.getHeader(e);
        map.put(e,val);
    });
    return map;
}

/**
 * Description: 获取 文件上传 Part 信息
 * @param request
 * @return java.util.List<java.util.Map<java.lang.String,java.lang.String>>
 * @version v1.0
 * @author wu
 * @date 2023/5/8 9:26
 */
public static List<Map<String,String>> getPartInfoList(HttpServletRequest request) throws ServletException, IOException {
    final String contentType = request.getContentType();
    if(Objects.nonNull(contentType) && contentType.startsWith(MediaType.MULTIPART_FORM_DATA_VALUE)){
        List<Map<String,String>> list = new ArrayList();
        request.getParts().stream().forEach(e->{
            final HashMap<String, String> map = new HashMap<>();
            map.put("fileName",e.getSubmittedFileName());
            map.put("fileSzie",String.valueOf(e.getSize()));
            map.put("contentType",e.getContentType());
            list.add(map);
        });
        return list;
    }
    return Collections.emptyList();
}

/**
 * Description: 获取真实Ip
 * @return java.lang.String
 * @version v1.0
 * @author wu
 * @date 2023/5/8 9:27
 */
public static String getRealIp(HttpServletRequest request){
    String remoteAddr = request.getHeader("X-Real-IP");
    if (StringUtils.isNotBlank(remoteAddr)) {
        remoteAddr = request.getHeader("X-Forwarded-For");
    }else if (StringUtils.isNotBlank(remoteAddr)) {
        remoteAddr = request.getHeader("Proxy-Client-IP");
    }else if (StringUtils.isNotBlank(remoteAddr)) {
        remoteAddr = request.getHeader("WL-Proxy-Client-IP");
    }
    return remoteAddr != null ? remoteAddr : request.getRemoteAddr();
}

( 2023年5月8日 09:44:07 增加 )

更多: WebService获取request对象

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值