千家信息网

SSM项目中怎么使用拦截器和过滤器

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"SSM项目中怎么使用拦截器和过滤器"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、
千家信息网最后更新 2026年11月02日SSM项目中怎么使用拦截器和过滤器

本篇内容介绍了"SSM项目中怎么使用拦截器和过滤器"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、拦截器概述

Spring MVC 也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定 的功能,自定义的拦截器必须实现 HandlerInterceptor 接口

  • preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进行处理。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他 的拦截器,或者是业务处理器去进行处理,则返回 true;如果程序员决定不需要 再调用其他的组件去处理请求,则返回 false。

  • postHandle():这个方法在业务处理器处理完请求后,但是 DispatcherServlet向客户端返回响应前被调用,在该方法中对用户请求 request 进行处理。

  • afterCompletion():这个方法在 DispatcherServlet 完全处理完请求后被调用,可以 在该方法中进行一些资源清理的操作。

二、拦截器配置步骤

1、创建一个拦截器(实现HandlerInterceptor接口)

package com.ssm.Interceptor;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 {    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {        //获取请求的URL        String requestURI=request.getRequestURI();        HttpSession session=request.getSession();        Object userInfo=request.getSession().getAttribute("USERINFO");        System.out.println("链接:"+requestURI+"进入拦截器");        if(userInfo==null){ //表示未登录就想进入系统            //直接重定向到登录界面            String serverPath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/index.jsp";            response.sendRedirect(serverPath);            return false;        }else{            //登陆成功,不拦截            return true;        }    }    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {        System.out.println("跳转后拦截");    }    @Override    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {        System.out.println("渲染后拦截");    }}

这个拦截器我只是写个Demo,所以只进行了是否登录的验证,真正的项目中你也可以在这里进行一些权限的判断等等。

2、配置拦截器

                                                                                                                                                                                                                                                                                                                                                                                                                

由于配置了会拦截所有资源,我们必须用标签放行静态资源和一些不用拦截的请求(登录等等)。是第一步创建的拦截器。

3、测试下拦截器:

在地址栏输入个非法的请求试试

通过地址栏可以看到,页面已经被重定向到了登陆界面,拦截成功。
但是拦截器并不能拦截jsp页面的访问,这个时候两种选择:
1、将所有jsp页面都放在WEB-INF目录下
2、用Servlet过滤器(虽然感觉技术有点老了)

三、过滤器概述

Servlet过滤器主要用于对客户端(浏览器)的请求进行过滤处理,然后将过滤后的请求转交给下一资源。

四、过滤器配置步骤

1、创建一个过滤器(实现Filter接口)

package com.ssm.Filter;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;//自定义过滤器public class LoginFilter implements Filter {    //初始化方法    @Override    public void init(FilterConfig filterConfig) throws ServletException {     //初始化处理        System.out.println("过滤器初始化");    }    @Override    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {        //过滤处理        //servletRequest 是个接口,HttpServletRequest 是实现,但是有些方法是HttpServletRequest独有的,如:getSession        //HttpServletRequest接口是继承servletRequest接口,增加了和http相关的方法        HttpServletRequest request= (HttpServletRequest) servletRequest;        HttpServletResponse response= (HttpServletResponse) servletResponse;//        String requestURI=request.getRequestURI();//        System.out.println("链接:"+requestURI+"进入过滤器");        HttpSession session=request.getSession();        if(session.getAttribute("USERINFO")==null){            //非法请求,直接跳转到登陆界面            String serverPath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/index.jsp";            response.sendRedirect(serverPath);        }else{            //正常登录,放行            filterChain.doFilter(request,response);        }    }    @Override    public void destroy() {     //释放资源        System.out.println("过滤器销毁");    }}

2、配置web.xml

            LoginFilter        com.ssm.Filter.LoginFilter          LoginFilter            /views/*  

各个标签的解释都写在注释里面了,至于需要过滤的资源,你可以根据自己的需求再添加,我主要是想把views目录下面的jsp全部过滤。

"SSM项目中怎么使用拦截器和过滤器"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

拦截器 处理 过滤器 方法 接口 资源 登录 配置 项目 业务 处理器 用户 界面 页面 登陆 成功 内容 地址 客户 客户端 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南真二互联网科技有限公司 麻工互联网科技 喔噻互联网科技 凡科互联网科技 华中科技大学互联网 南京欣网互联网科技 互联网金融 科技创新 重庆威客帮互联网科技 福建科技产业互联网发展 健康食品互联网创新科技园项目 如何创新互联网科技 南博望互联网科技有限公司 互联网第三次科技革命特征 互联网科技快讯热点 本届互联网大会上的黑科技 风投北京互联网科技 互联网硬科技公司 抖集互联网科技技术咨询 陕西九四连强互联网科技有限公司 互联网科技收购价值 互联网金融 科技 金融科技与互联网金融 互联网金融公司科技 中国互联网有什么科技含量 哈尔滨屹滨互联网科技有限公司 开一家科技互联网公司需要多少钱 链环科技传统企业怎么转型互联网 珠海东科互联网科技有限公司 山东蛋芒互联网科技有限公司 安徽九吞吴互联网科技有限公司
0