package com.fgkj.Filters; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import com.fgkj.actions.ActionUtil; import com.fgkj.dto.ServiceModel; public class CrossDomainLimitFilter implements Filter{ public static final int max_connect_count = 10; public final static String CROSS_DOMAIN_KEY = "44c4a294cb66d13727c14b065dbe8548"; //跨域请求 key public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest)req; String URL=request.getRequestURI(); //检测跨域访问的请求 if(URL != null && URL.endsWith("_ky")){ String key = req.getParameter("key"); //获取校验码 ServiceModel model = new ServiceModel(); //是否允许访问 boolean isAlowVisit = false; if(key != null && CROSS_DOMAIN_KEY.equals(key)){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("跨域访问域名或ip:"+request.getRemoteHost()+" At "+sdf.format(new Date())); isAlowVisit = true; }else{ model.setMsg("识别码错误"); } if(isAlowVisit){ //通过请求 chain.doFilter(request, response); }else{ //不能放行的请求 PrintWriter out = response.getWriter(); out.write(ActionUtil.getGson().toJson(model)); out.flush(); out.close(); } }else{ //非跨域请求 chain.doFilter(request, response); } } public void init(FilterConfig arg0) throws ServletException { } public void destroy() { } public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(new Date())); } }