CXF实现类中获取HttpServletRequest:
public class BaseWebService { @Context private MessageContext messageContext; protected String getIpAddr() { Message message = PhaseInterceptorChain.getCurrentMessage(); if(message==null) return "0.0.0.0.1"; // 获取HttpServletRequest HttpServletRequest request = (HttpServletRequest)message.get(AbstractHTTPDestination.HTTP_REQUEST); //获取response HttpServletResponse response = (HttpServletResponse)message.get(AbstractHTTPDestination.HTTP_RESPONSE); //获取ServletContext ServletContext servletContext = (ServletContext)message.get(AbstractHTTPDestination.HTTP_CONTEXT); 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(); } return ip; } }
Filter中获取HttpServletRequest:
public class LoginTokenFilter implements Filter{ private static final Logger log = Logger.getLogger(LoginTokenFilter.class); @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { try{ // 获取HttpServletRequest HttpServletRequest request = (HttpServletRequest) req; // 获取HttpServletResponse HttpServletResponse response = (HttpServletResponse) res; boolean isOptions = StringUtils.equals("OPTIONS", request.getMethod()); ThreadlocalUtil.setIsOptions(isOptions); ThreadlocalUtil.setNewVersion(false); //跨域设置 AppConfig appConfig = (AppConfig) SpringContextUtil.getBean("appConfig"); if(StringUtils.equals("1", appConfig.getCrossDomainFlag())){ response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); response.setHeader("Access-Control-Allow-Headers", "Content-Type,Authorization,Accept,X-Requested-With,POWERED-BY-MENGXIANHUI,logintoken,userID"); } System.out.println("getAuthType============"+request.getAuthType()); System.out.println("getContextPath============"+request.getContextPath()); System.out.println("getMethod============"+request.getMethod()); System.out.println("getPathInfo============"+request.getPathInfo()); System.out.println("getPathTranslated============"+request.getPathTranslated()); System.out.println("getRemoteUser============"+request.getRemoteUser()); System.out.println("getRequestedSessionId============"+request.getRequestedSessionId()); System.out.println("getRequestURI============"+request.getRequestURI()); System.out.println("getRequestURL============"+request.getRequestURL()); System.out.println("getServletPath============"+request.getServletPath()); System.out.println("getRemoteAddr============"+request.getRemoteAddr()); chain.doFilter(request, res); } catch (Exception e){ log.error("LoginTokenFilter is error!",e); throw e; } } @Override public void init(FilterConfig arg0) throws ServletException { } }