555555555555555555555
1、 preHandle 方法,会在请求处理之前被执行,其返回的 boolean 用于表示是否继续执行;true 表示 请求被继续执行;false表示请求将被终止:
示例:
可以看到 输出了 “执行到了 preHandle方法” 后,就没有其他的业务逻辑被执行输出了
1、 preHandle 方法,会在请求处理之前被执行,其返回的 boolean 用于表示是否继续执行;true 表示 请求被继续执行;false表示请求将被终止
拦截器的方法介绍
preHandle
postHandle
afterCompletion
拦截器的方法介绍
1、preHandle方法:在请求被处理之前进行调用,方法返回值为boolean,该返回值代表是否将当前请求进行拦截,如果为true,请求将继续运行,如果为false,请求将被终止(也就是请求不会到达控制器,也不会执行另外两个拦截器方法),该方法有三个参数,HttpServletRequest存储了请求的信息,HttpServletResponse存储了响应的信息,Object表示被拦截的请求目标的对象(当前拦截的就是请求要访问的TestController的viewAll方法,可以理解为TestController的实例)。
扩展:Maven中无法使用EL表达式解决方法?
答:问题因为2.5之前,web.xml文件中的头定义中,el表达式默认是忽略不解析的,有如下三种解决方法。
【1】jsp文件头上添加:<%@ page isELIgnored="false"%>
【2】web.xml中添加定义。(不做详细)
【3】web.xml头中添加定义。(不做详细)
2、postHandle方法:在请求被处理之后进行调用,处了以上三个参数外,还有一个ModelAndView参数,可以通过该参数改变显示的视图。
3、afterCompletion方法:在请求响应结束之后(视图显示之后)才进行调用,主要用于一些资源的销毁,例如连接、流等,不经常使用它。
也可以修改返回页面
arg3 可以对请求结束后的返回显示页面进行修改
object args2 表示的是被拦截的请求的目标对象,可以从中获取该对象的信息
请求之前执行的方法,prehandle
拦截器的方法介绍
拦截器的三个方法
preHandle 方法返回值
拦截器的方法介绍
@拦截器中三个方法的介绍:
1、preHandle()方法是否将当前请求拦截下来。(返回true请求继续运行,返回false请求终止(包括action层也会终止),Object arg代表被拦截的目标对象。)
2、postHandle()方法的ModelAndView对象可以改变发往的视图或修改发往视图的信息。
3、afterCompletion()方法表示视图显示之后在执行该方法。(一般用于资源的销毁)
拦截器的实现
1.编写拦截器类实现HandlerInterceptor接口
三个必须实现的方法
preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2)
(第一步:在请求被处理之前进行调用 是否需要将当前的请求拦截下来,如果返回
false,请求将会终止,返回true,请求将会继续
Object arg2表示拦截的控制器的目标方法实例)
postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,
ModelAndView arg3)
(第二步:在请求被处理之后进行调用ModelAndView arg3是指将被呈现在网页上的对象,可以通过修改这个对象实现不同角色跳向不同的网页或不同的消息提示)
afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,Exception arg3)
(第三步:在请求结束之后调用 一般用于关闭流、资源连接等 比较少用)
preHandler方法的解释:
特殊说明:方法中Object arg2表示被请求的目标
@拦截器中三个方法的介绍:
1、preHandle()方法是否将当前请求拦截下来。(返回true请求继续运行,返回false请求终止(包括action层也会终止),Object arg代表被拦截的目标对象。)
2、postHandle()方法的ModelAndView对象可以改变发往的视图或修改发往视图的信息。
3、afterCompletion()方法表示视图显示之后在执行该方法。(一般用于资源的销毁)
请求处理前,preHandle
请求处理后, postandle,处理请求对象和MAndV,制定转到页面
请求结束后,afterCompletion处理请求对象和异常,一般用于关闭请求,关闭流等操作
拦截器方法
prehandler(可以终止请求) --> 请求Controller(返回Model&View) --> postHandler(可以修改model&view) --> afterCompletion (资源销毁,不常用)
拦截器注解
拦截器的方法执行顺序
1
默认方法
拦截器是指通过统一拦截从浏览器发往服务器的请求来完成功能的增强 使用场景:解决请求的共性问题(乱码问题、权限验证问题) 拦截器的基本工作原理 1.SpringMVC可以通过配置过滤器来解决乱码问题 2.拦截器的工作原理和过滤非常相似 拦截器的实现 1.编写拦截器类实现HandlerInterceptor接口 三个必须实现的方法 preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) (第一步:在请求被处理之前进行调用 是否需要将当前的请求拦截下来,如果返回 false,请求将会终止,返回true,请求将会继续 Object arg2表示拦截的控制器的目标方法实例 ) postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) (第二步:在请求被处理之后进行调用 ModelAndView arg3是指将被呈现在网页上的对象,可以通过修改这个对象实现不同角色跳向不同的网页或不同的消息提示 ) afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,Exception arg3) (第三步:在请求结束之后调用 一般用于关闭流、资源连接等 比较少用)