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 {
}
}