Servlet过滤器实现访客人数统计
第一、 Servlet的创建和配置
1、 创建一个Servlet需要实现javax.servlet.Filter接口,同时实现Filter的3个方法。
第一个方法时过滤器中的init()方法用于对过滤器的初始值进行处理,destroy()方法是过滤器的销毁方法,主要用于释放资源,过滤处理的业务逻辑都在doFilter()方法里,在请求过滤处理后,需要调用chain.doFilter(request,response)方法将请求传递给下一个过滤器或者目标资源(相当于放行)。
2、过滤的配置(其实过滤器和servlet差不多)
首先我们要声明过滤对象
其次我们创建过滤器映射。
配置代码在下面:
//声明过滤器对象
<filter>
<filter-name>CountFilter</filter-name>
<filter-class>com.luo.filter.CountFilter</filter-class>
<init-param>
<param-name>count</param-name>
<param-value>0</param-value>
</init-param>
</filter> //过滤器映射
<filter-mapping>
<filter-name>CountFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
下面是过滤器类代码和jsp代码:
类代码:
package com.luo.filter; import java.io.IOException; import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; public class CountFilter implements Filter {
//来访数量
private int count; @Override
public void destroy() {
// TODO Auto-generated method stub } @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException { count++;
HttpServletRequest req = (HttpServletRequest)request;
ServletContext context = req.getSession().getServletContext();
context.setAttribute("count", count);
chain.doFilter(request, response); } @Override
public void init(FilterConfig filterConfig) throws ServletException {
//获取配置文件中的初始化参数
String param = filterConfig.getInitParameter("count");
count = Integer.valueOf(param); } }
jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
你好,你是本站${count }访客。 </body>
</html>
这样一个简单的访客计数就通过过滤器简单完成了,不会的私信我。愿意为你解答。
Servlet过滤器实现访客人数统计的更多相关文章
- servlet过滤器--使用过滤器统计网站访问人数的计数(注解形式)
文章目录 1.什么是过滤器? 2.过滤器核心对象 3.过滤器创建和配置 4.举例子 1.什么是过滤器? 主要用于对客户端的请求进行过滤处理,再将经过过滤后的请求转交给下一个资源. 2.过滤器核心对象 ...
- Servlet过滤器介绍之原理分析
zhangjunhd 的BLOG 写留言去学院学习发消息 加友情链接进家园 加好友 博客统计信息 51CTO博客之星 用户名:zhangjunhd 文章数:110 评论数:858 访问量:19 ...
- Servlet过滤器的使用
Servlet过滤器的使用 制作人:全心全意 Servlet过滤器:Servlet过滤器与Servlet十分相似,但它具有拦截客户端请求的功能,Servlet过滤器可以改变请求中的内容,来满足实际开发 ...
- Servlet过滤器——过滤器分析流量
1.概述 Servlet过滤器可以对用户提交的数据或服务器返回的数据进行更改.任何到达服务器的请求都会首先经过过滤器的处理.本实例应用过滤器的这个特点,编写了一个在过滤器中统计网站流量的实例. 本实例 ...
- Servlet过滤器和监听器知识总结(转)
Servlet过滤器和监听器知识总结(转) Servlet过滤器是 Servlet 程序的一种特殊用法,主要用来完成一些通用的操作,如编码的过滤.判断用户的登录状态.过滤器使得Servlet开发者能 ...
- 用servlet来提取数据,并作统计,然后用jfreechart画图
指定时间范围的数据提取,并做统计: 用servlet来提取数据,并作统计,然后用jfreechart画图. 使用的话,需要在web.xml里面配置相应的servlet,并且在index.jsp页面做引 ...
- Servlet过滤器和监听器知识总结
Servlet过滤器是 Servlet 程序的一种特殊用法,主要用来完成一些通用的操作,如编码的过滤.判断用户的登录状态.过滤器使得Servlet开发者能够在客户端请求到达 Servlet资源之前被截 ...
- Servlet过滤器
Servlet过滤器 [TOC] 1.过滤器的基本概念 1.1.基本概念 过滤器(Filter)属于tomcat服务器中的Servlet功能.在普通的javaweb服务中,jsp中的请求要被Servl ...
- Servlet过滤器Filter用法
1 Servlet 过滤器方法 过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法:public void ...
随机推荐
- 《linux就该这么学》第三节课 第二节命令笔记
命令笔记 (随笔原创,借鉴请修改) linux系统中一切都是文件 2.4 系统状态的命令: ifconfig : 查看系统网卡信息,包括网卡名称,ip地址,掩码,mac地址,收到数据包大 ...
- windows----------windows查看端口是否被占用
假如我们需要确定谁占用了我们的80端口在windows命令行窗口下执行: netstat -aon|findstr "80" TCP 127.0.0.1:80 0.0.0.0:0 ...
- python多线程学习一
本文希望达到的目标: 多线程的基本认识 多线程编程的模块和类的使用 Cpython的全局解释器锁GIL 一.多线程的基本认识 多线程编程的目的:并行处理子任务,大幅度地提升整个任务的效率. 线程就是运 ...
- Install rapyuta Robot Cloud Engine on Ubuntu14.04
# -Rapyuta-installation-in-Ubuntu14.04-LTS-Trusty-This gzip folder is a tested version which can ins ...
- 【转】Sqlserver将数据从一个表插入到另一个表
-- 复制表结构CREATE TABLE empty_table_name LIKE table_name; --根据table_name创建一个空表empty_table_name,empty_ta ...
- 0007-20180403-python-自动化基础学习000--while-if 循环实操
python-自动化基础学习000 Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64 ...
- 2017.11.10 重读C++ Primer
第二章 变量和变量类型 1. C++ 算数类型 bool 布尔 最小尺寸未定义 char 字符 8位 wchar_t ...
- Class_fifth
1,统计文件夹的文件总数 代码: package Class_fifth; import java.io.File; public class Statistics { public static v ...
- 隐藏非选中的checkBox
//隐藏非选中的checkBox function onlyCheckBox(){ $("#dtlTable tr:gt(0)").each(function(i) { var c ...
- java之代码复用
1.通用查询修改方法 2.通用查询修改方法接口