从Spring的Bean中获取servletcontext 和 applicationContext

1.原理:

import javax.servlet.ServletContext;

import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.web.context.ServletContextAware;

/**
 * @作者 king
 * @功能 客户端与服务端数据传输接口
 * @日期 2008-8-28
 */
public class SysInterface implements ApplicationContextAware,ServletContextAware{
 
 /** 
  * 功能 : 实现 ApplicationContextAware接口,由Spring自动注入 Spring上下文对象
  * 
  **/
 public void setApplicationContext(ApplicationContext actx)   throws BeansException 
 {
  }

 /** 
  * 功能 : 实现 ServletContextAware接口,由Spring自动注入 系统上下文对象
  * 
  **/
 public void setServletContext(ServletContext sctx) 
 { 
}
}

 2.实现如下:

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ServletContextAware;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import com.sungoin.platform.call.po.Agent;
import com.sungoin.platform.common.Constants;
import com.sungoin.platform.system.po.Agency;
import com.sungoin.platform.system.po.Company;
import com.sungoin.platform.system.po.Provider;
import com.sungoin.platform.system.po.User;


@Component
public class SpringHelper implements ApplicationContextAware, ServletContextAware {

    private static ApplicationContext ac;
    private static ServletContext sc;

    @Override
    public void setApplicationContext(ApplicationContext ac) throws BeansException {
        SpringHelper.ac = ac;
    }

    @Override
    public void setServletContext(ServletContext sc) {
        SpringHelper.sc = sc;
    }

    public static ApplicationContext getApplicatoinContext() {
        return ac;
    }

    public static ServletContext getServletContext() {
        return sc;
    }

    public static Object getSpringBean(String name) {
        if (ac == null) {
            throw new IllegalStateException("spring环境尚未启动!");
        }
        return ac.getBean(name);
    }

    public static HttpServletRequest getRequest() {
        return ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
    }

    public static HttpSession getSession() {
        return getRequest().getSession();
    }

    public static String getContextPath() {
        String ctx = getRequest().getContextPath();
        return ctx.endsWith("/") ? ctx : ctx + "/";
    }

    public static User getCurrentUser() {
        return (User) getSession().getAttribute(Constants.SESSION_CURRENT_USER);
    }

    public static Company getCurrentCompany() {
        return (Company) getSession().getAttribute(Constants.SESSION_CURRENT_COMPANY);
    }

    public static Agency getCurrentAgency() {
        return (Agency) getSession().getAttribute(Constants.SESSION_CURRENT_AGENCY);
    }

    public static Provider getCurrentProvider() {
        return (Provider) getSession().getAttribute(Constants.SESSION_CURRENT_PROVIDER);
    }

    public static String getAbsoluteUrl() {
        HttpServletRequest request = getRequest();
        return request.getLocalAddr() + ":" + request.getLocalPort() + request.getContextPath();
    }

    public static String getIPAddress() {
        HttpServletRequest request = getRequest();
        String ip = request.getHeader("x-forwarded-for");
        if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }

    public static Agent getCurrentAgent() {
        return (Agent) getSession().getAttribute(Constants.SESSION_CURRENT_AGENT);
    }

    public static String getCurrentCompanyNumber() {
        return (String) getSession().getAttribute(Constants.SESSION_CURRENT_COMPANY_NUMBER);
    }
}
posted @ 2014-07-17 11:19  柠檬Cool  阅读(623)  评论(0)    收藏  举报