一、拦截器简介:Struts2大多数核心功能是通过拦截器实现的,每个拦截器完成某项功能。拦截器方法在Action执行之前或者之后执行。拦截器栈:从结构上看,拦截器栈相当于多个拦截器的组合。在功能上看,拦截器栈也是拦截器。 拦截器的执行过程是一个递归的过程,工作原理类似于过滤器。
二、自定义拦截器的应用
案例:统计Action的执行花费时间:
思路:执行之后的时间-执行之前的时间= 执行Action消耗的时间
1. 定义拦截器1.1.创建一个拦截器类继承自AbstractInterceptor类1.2.实现intercept方法eg: public String intercept(ActionInvocation invocation) throws Exception { //1.执行action之前 long start=System.currentTimeMillis(); //2.执行下一个拦截器,如果是最后一个拦截器,则执行目标action String result=invocation.invoke(); //3.执行action之后 long end=System.currentTimeMillis(); //4.花费的时间 long time=end-start; System.out.println("执行花费的时间: "+time+" ms"); return result; }2. 配置拦截器3. 引用拦截器
三、Struts2内置常用的拦截器
1.params拦截器:-负责将请求参数设置为Action属性2.staticParams拦截器:-将配置文件中action元素的子元素param参数设置为Action属性3.servletConfig拦截器:-将源于Servlet API的各种对象注入到Action,必须实现对应接口4.fileUpload拦截器:-对文件上传提供支持,将文件和元素设置到对应的Action属性,实际上内部依然使用了Commons-FileUpload组件。5.exception拦截器:-捕获异常,并且将异常映射到用户自定义的错误页面6.validation拦截器:-调用验证框架进行数据验证更多的拦截器可在struts2-core包的struts-default.xml中查看
默认拦截器栈:
四、使用拦截器实现权限控制
下面是4个开发模式常用配置的简介---
相关代码:@struts.xml/WEB-INF/page/manager.jsp /login.jsp /WEB-INF/page/manager.jsp /login.jsp