<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      適配器模式應用~獲取IP地址時想起了適配器

      獲取IP地址信息時,一般我們需要一個HttpServletRequest對象,然后從請求頭里獲取x-forwarded-for的值,而當我們使用dubbo+netty開發(fā)rest接口時,如果希望獲取IP地址,HttpServletRequest是用不了的,你需要使用netty中的NettyRequestFacade對象,這時,你之前的獲取IP地址的方法需要擴展,加一個只有入?yún)⒉灰粯樱a邏輯完成一樣的丑陋的,重復的代碼;這無疑是一種代碼的壞味道,應該想辦法解決它。

      適配器(包裝器)

      這種常用的設計模式在spring框架里用的非常多,如ServletRequestAttributes,它包裝了HttpServletRequest和HttpServletResponse,用來添加額外的功能,如獲取請求參數(shù)、session等信息。

      為獲取IP地址添加包裝

      自己的http請求包裝器接口RequestWrapper

      public interface RequestWrapper {
      
      	String getHeader(String name);
      
      	String getRemoteAddr();
      
      }
      

      HttpServletRequest的包裝

      public class HttpRequestWrapper implements RequestWrapper {
      
      	private final HttpServletRequest request;
      
      	public HttpRequestWrapper(HttpServletRequest request) {
      		this.request = request;
      	}
      
      	@Override
      	public String getHeader(String name) {
      		return request.getHeader(name);
      	}
      
      	@Override
      	public String getRemoteAddr() {
      		return request.getRemoteAddr();
      	}
      
      }
      

      NettyRequestFacade的包裝

      public class NettyRequestWrapper implements RequestWrapper {
      
      	private final NettyRequestFacade request;
      
      	public NettyRequestWrapper(NettyRequestFacade request) {
      		this.request = request;
      	}
      	@Override
      	public String getHeader(String name) {
      		return request.getHeader(name);
      	}
      
      	@Override
      	public String getRemoteAddr() {
      		return request.getRemoteAddr();
      	}
      
      }
      
      

      獲取IP地址方法,入?yún)⑹且粋€http包裝器

      public static String getIpAddr(RequestWrapper request) {
      		String ip = request.getHeader("x-forwarded-for");
      		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
      			ip = request.getHeader("Proxy-Client-IP");
      		}
      		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
      			ip = request.getHeader("WL-Proxy-Client-IP");
      		}
      		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
      			ip = request.getRemoteAddr();
      			if (ip.equals("127.0.0.1")) {
      				// 根據(jù)網(wǎng)卡取本機配置的IP
      				InetAddress inet = null;
      				try {
      					inet = InetAddress.getLocalHost();
      				}
      				catch (UnknownHostException e) {
      					e.printStackTrace();
      				}
      				ip = inet != null ? inet.getHostAddress() : ip;
      			}
      		}
      		// 對于通過多個代理的情況,第一個IP為客戶端真實IP,多個IP按照','分割
      		if (ip != null && ip.length() > 15) {
      			if (ip.indexOf(",") > 0) {
      				ip = ip.substring(0, ip.indexOf(","));
      			}
      		}
      		if ("0:0:0:0:0:0:0:1".equals(ip)) {
      			ip = "127.0.0.1";
      		}
      		return ip;
      	}
      

      調(diào)用示例:

      // 使用HttpServletRequest
      public String getIpFromHttp(HttpServletRequest request) {
          return getIpAddr(new HttpRequestWrapper(request));
      }
      
      // 使用NettyRequestFacade
      public String getIpFromNetty(NettyRequestFacade request) {
          return getIpAddr(new NettyRequestWrapper(request));
      }
      
      posted @ 2024-12-18 13:48  張占嶺  閱讀(367)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产AV无码专区亚洲AV漫画 | 风韵丰满熟妇啪啪区老熟熟女 | 激情综合网激情综合网激情| 9久久伊人精品综合| 午夜国产精品福利一二| 日韩美女一区二区三区视频| 九九热视频在线观看精品| 日韩大片高清播放器| 国产激情国产精品久久源| 久久精品视频一二三四区| 激情久久av一区av二区av三区| 九九热精品免费视频| 精品国产综合一区二区三区| 国产v亚洲v天堂a无码99| 精品一区二区三区女性色| 国产亚洲精品成人aa片新蒲金 | 久久综合久中文字幕青草| 欧美牲交a欧美牲交aⅴ一| 亚洲 制服 丝袜 无码| 欧美激情一区二区三区成人 | 国产欧美精品一区aⅴ影院| 欧美牲交a欧美牲交aⅴ免费| 丰满的人妻hd高清日本| 国产成人黄色自拍小视频| 在线看免费无码的av天堂| 老师扒下内裤让我爽了一夜| 人妻在线中文字幕| 国产麻豆精品一区一区三区| 久久热在线视频精品视频| 久久亚洲熟女cc98cm| 四虎影视一区二区精品| 又黄又无遮挡AAAAA毛片| 国产精品午夜福利小视频| 成人3D动漫一区二区三区| 中文字幕av日韩有码| 亚洲黄色成人网在线观看| 精品国产污污免费网站| 99热成人精品热久久66| 51妺嘿嘿午夜福利| 夜夜躁日日躁狠狠久久av| 2019久久久高清日本道|