package com.sec.xinhua.gateway.web; import com.sec.xinhua.gateway.config.ConfigRepositoryFactory; import com.sec.xinhua.gateway.handler.DefaultApiHandlerChain; import com.sec.xinhua.gateway.handler.RequestHandler; import com.sec.xinhua.gateway.service.DubboServiceManager; import com.sec.xinhua.gateway.utils.SysConstants; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 风控网关http入口 * * @author zhangqx * @version $Id: GatewayServlet.java, v 0.1 2015年12月8日 下午5:48:20 zhangqx Exp $ */ public class GatewayServlet extends HttpServlet { /** */ private static final long serialVersionUID = -2466227266582283749L; @Override public void init(ServletConfig config) throws ServletException { super.init(config); //初始化配置(dubbo注册中心等),很重要 ConfigRepositoryFactory.initGatewaySetting(); //初始化所有(dubbo的映射关系)setting DubboServiceManager.initAllDubboService(); //初始化handler(filter时需要串行执行的handler,包括参数转化,泛化调用) DefaultApiHandlerChain.getInstance(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { //编码设置 req.setCharacterEncoding(SysConstants.ENCODE); response.setContentType("application/json;charset=utf-8"); response.setCharacterEncoding(SysConstants.ENCODE); response.setHeader("Access-Control-Allow-Origin", "*"); RequestHandler requestHandler = new RequestHandler(); String addr = req.getRemoteAddr(); /** * ip白名单功能 */ // if (StringUtils.isNotBlank(addr)) { // IpFileCache ipFileCache = IpFileCache.getInstance(); // List ips = ipFileCache.getIps(); // if (ips == null || !ips.contains(addr)) { // print(response, "您好,您的ip无访问权限!"); // return; // } // } requestHandler.httpRequestHandle(req, response); } private void print(HttpServletResponse response, String content) { response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "GET,PUT,DELETE,POST,OPTIONS"); response.setHeader("Access-Control-Allow-Headers", "Origin,X-Requested-With,Content-Type,Accept,kopds"); try { response.getWriter().print(content); response.getWriter().flush(); } catch (IOException e) { } } }