你直接写个过滤类就可以了(使用 filter 的3个方法 你懂得)
package com.enation.eop;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.util.Collection;import java.util.Date;import java.util.List;import java.util.Locale;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.enation.eop.processor.back.BackendProcessor;import com.enation.eop.processor.core.freemarker.FreeMarkerPaser;import com.enation.eop.processor.facade.FacadeProcessor;import com.enation.eop.processor.facade.InstallProcessor;import com.enation.eop.processor.facade.ResourceProcessor;import com.enation.eop.resource.IAppManager;import com.enation.eop.resource.model.EopApp;import com.enation.eop.sdk.context.EopContext;import com.enation.eop.sdk.context.EopContextIniter;import com.enation.eop.sdk.context.EopSetting;import com.enation.framework.context.spring.SpringContextHolder;import com.enation.framework.context.webcontext.ThreadContextHolder;public class DispatcherDemoFilter implements Filter { public void init(FilterConfig config) {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// HttpServletRequest req= ServletActionContext.getRequest();// String flag= req.getHeader("X-Requested-With");// HttpServletResponse response = ServletActionContext.getResponse();
String ip = ((HttpServletRequest) request).getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
ip = ((HttpServletRequest) request).getHeader("Proxy-Client-IP");
} if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
ip = ((HttpServletRequest) request).getHeader("WL-Proxy-Client-IP");
} if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
ip = request.getRemoteAddr();
}
String authtoken = request.getParameter("auth-token");
System.out.println(authtoken);
StringBuffer sb = new StringBuffer() ;
InputStream is = request.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String s = "" ;
while((s=br.readLine())!=null){
sb.append(s) ;
}
System.out.println(sb);
String str =sb.toString();
System.out.println(ip+"时间"+new Date().getTime()); //response.setCharacterEncoding("utf-8");
response.setContentType("application/xml");
String write = "
"
"
"
"
System.out.println(write);
response.getWriter().write(write);
} public void destroy() {
}
private static boolean isExinclude(String uri) {
String[] exts = new String[] { "jpg", "gif", "js", "png", "css", "doc", "xls", "swf","ico" };
for (String ext : exts) { if (uri.toUpperCase().endsWith(ext.toUpperCase())) { return true;
}
} return false;
}
}
建议你用 .properties文件来保存你的IP ,或是把你的要过滤的IP维护进来用表保存。
过滤ip一般采用filter的形式,至于读xml文件dom等都可以,太多了。
web.xml只能有一个,是全局的配置。可以在里面加 过滤器来实现ip阻断
给个过滤器配置例子,仅供参考.需要自己写过滤器类,并读取新的xml保存的ip实现过滤功能
cn.com.Filter
在resources里面新建一个XML file或者 file,
XML file 会自动生成XML头,在下面加入内容就可以了,首先要有一个根节点,然后如果需要用到一些类,如:spring的一些类,就需要引入包,如:
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
其中如果添加的事properties文件,格式如下:
# 连接池配置
pool.size = 2
pool.max = 50