拦截器的使用

xiaoxiao2021-02-28  45

1.拦截器的原理

第一个 aop(面向切面的编程原理)

  *在不改变源代码的情况下扩展功能

  如图

  

第二个 责任链模式

(1)责任链模式类似于之前学习过滤链

         过滤链:一个请求有多个过滤器进行过滤,每个过滤器只有放行操作才能到下一个过滤器

(2)什么是责任链模式

*责任链模式是java设计模式

*执行多个操作,比如添加操作,有修改操作,有删除操作,

    ** 这三个操作都要执行,执行顺序,第一个执行添加,第二个执行修改,第三个执行删除

    ** 首先执行添加操作,执行添加操作之后做放行操作,执行第二个修改操作,

        修改执行之后做放行,执行删除操作

2.拦截器与过滤器的区别:

1)过滤器理论上可以过滤任意内容,比如actionjsp、图片路径

2)拦截器只能拦截action(在action的方法之前执行)

案例(对登陆的用户检查是否已登陆,如果没有登陆返回登陆页面)

3.自定义拦截器(继承MethodFilterInterceptor类,重写里面的dointercept方法

   (1判断session里面是否有值

public class LoginInterceptor extends MethodFilterInterceptor {

//拦截的方法,在这个方法里面写拦截器逻辑

protected String doIntercept(ActionInvocation invocation) throws Exception {

//判断session里面是否有值

HttpSession session = ServletActionContext.getRequest().getSession();

Object obj = session.getAttribute("username");

if(obj != null) {//登录状态

//放行操作

return invocation.invoke();

} else {

//不是登录

return "login";

}

}

}

2.在struts.xml核心文件中对拦截器进行配置

同时可以对所action的方式进行选择性的拦截

转载请注明原文地址: https://www.6miu.com/read-2596298.html

最新回复(0)