过滤器的介绍及使用20181226

简单介绍:有些网页是不能直接访问的,比如有一个项目,有几百个网页都需要你登录才有权限访问,一个一个设置太麻烦,于是设置一个过滤器,让每次访问网页时必须先经过过滤器的身份验证。
具体实现(以是否登录为验证条件):

public class LoginFilter implements Filter  {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse resp, FilterChain fc)
			throws IOException, ServletException {
		long start = System.currentTimeMillis();
		HttpServletRequest request = (HttpServletRequest)req;
		HttpSession session = request.getSession();
		String uri = request.getRequestURI();
		String username = (String)session.getAttribute("username");
		//所有页面username为空都不能访问,并直接跳转到登录页面,除了login和regiest和Login和Regiest还有一些css/img等功能性页面
		if(username == null ) {
			if(uri.indexOf("login") != -1 || uri.indexOf("regiest") != -1 || uri.indexOf("Regiest") != -1 || uri.indexOf("Login") != -1  || uri.indexOf("index") != -1  
					||  uri.indexOf("css") != -1
					||  uri.indexOf("images") != -1
					||  uri.indexOf("img") != -1
					||  uri.indexOf("scripts") != -1
					||  uri.indexOf("style") != -1
					){
				fc.doFilter(req, resp);
			}else {
				req.getRequestDispatcher("login.jsp").forward(req, resp);
				return;
			}
		}else {
			fc.doFilter(req, resp);
		}
		long end = System.currentTimeMillis();
		long time = end - start;
		System.out.println(uri+":"+time);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}
}

与jsp页面链接有两种方式:
一、修改web.xml文件:

    <filter>
    <filter-name>login</filter-name>
    <filter-class>com.nandasoft.edu.filter.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>login</filter-name>
    <url-pattern>/*</url-pattern>//代表所有页面必须经过验证
  </filter-mapping>

二、

@WebFilter(filterName="login", urlPatterns="/*")

加在过滤器中。
用内置对象session存储数据,就实现了过滤器。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值