首页 > 其他分享 >SpringMVC拦截器使用

SpringMVC拦截器使用

时间:2023-01-08 20:25:36浏览次数:35  
标签:拦截器 登录 SpringMVC request 使用 拦截 进行

SpringMVC拦截器

拦截器是用来干什么的?

在一个登录功能中,如果用户没有登录却尝试通过地址栏直接访问内部服务器资源,这显然是非法的。怎样对这些的非法访问进行拦截? SpringMVC的拦截器可以解决这个问题。

使用拦截器

编写拦截器

创建拦截器类,实现HandlerInterceptor接口按需要实现preHanlder、postHanlder、afterCompeletion方法,这些方法的返回值是boolean型,为true表示不进行拦截,false表示进行拦截,这些方法有默认实现,按需求实现即可

preHanlder方法:在访问资源之前执行

postHanlder方法:在进行响应之前执行

afterCompeletion方法:在进行响应之后执行
image

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if(request.getSession().getAttribute("name") == null){//用户未登录
            request.setAttribute("msg","您还没有登录,请先登录!");
            return false;//进行拦截
        }else{
            return true;//不进行拦截
        }
    }
}

修改配置文件

修改springmvc.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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <context:component-scan base-package="com.tzq"></context:component-scan>
    <mvc:annotation-driven></mvc:annotation-driven>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
    <!--注册拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/><!--要拦截哪些路径,/**表示拦截所有路径-->
            <mvc:exclude-mapping path="/showLogin"/><!--不进行拦截的路径-->
            <mvc:exclude-mapping path="/login"/>
            <!--拦截器实现类,可以有多个,形成拦截链,责任链设计模式-->
            <bean class="com.tzq.springmvc.interceptor.LoginInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

在浏览器地址栏中输入http:localhost:8080/main后,由于进行了拦截,出现404错误无法访问
image

标签:拦截器,登录,SpringMVC,request,使用,拦截,进行
From: https://www.cnblogs.com/taoziblog/p/17035250.html

相关文章

  • react hooks forwardRef, useImperativeHandle使用
    1、React.forwardRefReact.forwardRef 会创建一个React组件,这个组件能够将其接受的 ref 属性转发到其组件树下的另一个组件中。React.forwardRef 接受渲染函数作为参......
  • 群晖中使用Docker安装Gitlab
    使用群晖NAS220+有段时间了,最近想着省电&统一入口,把家里服务器上的gitlab移植到群晖中。折腾了一个早上,搞定了。简单记录下步骤:安装1.安装docker在套件中心搜索到do......
  • SpringBoot——Swagger2的集成和使用
    前言现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的沟通成本就增加了。所以一款强大的RESTfulAPI文档就至关重要了。而目前在后端领域,基本......
  • SpringBoot——Redis 的集成和简单使用
    前言在实际工作中,在存储一些非结构化或者缓存一些临时数据及热点数据时,一般上都会用上mongodb和redis进行这方面的需求。所以本文准备讲下缓存数据库Redis的集成,同时会介......
  • 在Chrome中使用Feedbro订阅RSS信息流
    Chrome插件英雄榜096《Feedbro》在Chrome中订阅RSS信息流RSS是一种标准的网站内容投递协议,通过解析RSS我们可以获取网站的内容更新。Feedbro是一款可以在浏览器中直接......
  • SpringBoot——定时任务的使用
    前言在JAVA开发领域,目前可以通过以下几种方式进行定时任务:Timer:jdk中自带的一个定时调度类,可以简单的实现按某一频度进行任务执行。提供的功能比较单一,无法实现复杂的调......
  • SpringBoot——常用注解介绍及简单使用
    常用注解@SpringBootApplication前几章,在系统启动类里面,都加入了此启动注解,此注解是个组合注解,包括了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentSc......
  • SpringBoot——过滤器、监听器、拦截器
    前言在实际开发过程中,经常会碰见一些比如系统启动初始化信息、统计在线人数、在线用户数、过滤敏高词汇、访问权限控制(URL级别)等业务需求。这些对于业务来说一般上是无关......
  • SpringBoot——Mybatis-plus的集成和使用
    前言对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数据库持久化框架。Mybatis-Plus......
  • 【SpringBoot实战专题】「开发实战系列」从零开始教你舒服的使用RedisTemplate操作Red
    SpringBoot快速操作Redis数据在SpringBoot框架中提供了spring-boot-starter-data-redis的依赖组件进行操作Redis服务,当引入了该组件之后,只需要配置Redis的配置即可进行链......