在实际的应用中,我们会遇到这样的情况,需要对某些Ip进行访问限制,不让非法的Ip访问应用系统。只有合法的Ip才能可以继续访问!
1.下面就用一个实例FilterIP.java来禁止那些未授权的Ip
package com.msit.servlet;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class FilterIP implements Filter {
protected FilterConfig filterConfig;
protected String FilteredIP;
/**
* 初始化
*/
@Override
public void init(FilterConfig conf) throws ServletException {
this.filterConfig = conf;//过滤器初始化
FilteredIP = conf.getInitParameter("FilteredIP");//获取被过滤的Ip
if (FilteredIP==null) {
FilteredIP="";
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
response.setContentType("text/html");
response.setCharacterEncoding("gb2312");//设置编码格式
RequestDispatcher dispatcher = request.getRequestDispatcher("ErrorInfo.jsp");//定义错误转向页面
//读出本地Ip
String remoteIP = request.getRemoteAddr();
//将其与要过滤掉的Ip比较,如果相同,就转到错误处理界面
if (remoteIP.equals(FilteredIP)) {
dispatcher.forward(request, response);
}else {
chain.doFilter(request, response);
}
}
@Override
public void destroy() {
this.filterConfig = null;
}
}
2.再创建一个成功访问页面的Jsp文件Success.jsp和失败访问错误的响应页面ErroeInfo.jsp
成功访问页面(Success.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>欢迎登陆</title>
</head>
<body>
<center>
<font size = 4>欢迎登陆javaWeb服务器</font><!-- 成功访问输出语句 -->
</center>
</body>
</html>
失败访问错误的响应页面(ErroeInfo.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>错误报告</title>
</head>
<body>
<%
out.print("<center><font size = 4>对不起,您的IP不能登陆本网站!</font></center>");//被拒绝服务器Ip显示信息
%>
</body>
</html>
3.配置过滤器的web.xml
<!-- 配置过滤器 尽可能把过滤器配置到web.xml最上面 -->
<filter>
<filter-name>FilterIP</filter-name>
<filter-class>com.msit.servlet.FilterIP</filter-class>
<init-param>
<param-name>FilteredIP</param-name>
<param-value>127.0.0.1</param-value><!-- 要过滤的Ip 127.0.0.1为本地 -->
</init-param>
</filter>
<filter-mapping>
<filter-name>FilterIP</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4.最后在浏览器中输入http://127.0.0.1:8080/Servlet/Succeed.jsp来测试这个程序,由于我设置的是本机Ip地址被拒绝访问,所以运行结果如下图
5.我把本机Ip地址设置为可以访问后,我再在浏览器中输入http://127.0.0.1:8080/Servlet/Succeed.jsp来测试这个程序,运行结果如下图
以上就是使用过滤器过滤未授权的Ip禁止访问的全过程