从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);
}
}
浙公网安备 33010602011771号