1.定义Java web过滤器,禁用给定IP地址访问。 2.定义监听器,监听ServletContext对象的生命周期。运行结果截图
时间: 2025-06-15 13:21:17 浏览: 11
在Java Web中,你可以通过创建一个Servlet Filter来禁止特定IP地址的访问。Filter是一种特殊的Servlet,它可以在请求到达Servlet之前或之后运行一些预处理或后处理操作。以下是创建一个简单的IP地址过滤器的步骤:
```java
import javax.servlet.*;
import java.io.IOException;
import java.util.List;
public class IPBlockFilter implements Filter {
private List<String> blockedIps = Arrays.asList("192.168.0.1", "127.0.0.1"); // 需要阻止的IP列表
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("Filter initialized");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
String remoteIp = ((HttpServletRequest) request).getRemoteAddr(); // 获取客户端IP
if (blockedIps.contains(remoteIp)) {
response.getWriter().println("Access denied for IP: " + remoteIp);
response.setStatus(HttpServletResponse.SC_FORBIDDEN); // 设置403错误状态码
} else {
chain.doFilter(request, response); // 如果不是黑名单IP,则继续请求处理
}
}
@Override
public void destroy() {
System.out.println("Filter destroyed");
}
}
```
要在web.xml文件中配置这个过滤器,添加如下内容:
```xml
<filter>
<filter-name>IPBlockFilter</filter-name>
<filter-class>com.example.IPBlockFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>IPBlockFilter</filter-name>
<url-pattern>/*</url-pattern> <!-- 或者你想限制的其他URL -->
</filter-mapping>
```
至于监听`ServletContext`对象的生命周期,可以使用`ServletContextListener`接口。例如:
```java
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class AppLifeCycleListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext initialized");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext destroyed");
}
}
```
运行结果通常不会显示截图,因为这是程序内部的日志输出,但在服务器控制台或日志管理工具中你会看到相应的初始化和销毁消息。
阅读全文
相关推荐


















