1、web.xml配置

  1. <!-- 验证是否登录 拦截功能 -->
  2. <filter>
  3. <filter-name>isLogin</filter-name>
  4. <filter-class>com.ifengSearch.filter.LoginFilter</filter-class>
  5. </filter>
  6. <filter-mapping>
  7. <filter-name>isLogin</filter-name>
  8. <!-- 拦截 路径 -->
  9. <url-pattern>/user/index</url-pattern>
  10. <url-pattern>/client</url-pattern>
  11. <url-pattern>*.do</url-pattern>
  12. </filter-mapping>

2、编写 拦截器,实现 filter 即可

  1. package com.ifengSearch.filter;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.Filter;
  6. import javax.servlet.FilterChain;
  7. import javax.servlet.FilterConfig;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.ServletRequest;
  10. import javax.servlet.ServletResponse;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13.  
  14. import org.apache.log4j.Logger;
  15.  
  16. import com.ifengSearch.user.entity.UserBean;
  17. /**
  18. * 是否登录拦截器
  19. * @author flm
  20. * @date 2017年8月5日
  21. */
  22. public class LoginFilter implements Filter{
  23.  
  24. private Logger log = Logger.getLogger(LoginFilter.class);
  25.  
  26. @Override
  27. public void destroy() {
  28. }
  29.  
  30. @Override
  31. public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
  32. throws IOException, ServletException {
  33.  
  34. HttpServletRequest request = (HttpServletRequest)arg0;
  35. HttpServletResponse response =(HttpServletResponse) arg1;
  36. UserBean userBean = (UserBean) request.getSession().getAttribute("user");
  37.  
  38. String url = request.getRequestURI(); //获取请求路径
  39. if("/ifengSearch/login.do".equals(url)){ // 如果是登陆的路径 不拦截
  40. arg2.doFilter(request, response);
  41. }
  42. else if(userBean==null||userBean.equals(null)){ //还没登录的 拦截
  43. log.debug("还没登录 -----》 重定向 登录页面");
  44. response.sendRedirect("/ifengSearch/login");
  45. }
  46. else{
  47. arg2.doFilter(request, response); //放行
  48. }
  49. }
  50. @Override
  51. public void init(FilterConfig arg0) throws ServletException {
  52. }

3、还有其他的配置

  1. web.xml配置各节点介绍:
  2.  
  3. <filter-name>用于为过滤器指定一个名字,该元素的内容不能为空。
  4. <filter-class>元素用于指定过滤器的完整的限定类名。
  5. <init-param>元素用于为过滤器指定初始化参数,它的子元素<param-name>指定参数的名字,<param-value>指定参数的值。
  6. 在过滤器中,可以使用FilterConfig接口对象来访问初始化参数。
  7.  
  8. <filter-mapping>元素用于设置一个 Filter 所负责拦截的资源。一个Filter拦截的资源可通过两种方式来指定:Servlet 名称和资源访问的请求路径
  9. <filter-name>子元素用于设置filter的注册名称。该值必须是在<filter>元素中声明过的过滤器的名字
  10. <url-pattern>设置 filter 所拦截的请求路径(过滤器关联的URL样式)
  11. <servlet-name>指定过滤器所拦截的Servlet名称。
  12. <dispatcher>指定过滤器所拦截的资源被 Servlet 容器调用的方式,可以是REQUEST,INCLUDE,FORWARDERROR之一,默认REQUEST。用户可以设置多个<dispatcher> 子元素用来指定 Filter 对资源的多种调用方式进行拦截。
  13.  
  14. <dispatcher> 子元素可以设置的值及其意义:
  15. REQUEST:当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcherinclude()或forward()方法访问时,那么该过滤器就不会被调用。
  16. INCLUDE:如果目标资源是通过RequestDispatcherinclude()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
  17. FORWARD:如果目标资源是通过RequestDispatcherforward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。
  18. ERROR:如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。

Java filter拦截器的使用的更多相关文章

  1. java:(json,ajax,path,Oracle的分页实例,Filter拦截器)

    1.json: <%@ page language="java" import="java.util.*" pageEncoding="UTF- ...

  2. java之拦截器Interceptor

    1,拦截器的概念    java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了 ...

  3. java端拦截器判断客户的的请求是否是ajax请求

    java端拦截器判断客户的的请求是否是ajax请求 发表于 2014-08-22 23:38:08 普通请求与ajax请求的报文头不一样,通过如下 String requestType = reque ...

  4. java web 拦截器、过滤器理解

    1.首先要明确什么是拦截器.什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加 ...

  5. java中拦截器与过滤器

    注:文摘自网络,仅供自己参考 1.首先要明确什么是拦截器.什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之 ...

  6. [Java]利用拦截器和自定义注解做登录以及权限验证

    1.自定义注解 需要验证登录的注解 package com.etaofinance.wap.common; import java.lang.annotation.Documented; import ...

  7. Java使用拦截器的两种方式

    拦截器是个好东西,之前用到过,现在记录一下,供以后参考使用! 其一,使用org.aspectj.lang.annotation.Aspect 先上代码: package com.test.interc ...

  8. Java登陆拦截器

    package com.beidou.warehouseerp.interceptor; import com.alibaba.fastjson.JSON; import com.beidou.war ...

  9. java中拦截器 过滤器 监听器都有什么区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法u ...

随机推荐

  1. Neo4j图数据库

    01. 图数据库 图数据库是专门存储和检索大量信息网络的存储引擎.它可以有效地将数据存储为节点和关系,并允许高性能检索和查询这些结构.属性可以添加到节点和关系.节点可以用零个或多个标签标注,关系总是定 ...

  2. Docker跨主机网络——overlay

    前言 在Docker网络--单host网络一文中,我为大家总结了Docker的单机网络相关知识和操作,单机网络比较容易.本文我为大家总结Docker跨主机通信相关知识.同样本文大部分内容以CloudM ...

  3. CLI子命令扩展-插件机制实现

    开发CLI工具过程中,为了便于扩展,将CLI的实现分为基础功能和扩展功能.基础功能包括init.build.lint.publish等伴随工程从初始化到最终发布到生产环境,也即为CLI 的core.扩 ...

  4. 笨办法用js屏蔽被http劫持的浮动广告

    最近发现网站经常在右下角弹出一个浮动广告,开始的时候以为只是浏览器的广告. 后来越来越多同事反映在家里不同浏览器也会出现广告.然后深入检查了下,发现网站竟然被劫持了. 然后百度了一大堆资料,什么htt ...

  5. 安徽省2016“京胜杯”程序设计大赛_G_木条染色

    木条染色 Time Limit: 1000 MS Memory Limit: 65536 KB Total Submissions: 134 Accepted: 20 Description    小 ...

  6. 多系统重装其中Win7后的启动引导列表恢复

    重装Win7后会导致原grub引导被覆盖,要修复grub需要一张Ubuntu的LiveCD(安装光盘),用LiveCD启动电脑,进入Try Ubuntu(试用Ubuntu),进入之后打开终端,做如下几 ...

  7. 今天聊一聊nuxt.js(上)

    背景 近期在做内部系统的重构,从一线业务彻底的重构,经过充分的考虑我们准备把这个项目打造成前台业务的试验站,比如ssr和一些其他的前沿技术的探索,积累充分的经验后待合适的契机应用到C端的项目中. 既然 ...

  8. java中构造方法及其作用

    构造方法作用就是对类进行初始化. 如果你没有定议任何构造方法的形式,程式会为你取一个不带任何参数的构造函数,那么你产生类的对像时只能用不带参数的方法,如:class a {}//没有任何构造函数. 构 ...

  9. 【机器学习笔记之一】深入浅出学习K-Means算法

    摘要:在数据挖掘中,K-Means算法是一种 cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法. 在数据挖掘中,K-Means算法是一种c ...

  10. VS2013 C++代码运行问题

    VS2013(工具集V120)下编译的C++代码,在win7运行错误,提示缺少msvcr230.dll,但是添加dll之后无效. 解决办法: 官方下载VS2013的C++运行库: vcredist_x ...