零基础入门SpringMVC拦截器的配置与使用(springmvc实现拦截器两种方式)

网友投稿 306 2022-08-02


在SpringMVC中 我们说到了拦截器 , 它会在映射处理器(HandleMapping)执行时检查我们访问的地址是否配置拦截器 , 在拦截器中实现一些功能

SpringMVC 定义了拦截器接口 HandlerInterceptor该接口中定义了三个方法,这三个方法的调用时在 SprintksKmgjAgMVC 框架内部完成的, 调用这个三个方法的时候,其参数的值也是从框架内部传递进来的。

首先我们来看第一个方法 : boolean preHandle()

预处理方法,实现处理器(Controller层, 控制器)方法的预处理,就是在处理器方法执行之前这个方法会被行,相当于拦截了处理器方法,框架会传递请求和响应对象给该方法,第三个参数为被拦截的处理器方法。如果 preHandle 方法返回 true 表示继续流程(如调用下一个拦截器或处理器方法),返回 false 表示流程中断,不会继续调用其他的拦截器或处理器方法,此时我们需要通过 response 来产生响应;

意思就是说呢 , 当请求到达我们控制层方法时, 会先进入这个方法中, 根据preHandle() 方法的

返回结果(true 和 false) 来决定下一步如何执行

后两个方法 : void postHandle()     afterCompletion()

首先第一个方法是控制层方法执行后会执行, 第二个方法时整个请求结束后执行, 因为版本原因, 这两个方法的使用频率较低, 所以这里我们做一个了解即可

接着我们去搭建一个拦截器看看到底是怎么一回事

//自己编写一个类PreInterceptor 实现 HandlerInterceptor接口 , 重写preHandle方法

public class PreInterceptor implements HandlerInterceptor {

//此方法返回true ,请求才能顺利到达相应的处理方法中,否则会被拦截

@Override

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

//第三个参数为目标控制器对象

HttpSession session= request.getSession();

//判断信息是否有效

Admin admin = (Admin) sessionhttp://.getAttribute("admin");

if (admin==null){

response.getWriter().print(202);

return false;

}else {

return true;

}

}

}

接着需要去配置文件中配置拦截器

这里我们以后端登录 的控制器为例

@RestController

@RequestMapping(value = "/login")

public class LoginController {

@Autowired

LoginService loginService;

@PostMapping(value = "/login")

public CommonResult adminLogin(Admin admin, HttpSession session){

CommonResult commonResult;

try {

Admin admin1 = loginService.login(admin);

if(admin1==null){

commonResult=new CommonResult(201,"账号或密码错误",admin1);

}else {

session.setAttribute("admin",admin1);

commonResult=new CommonResult(200,"登录成功",admin1);

}

}catch (Exception e){

commonResult=new CommonResult(500,"登录失败","");

}

return commonResult;

}

}

如上, 前端发起了登录请求 , 我们配置了拦截器, 会先进入拦截器 , 根据 preHandle() 方法决定

是否可以进入到我们具体的登录方法中

上述控制器例子是将用户的信息存入了session中 , 我们每次接受前端的请求时, 在拦截器中判断用户的信息是否还是有效的 , 有效则放行, 无效则拦截 , 所以前提是我们的登录请求肯定是不能被拦截的, 因为这时候没有登录, 用户信息为 null ,所以上面我们配置了不拦截登录请求, 也不去拦截那些请求页面

以上就是SpringMVC中拦截器的具体功能和实现 , 感谢阅读


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mybatis的update更新批量与普通解决方式对比(mybatis批量更新写法)
下一篇:Java Iterator迭代器与foreach循环代码解析(java培训学校)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~