HTTP相关

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

}

  

原文地址:https://www.cnblogs.com/therunningfish/p/6558190.html