简述:
对于部分IP进行授权访问,其余的IP拦截
参考文章:
http://fackyou200.iteye.com/blog/1166043
知识点:
1. Filter配置
2. spring list属性注入
3. 页面返回
4. filter中页面重定向
说明:
1. 配置web.xml(ipFilter 对应的就是bean id)
<filter>
<filter-name>ipFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ipFilter</filter-name>
<url-pattern>/view/*</url-pattern>
</filter-mapping>
2. applicationContext-filter.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="ipFilter" class="com.anialy.verload.filter.IPFilter">
<property name="ipPermitedList">
<list>
<value>127.0.0.1</value>
</list>
</property>
</bean>
</beans>
3. IPFilter.java (此处直接以打印形式返回页面)
import java.io.IOException;
import java.util.List;
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;
public class IPFilter implements Filter {
private List<String> ipPermitedList;
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest httprequest = (HttpServletRequest)request;
httprequest.setCharacterEncoding("utf-8");
String ip = httprequest.getRemoteAddr();
if(ipPermitedList.contains(ip)){
chain.doFilter(request, response);
}else{
response.setCharacterEncoding("utf-8");
response.getWriter().write("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html\"; charset=\"utf-8\"></head><body><center style='padding-top:100px'><span style='color:red'>404 错误请求 !</span></center></body></html>");
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
public void destroy() {
// TODO Auto-generated method stub
}
public void setIpPermitedList(List<String> ipPermitedList) {
this.ipPermitedList = ipPermitedList;
}
}
附注:
也可以将其配置为error_404.jsp页面
IPFilter.java
import java.io.IOException;
import java.util.List;
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;
public class IPFilter implements Filter {
private List<String> ipPermitedList;
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest httprequest = (HttpServletRequest)request;
String ip = httprequest.getRemoteAddr();
if(ipPermitedList.contains(ip)){
chain.doFilter(request, response);
}else{
httprequest.getRequestDispatcher("/view/error_404.jsp").forward(request, response);
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
public void destroy() {
// TODO Auto-generated method stub
}
public void setIpPermitedList(List<String> ipPermitedList) {
this.ipPermitedList = ipPermitedList;
}
}
erro_404.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
<center style='padding-top:100px'>
<span style='color:red'>404 错误请求 !</span>
</center>
</body>
</html>
效果:(apache tomcat 7 )
以ip, 192.168.0.199访问直接被拦截到错误页面