过滤器-页面访问次数

使用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]}");




 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傅荣康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值