过滤器-页面访问次数

本文介绍如何通过Filter类实现统一控制页面访问次数的功能,包括配置Web.xml文件、使用HttpServletRequest和HttpServletResponse获取请求和响应,并在jsp页面展示访问次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Filter来统一控制页面的访问次数,Filter类控制如下所示:

package cn.web.filter; import java.io.IOException; import java.util.HashMap; import java.util.Map; 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; import javax.servlet.http.HttpServletResponse; public class PageVisitFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; //得到当前访问的资源 String uri = request.getRequestURI(); //得到保存页面访问次数的map容器 ServletContext context = request.getSession().getServletContext(); Map pagecount = (Map) context.getAttribute("pagecount"); if(pagecount==null){ pagecount = new HashMap(); context.setAttribute("pagecount", pagecount); } //从容器中得到当前资源的访问次数 Integer count = (Integer)pagecount.get(uri); if(count==null){ count = 1; pagecount.put(uri, count); }else{ count++; pagecount.put(uri, count); } chain.doFilter(request, response); } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }


Web.xml配置如下:

<filter> <filter-name>PageVisitFilter</filter-name> <filter-class>cn.web.filter.PageVisitFilter</filter-class> </filter> <filter-mapping> <filter-name>PageVisitFilter</filter-name> <url-pattern>*.jsp</url-pattern> <dispatcher>FORWARD</dispatcher> </filter-mapping>

jsp页面获取访问次数:

${applicationScope.pagecount[pageContext.request.requestURI] }

html页面获取访问次数(html动态的调用jsp,jsp获取数据返回给html):

<!-- html页面,调用jsp获取页面访问次数 --> <body> 当前页面访问次数: <script type="text/javascript" src="/test/MyJsp.jsp?page=/test/MyHtml.html"></script> </body> <!-- jsp页面,获取当前访问的次数 --> document.write("${applicationScope.pagecount[param.page]}");




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值