HttpServletRequest获取参数

不多说了直接上代码

获取非域名请求ip:

request.getRemoteAddr()

获取域名或代理方式请求ip:

public class IpAddrUtil {
   public static String getIPAddress(HttpServletRequest request) {
      String ip = null;

      //X-Forwarded-For:Squid 服务代理
      String ipAddresses = request.getHeader("X-Forwarded-For");

      if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
         //Proxy-Client-IP:apache 服务代理
         ipAddresses = request.getHeader("Proxy-Client-IP");
      }

      if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
         //WL-Proxy-Client-IP:weblogic 服务代理
         ipAddresses = request.getHeader("WL-Proxy-Client-IP");
      }

      if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
         //HTTP_CLIENT_IP:有些代理服务器
         ipAddresses = request.getHeader("HTTP_CLIENT_IP");
      }

      if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
         //X-Real-IP:nginx服务代理
         ipAddresses = request.getHeader("X-Real-IP");
      }

      //有些网络通过多层代理,那么获取到的ip就会有多个,一般都是通过逗号(,)分割开来,并且第一个ip为客户端的真实IP
      if (ipAddresses != null && ipAddresses.length() != 0) {
         ip = ipAddresses.split(",")[0];
      }

      //还是不能获取到,最后再通过request.getRemoteAddr();获取
      if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
         ip = request.getRemoteAddr();
      }
      return ip;
   }
}

获取get方式请求参数:

request.getQueryString()

获取post方式请求参数:

Enumeration em = request.getParameterNames();
while (em.hasMoreElements()) {
    String name = (String) em.nextElement(); //参数名称
    String value = request.getParameter(name); //根据参数名称获取到参数值
}

获取请求方式:

request.getMethod()

获取请求url:

request.getRequestURL().toString()

猜你喜欢

转载自blog.csdn.net/kaola_l/article/details/80735113