Spring MVC拦截器Interceptor使用(判断用户登录)

news/2024/11/28 0:45:16/

文章目录

    • 一 概念
    • 二 3步使用
    • 三 HandlerInterceptor接口
    • 四 代码实现

一 概念

Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。
拦截器可以在进入处理器之前做一些操作,或者在处理器完成后进行操作,甚至是在渲染视图后进行操作。

在这里仅仅演示登录的判断

二 3步使用

①创建拦截器类实现HandlerInterceptor接口
②配置拦截器(在springmvc-config.xml中配置)
③测试拦截器效果是否实现

三 HandlerInterceptor接口

这个接口含有三个方法:

方法名作用说明
preHandle()这个方法将在请求处理之前进行调用,该方法的返回值是布尔值,当返回值为false时,表示请求结束,后续的Interceptor和Controller都不会再执行;当返回值为true时就会继续调用下一个Interceptor的preHandle方法
postHandle该方法是在当前请求进行处理之后被调用,前提是preHandle方法的返回值为true时才能被调用,且它会在DispatcherServlet进行视图返回渲染之前被调用,所以在这个方法里可对Controller层处理之后的ModelAndView对象进行操作
afterCompletion该方法将在整个请求结束之后,也就是在DispatcherServlet渲染了对应的视图之后执行,前提是preHandle方法的返回值为true时才能被调用

四 代码实现

①创建创建拦截器类实现HandlerInterceptor接口

import cn.com.sise.pojo.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 获取请求的URLSystem.out.println("preHandle执行中");// 获取请求的URLString url = request.getRequestURI();// URL:除了login.jsp是可以公开访问的,其它的URL都进行拦截控制if (url.indexOf("/lgCheck") >= 0) {return true;}// 获取SessionHttpSession session = request.getSession();User user = (User) session.getAttribute("USER_SESSION");// 判断Session中是否有用户数据,如果有,则返回true,继续向下执行if (user != null) {return true;}// 不符合条件的给出提示信息,并转发到登录页面request.setAttribute("msg", "您还没有登录,请先登录!");request.getRequestDispatcher("/login.jsp").forward(request, response);return false;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle在目标方法执行之后,视图渲染之前执行");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("在所有方法执行之后执行");}

该类所在目录截图
在这里插入图片描述

②配置拦截器(在springmvc-config.xml中配置)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--	配置拦截器--><mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><mvc:exclude-mapping path="/login"/><bean class="interceptor.LoginInterceptor" /></mvc:interceptor></mvc:interceptors></beans>

说明:
下面这种/** 表示拦截的是所有请求
在这里插入图片描述
如果要放行某个路径,可在下面的标签进行配置
在这里插入图片描述
③测试拦截器效果是否实现
在控制器中新建一个类作为登录路径和主页main路径以及lgCheck检查登录的路径(简单模拟)


http://www.ppmy.cn/news/382976.html

相关文章

6.11 有名管道和无名管道

目录 进程间通讯介绍 System V IPC 无名管道 无名管道特点 无名管道创建-pipe 无名管道通信 无名管道-示例 有名管道特点 有名管道创建-mkfifo 有名管道读写-示例 进程间通讯介绍 无名管道&#xff08;pipe&#xff09; 有名管道 &#xff08;fifo&#xff09; 信号…

2023年5月电子学会真题图片缺失

各位粉丝儿&#xff1a; 因CSDN图片上传出现问题&#xff0c;很多5月的试卷缺失图片&#xff0c;已经反馈给CSDN&#xff0c;修复时间不确定&#xff0c;如需真题试卷&#xff0c;可私聊。 一个不太正经的编程老师

管理类联考——逻辑——知识篇——第四章 联言、选言(且、或)(5题,必考)

第四章 联言、选言&#xff08;且、或&#xff09;&#xff08;5题&#xff0c;必考&#xff09; 一、联言命题 联言命题是反映事物的若干种情况或者性质同时存在的复合命题 1.常见表达形式&#xff1a;A且B⟺即A又B⟺AB⟺虽然A但是B&#xff08;语气强调B&#xff0c;逻辑是…

【word wps文字】目录页码中的格式在打印或打印预览时变为和正文页码格式一样,如何调整?

一、问题背景 之前在闲鱼上&#xff0c;有个人找我改word排版&#xff0c;有一个需求就是正文页码两边需要横杠。 但是目录中显示的页码&#xff0c;不需要横杠。 我当时是一个一个在目录中删除横杠的&#xff0c;借助了查找与替换功能。 更改后&#xff0c;目录页码如下所…

投资理财-家庭和谐最重要

快到年底了&#xff0c;大家总结一年投资经验和记录&#xff0c;亏损的也不要齐磊&#xff0c;只要股票数量在&#xff0c;未来有一天总会涨起来的&#xff0c;坚持住。 如果是背着家庭成员去进行赌的&#xff0c;亏损的&#xff0c;老实交代&#xff0c;求取家人谅解了&#…

家庭心理教育

随着独生子女的普及&#xff0c;生活水平的提高&#xff0c;独生子女的家庭教育出现了这样那样的问题。最为明显的是家长对子女的百般溺爱和过多保护&#xff0c;对孩子提出的要求都想方设法给以满足&#xff0c;久而久之&#xff0c;孩子便形成一种理被包容、被关爱、被保护的…

孩子成长-家庭和二胎

人生&#xff0c;永远都会有问题的&#xff0c;但不要害怕&#xff0c;问题就是前进的方向。以你这两天展现出来的自我分析能力和解决问题的能力&#xff0c;你无论身处何种环境&#xff0c;总是能健康成长的。 家庭是个宝藏&#xff0c;藏着解决其他问题的钥匙。中国人很早就…

亲子关系与家庭教育

亲子关系作为人生中第一重要的人际关系&#xff0c;对其一生的发展有着重要的影响。要了解亲子关系的作用&#xff0c;首先要了解亲子关系的特点。1亲子关系的不可替代性是以血缘关系为基础的关系&#xff0c;是与生俱来的、不可替代的&#xff0c;即其他关系&#xff0c;如师生…