1. 程式人生 > >Java獲取客戶端ip和埠

Java獲取客戶端ip和埠

“青楓江上秋帆遠,白帝城邊古木疏”
如果你的方法引數裡面直接有request,像下面這樣:

    @RequestMapping("/test.json")
    @ResponseBody
    public Map<String,Object> getIpAndLoginname(HttpServletRequest request, HttpServletResponse response){
        Map<String,Object> resultMap = new HashMap<>();
        return resultMap;
    }

這樣的就可以直接通過request獲取ip和埠

@RequestMapping("/test.json")
    @ResponseBody
    public Map<String,Object> getIpAndLoginname(HttpServletRequest request, HttpServletResponse response){
        Map<String,Object> resultMap = new HashMap<>();
        //獲取IP
        String remoteAddr = request.getRemoteAddr();
        String
forwarded = request.getHeader("X-Forwarded-For"); String realIp = request.getHeader("X-Real-IP"); String ip = null; if (realIp == null) { if (forwarded == null) { ip = remoteAddr; } else { ip = remoteAddr + "/" + forwarded.split(","
)[0]; } } else { if (realIp.equals(forwarded)) { ip = realIp; } else { if(forwarded != null){ forwarded = forwarded.split(",")[0]; } ip = realIp + "/" + forwarded; } } resultMap.put("serverIp",ip); resultMap.put("serverPort",request.getRemotePort()); //埠 resultMap.put("sessionId",request.getSession().getId()); //會話ID return resultMap; }

第二種情況,你的方法裡面沒有直接的request,那麼,首先你需要獲得request,然後再利用上面的方法獲取ip和埠,下面的程式碼獲取request:

 //獲取request
 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();