java 端口转发 过滤_Java过滤器Filter使用说明

Java 过滤器

1. 过滤器的产生背景

在基于JSP 页面开发的Web 项目中,会遇到一种情况,除了登陆页面或者注册页面以外,其它页面在用户未登陆的情况下是不允许访问的。对用户身份的验证是基于session 实现的,即在登陆成功后在session 中放入标识,当用户再次访问其它页面时,根据session 的标识来确认用户是否可以访问。这样的话,在很多页面中都需要添加判断代码,同样代码的重复增加了多余的代码,不符合Java 编程习惯且不利于维护。而过滤器的产生解决了这一问题。

2. 过滤器的实现

使用Servlet 过滤器实现JSP 页面中的用户身份验证,首先必须实现Filter 接口,且重写doFilter()方法,由doFilter()方法去处理过滤业务;其次,在web.xml 文件中配置Servlet 过滤器,指定过滤器的名称、过滤器包所在类的名称及过滤器的映射范围等。

3. 过滤器的介绍

3.1 Servlet 过滤器接口的构成

所有的Servlet 过滤器都必须实现javax.servlet.filter 接口,该接口中定义了3个过滤器必须实现的方法:

void init(FilterConfig):过滤器的初始化方法,Servlet 容器在创建过滤器实例时调用这个方法,在这个方法中可以读出在web.xml 文件中为该过滤器配置的初始化参数。 void doFilter(ServletRequest,ServletResponse,FilterChain):用于完成实际的过滤操作,当客户请求访问与过滤器相关联的URL 时,Servlet 容器将先调用过滤器的这个方法,FilterChain 参数用于访问后续过滤器。

void destroy():过滤器在被取消前执行这个方法,释放过滤器申请的资源。

3.2创建一个Servlet 过滤器需要下面的步骤: 1.创建一个实现了javax.servlet.Filter 接口的类。 2.重写init(FilterConfig)方法,读入为过滤器配置的初始化参数,申请过滤器需要的资源

3.重写方法doFilter(ServletRequest,ServletResponse,FilterChain),完成过滤操作,可以从ServletRequest 参数中得到全部的请求信息,从ServletResponse 参数中得到全部的响应信息。

4.在doFilter()方法的最后,使用FilterChain 参数的doFilter()方法将请求和响应后传。

5.对响应的Servlet 程序和JSP 页面注册过滤器,在部署描述文件(web.xml)中使用和元素对过滤器进行配置。

用户(浏览器)

服务器端页面

过滤器

请求

响应

服务器端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java端口流量统计是通过对Java网络编程进行开发,实现对指定端口的流量进行统计和监控的功能。下面是一个简单的Java流量统计源码示例: ```java import java.io.IOException; import java.net.InetSocketAddress; import java.net.Socket; import java.util.HashMap; import java.util.Map; public class PortTrafficMonitor { private Map<Integer, Long> trafficMap; // 存储端口和流量的映射关系 public PortTrafficMonitor() { trafficMap = new HashMap<>(); } public void startMonitoring() { while (true) { // 监听指定端口的流量 monitorPortTraffic(8080); // 这里以8080端口为例 try { Thread.sleep(1000); // 每隔1秒监控一次 } catch (InterruptedException e) { e.printStackTrace(); } } } private void monitorPortTraffic(int port) { long currentTraffic = 0; try { Socket socket = new Socket(); socket.connect(new InetSocketAddress(port)); currentTraffic = socket.getInputStream().available(); socket.close(); } catch (IOException e) { e.printStackTrace(); } trafficMap.put(port, currentTraffic); System.out.println("Port " + port + " traffic: " + currentTraffic + " bytes"); } public static void main(String[] args) { PortTrafficMonitor trafficMonitor = new PortTrafficMonitor(); trafficMonitor.startMonitoring(); } } ``` 该示例代码通过不断监控指定端口的流量,将流量大小存储在trafficMap中,并打印出当前流量的字节数。用户可以根据实际需求对代码进行扩展和优化,例如增加记录流量的历史数据、设置流量报警等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值