servlet过滤器--使用过滤器统计网站访问人数的计数(注解形式)

简介: 该文章展示了如何使用Servlet过滤器(Filter)通过注解方式创建一个网站访问人数统计功能,通过`@WebFilter`注解定义过滤器及其URL模式,并在`doFilter`方法中实现计数逻辑,将访问次数存储在`ServletContext`中,最后在JSP页面展示访问人数。

文章目录

  • 1、什么是过滤器?
  • 2、过滤器核心对象
  • 3、过滤器创建和配置
  • 4、举例子

1、什么是过滤器?

主要用于对客户端的请求进行过滤处理,再将经过过滤后的请求转交给下一个资源。
在这里插入图片描述

2、过滤器核心对象

一个接口,名称为Filter,放置在javax.servlet包中。

在这里插入图片描述

  • Filter:过滤器对象
  • FilterConfig:过滤器的配置对象
  • FilterChain:过滤器的传递工具

3、过滤器创建和配置

在这里插入图片描述

  • filterName属性:用于指定servlet过滤器名
  • urlPatterns属性:用于指定哪些URL使用该过滤器,所有使用/*,指定某一个index.jsp
  • initParams属性:指定初始化参数

4、举例子

网站人数访问计数

编写的过滤器

package com.zheng;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

@WebFilter(
        urlPatterns = {"/countNum.jsp"},
        initParams = {
                @WebInitParam(name = "count", value = "100")
        }
)
public class MyFilter implements Filter {
    private int count;//访问人数

    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        count++;//访问数量增加
        //将ServletRequest转换为HttpServletRequest
        HttpServletRequest request = (HttpServletRequest) req;
        //获取ServletContext
        ServletContext context = request.getServletContext();

        context.setAttribute("count", count);//将数量放入

        chain.doFilter(req, resp);//放开拦截
    }

    //初始化
    public void init(FilterConfig config) throws ServletException {
        String param = config.getInitParameter("count");//获取初始化参数
        count = Integer.valueOf(param);

    }

}

前端页面

<%--
  Created by IntelliJ IDEA.
  User: 你芭比
  Date: 2021/12/20
  Time: 9:30
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>计数</title>
</head>
<body>
<h2>
    第【<%=application.getAttribute("count")%>】位访问
</h2>

</body>
</html>

测试结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章
|
4月前
|
存储 前端开发 JavaScript
Servlet实现一个简单的表白墙网站
前言 前面我们学习了 Java 中知名的 HTTP 服务器 tomcat 的安装和使用,还学习了 servlet 相关 API 的学习,今天,这篇文章我们将运用前面学习的 HTTP 知识、tomcat和servlet来实现一个简单的表白墙网站。
Servlet实现一个简单的表白墙网站
|
29天前
|
前端开发 JavaScript
这篇文章介绍了如何使用form表单结合Bootstrap格式将前端数据通过action属性提交到后端的servlet,包括前端表单的创建、数据的一级和二级验证,以及后端servlet的注解和参数获取。
这篇文章介绍了使用AJAX技术将前端页面中表单接收的多个参数快速便捷地传输到后端servlet的方法,并通过示例代码展示了前端JavaScript中的AJAX调用和后端servlet的接收处理。
这篇文章介绍了如何使用form表单结合Bootstrap格式将前端数据通过action属性提交到后端的servlet,包括前端表单的创建、数据的一级和二级验证,以及后端servlet的注解和参数获取。
|
28天前
|
前端开发 Java 开发工具
servlet技术--使用注解模拟用户登录实现页面跳转
该文章介绍了Servlet技术的使用,通过注解方式开发Servlet来模拟用户登录功能,并在登录成功后实现页面跳转,展示用户的用户名和密码。
servlet技术--使用注解模拟用户登录实现页面跳转
|
13天前
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
13 0
|
18天前
|
监控 前端开发 Java
揭秘Web开发神器:Servlet、过滤器、拦截器、监听器如何联手打造无敌博客系统,让你的用户欲罢不能!
【8月更文挑战第24天】在Java Web开发中,Servlet、过滤器(Filter)、拦截器(Interceptor,特指Spring MVC中的)及监听器(Listener)协同工作,实现复杂应用逻辑。以博客系统为例,Servlet处理文章详情请求,过滤器(如LoginFilter)检查登录状态并重定向,Spring MVC拦截器(如LoggingInterceptor)提供细粒度控制(如日志记录),监听器(如SessionListener)监控会话生命周期事件。这些组件共同构建出高效、有序的Web应用程序。
25 0
|
3月前
|
XML 数据格式
XML配置Servlet文件,不使用注解配置路径的方法
XML配置Servlet文件,不使用注解配置路径的方法
|
3月前
|
前端开发 安全 Java
Java服务器端开发实战:利用Servlet和JSP构建动态网站
【6月更文挑战第23天】**Servlet和JSP在Java Web开发中扮演关键角色。Servlet处理业务逻辑,管理会话,JSP则结合HTML生成动态页面。两者协同工作,形成动态网站的核心。通过Servlet的doGet()方法响应请求,JSP利用嵌入式Java代码创建动态内容。实战中,Servlet处理数据后转发给JSP展示,共同构建高效、稳定的网站。虽然新技术涌现,Servlet与JSP仍为Java Web开发的基石,提供灵活且成熟的解决方案。**
56 8
|
3月前
|
Java 应用服务中间件 开发工具
基于Servlet的3.1以上注解方式完成上传功能。
基于Servlet的3.1以上注解方式完成上传功能。
16 0
|
4月前
|
存储 Java 数据库
Servlet 教程 之 网站点击计数器 1
在Servlet中实现网站点击计数器很简单,通过过滤器生命周期管理。初始化时设置全局变量hitCount为0,每次doFilter方法调用时累加。可选地,在destroy()中保存hitCount到数据库。示例代码展示了Filter的实现,需在web.xml配置。访问网站时,计数器会随着页面点击增加并在日志中显示。
41 6
|
4月前
|
容器
Servlet 教程 之 Servlet 编写过滤器 6
该教程介绍了如何在Servlet中编写过滤器。可以创建多个过滤器,如AuthenFilter和LogFilter,并通过不同的映射进行配置。过滤器的应用顺序由web.xml中filter-mapping的顺序决定,可通过调整顺序改变过滤器执行的先后。
24 3