1.1 拦截器的作用
被SpringMVC调用
拦截器作用:在访问目标资源方法时做相应的干预
1.2 拦截器和过滤器的区别
1.3 拦截器快速入门
在没有拦截器的情况下:
-
创建拦截器:实现HandlerInterceptor
-
配置拦截器(已配置了其他的)
-
测试
没有输出说明没有这个页面没有成功返回
控制台只打印了"preHandle",因为preHandle()方法return false
,那么后面的都不会执行
执行顺序是preHandle()
->目标方法(target)
->postHandle()
->afterCompletion()
改为return true
后:
-
preHandler
if("param".equals("yes"))
改为if("yes".equals(param))
不带参数,跳到error.jsp:
带的参数不是yes:
带的参数是yes:
-
postHandler:
过程:先到preHandler,然后到了Controller的show()
然后上图的modelAndView被传给了postHandler
多个拦截器的情况:
执行顺序在于spring-mvc.xml中的拦截器配置顺序:
1.5 拦截器方法说明
1.7 案例-用户登录权限控制
看session中有没有user,有就不用管,没有就跳转到登录页面
jdbcTemplate.queryForObject("select * from sys_user where username=? and password=?",new BeanPropertyRowMapper<User>(User.class),username,password);
但是配置的是拦截所有的资源,因此登录就算密码对了也会被拦截返回登录页面
可以改为: