java webservice服務器端獲取request對象的三種方式


有的時候在webservice里我們需要獲取request對象和response對象,比如想要獲得客戶端的訪問ip的時候就需要這么做,下面說三種方式,當然三種方式可能是針對不同方式部署webservice獲取request對象的方法。

第一種:先配置注入:

@Resource
private WebServiceContext webServiceContext;

其次是下面的代碼:

MessageContext mc = webServiceContext.getMessageContext();
HttpServletRequest request = (HttpServletRequest) (mc.get(MessageContext.SERVLET_REQUEST));

第二種:

WebServiceContext context = new WebServiceContextImpl();
MessageContext ctx = context.getMessageContext();
HttpServletRequest request = (HttpServletRequest) ctx.get(AbstractHTTPDestination.HTTP_REQUEST);

第三種(附帶獲取客戶端ip地址的方法):

Message message = PhaseInterceptorChain.getCurrentMessage();
HttpServletRequest request = (HttpServletRequest) message.get(AbstractHTTPDestination.HTTP_REQUEST);

獲取ip:

public static String getIpAddr(HttpServletRequest 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 || "unknow".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM