HttpServletRequest和HttpServletResponse方法汇总

1。获取 状态码500 200

Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
String year = (String) getRequest().getSession().getAttribute("year");

2。获取header的某个属性

String authorization = request.getHeader("Authorization");

3。构建token响应头

private HttpHeaders buildTokenHeaders() {
    HttpHeaders headers = new HttpHeaders();
    headers.set("Cache-Control", "no-store");
    headers.set("Pragma", "no-cache");
    headers.set("Content-Type", "application/json;charset=UTF-8");
    return headers;
}

4.获取request和request的ip,请求地址,参数

//获取request
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();

//获取response
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
//设置响应header
response.setHeader("X-Total-Count", String.valueOf(totalCount));
response.setHeader("Link", link);


//获取请求header
String info = request.getHeader("user-info");

//从request请求地址
String requestURI = request.getRequestURI();
StringBuffer requestURL = request.getRequestURL();


//获取ip
  public static String getClientHost(HttpServletRequest request){
        String ip = request.getHeader("x-forwarded-for");
        if (ip != null && ip.length() != 0 && ! UNKNOWN.equalsIgnoreCase(ip)) {
            // 多次反向代理后会有多个ip值,第一个ip才是真实ip
            if( ip.indexOf(",")!=-1 ){
                ip = ip.split(",")[0];
            }
        }
        if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
            System.out.println("Proxy-Client-IP ip: " + ip);
        }
        if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
            System.out.println("WL-Proxy-Client-IP ip: " + ip);
        }
        if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
            System.out.println("HTTP_CLIENT_IP ip: " + ip);
        }
        if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
            System.out.println("HTTP_X_FORWARDED_FOR ip: " + ip);
        }
        if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Real-IP");
            System.out.println("X-Real-IP ip: " + ip);
        }
        if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
            System.out.println("getRemoteAddr ip: " + ip);
        }
        System.out.println("获取客户端ip: " + ip);
        return ip;
    }


//获取参数
    public static Map<String, Object> getRequestParameters(HttpServletRequest request) {
        String parameters = "";//请求参数
        if ("GET".equals(request.getMethod())) {//GET请求时的参数
            String urlParameter = request.getQueryString();//网址中的参数
            if (urlParameter != null && !"".equals(urlParameter)) {
                urlParameter = URLDecoder.decode(urlParameter, StandardCharsets.UTF_8);
            } else {
                urlParameter = "";
            }
            parameters = urlParameter;
        } else if ("POST".equals(request.getMethod())) {//POST请求时的参数
            StringBuilder totalParameter = new StringBuilder();//表单及网址中全部参数
            Map<String, String[]> params = request.getParameterMap();
            int parametersNum = request.getParameterMap().size();//参数个数
            int flag = 1;
            for (String key : params.keySet()) {

                String[] values = params.get(key);
                for (String value : values) {
                    totalParameter.append(key).append("=").append(value);
                }
                if (flag < parametersNum) {
                    totalParameter.append("&");
                }
                flag += 1;
            }
            parameters = totalParameter.toString();
        }
        Map<String, Object> map = new HashMap<String, Object>();
        String[] arr = parameters.split("&");
        for (String s : arr) {
            String key = s.substring(0, s.indexOf("="));
            String value = s.substring(s.indexOf("=") + 1);
            map.put(key, value);
        }
        return map;
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘然生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值