1.過(guò)濾器創(chuàng)建
了解過(guò)濾器常見(jiàn)配置含義
<filter>
<filter-name>filter名字</filter-name>
<filter-class>對(duì)應(yīng)到Java包名類名</filter-class>
</filter>
<filter-mapping>
<filter-name>filter名字</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter-mapping標(biāo)簽里面還有許多參數(shù)嘶居,可以參考學(xué)習(xí)博客
特別注意<filter-mapping>標(biāo)簽可以同一個(gè)過(guò)濾器寫(xiě)多個(gè)url-pattern
<filter-mapping>標(biāo)簽還可帶參傳入到j(luò)ava類中料皇,使用<init-param><param-name><param-value>
在web.xml創(chuàng)建過(guò)濾器
<filter>
<filter-name>ElectronicFilter</filter-name>
<filter-class>com.chinasoft.it.attendance.filter.ElectronicFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ElectronicFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.Java類創(chuàng)建
1>.實(shí)現(xiàn)Filter 接口
2>.init方法可讀取web.xml中<init-param>參數(shù)值
3>.重寫(xiě)doFilter方法,實(shí)現(xiàn)自己所要的功能。
4>.如果不過(guò)濾走filterChain.doFilter(request, response)方法;
public class FilterName implements Filter {
protected String ip = "";
protected List<String> listUrl;
/**
* @see Filter#destroy()
*/
public void destroy() {
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
String ipRemoteAddr = request.getRemoteAddr();//讀取發(fā)送請(qǐng)求IP地址
//String reqUrl = ((HttpServletRequest) request).getRequestURI();
if (!listUrl.contains(ipRemoteAddr)) {
response.setCharacterEncoding("gb2312");
PrintWriter out = response.getWriter();
out.print("<p style='text-align:center; font-size:25'>IP限制粘室!</p>");
} else {
filterChain.doFilter(request, response);
}
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig filterConfig) throws ServletException {
}
}