分享知识-快乐自己:SpringMVC 结合使用拦截器(判断是否用户是否已登陆)

基础拦截器操作:

  拦截器是一种AOP操作实现,那么在AOP之中用户一定不需要去关注拦截器的存在,用户只需要按照自己已经习惯的处理方式进行代码的编写即可。

首先我们先创建一个自定义的拦截器:

package integration.uitl;
import integration.bean.MlqUser;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class SysInterceptor extends HandlerInterceptorAdapter {
    /**
     * 进入拦截器后首先进入的方法
     * 返回false则不再继续执行
     * 返回true则继续执行
     */
    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response,Object handler)throws Exception
    {
        System.out.println("我是拦截器:我证明我进来了");
        HttpSession session=request.getSession();
        MlqUser userInfo = (MlqUser)session.getAttribute("UserInfo");
        if(userInfo==null)
        {
            System.out.println("我证明用户没有登录");
           response.sendRedirect(request.getContextPath()+"/401.jsp");
           return false;
        }
        System.out.println("我证明用户已经登录");
        return  true;
    }
    /**
     * 生成视图时执行,可以用来处理异常,并记录在日志中
     */
    @Override
    public void afterCompletion(HttpServletRequest request,
                                HttpServletResponse response,
                                Object arg2, Exception exception){
                //-----------------//
    }
    /** -
     * 生成视图之前执行,可以修改ModelAndView
     */
    @Override
    public void postHandle(HttpServletRequest request,
                           HttpServletResponse response,
                           Object arg2, ModelAndView arg3)
            throws Exception{
            //----------------------------//
    }
}

接下来我们来配置核心文件:CustomInterceptor.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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                       http://www.springframework.org/schema/beans/spring-beans.xsd
                       http://www.springframework.org/schema/aop
                       http://www.springframework.org/schema/aop/spring-aop.xsd
                       http://www.springframework.org/schema/tx
                       http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
                       http://www.springframework.org/schema/mvc
                       http://www.springframework.org/schema/mvc/spring-mvc.xsd
                       http://www.springframework.org/schema/context
                       http://www.springframework.org/schema/context/spring-context-3.2.xsd">
    <!--自定义拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/sys/**"/>
            <bean class="integration.uitl.SysInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

下面我们来说明一下: "/sys/**" 的意思:就是说我要拦截所有以 /sys 开头的访问路径,因为我Controller层 是这样编写的(可根据自己需求更改)

(加载时机:当我们直接访问 /sys/main 的时候,会先走我们自定义的拦截器。此时从Session中获取用户对象信息。若是有信息则是已经登陆了,直接返回 true 通过。否则就 重新跳转到登陆页面,返回 False)

Face your past without regret. Handle your present with confidence.Prepare for future without fear. keep the faith and drop the fear.

面对过去无怨无悔,把握现在充满信心,备战未来无所畏惧。保持信念,克服恐惧!一点一滴的积累,一点一滴的沉淀,学技术需要不断的积淀!

原文地址:https://www.cnblogs.com/mlq2017/p/9920574.html

时间: 2024-09-30 22:17:48

分享知识-快乐自己:SpringMVC 结合使用拦截器(判断是否用户是否已登陆)的相关文章

【SpringMVC学习11】SpringMVC中的拦截器

Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用方法. 1. springmvc拦截器的定义和配置 1.1 springmvc拦截器的定义 在springmvc中,定义拦截器要实现HandlerInterceptor接口,并实现该接口中提供的三个方法,如下: //测试拦截器1 public class HandlerInterceptor1 im

在SpringMVC中使用拦截器(interceptor)拦截CSRF攻击

关于什么是CSRF我这里就不多说了,以前转载的一篇文章(PS:https://www.zifangsky.cn/358.html)已经说得很清楚了.这里只是简单介绍如何在SpringMVC中使用拦截器拦截CSRF攻击.具体代码如下: (1)登录页面: <%@page import="java.security.SecureRandom"%> <%@ page language="java" contentType="text/html; 

SpringMVC学习(十二)——SpringMVC中的拦截器

SpringMVC学习(十二)--SpringMVC中的拦截器 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下SpringMVC中拦截器是如何定义的,以及测试拦截器的执行情况和使用方法. SpringMVC中拦截器的定义和配置 SpringMVC中拦截器的定义 在SpringMVC中,定义拦截器要实现HandlerInterceptor接口,并实现该接口中提供的三个方法,如下: public class Inter

SpringMVC(AbstractController,拦截器,注解)

1.Controller接口及其实现类 Controller是控制器/处理器接口,只有一个方法handleRequest,用于进行请求的功能处理(功能处理方法),处理完请求后返回ModelAndView对象(Model模型数据部分 和 View视图部分). 如果想直接在处理器/控制器里使用response向客户端写回数据,可以通过返回null来告诉DispatcherServlet我们已经写出响应了,不需要它进行视图解析 Spring默认提供了一些Controller接口的实现类以方便我们使用,

spring登录验证拦截器和根据用户角色登录

大家都知道spring的用户登录拦截器,确实省去了程序员不少的精力,下面说说我在项目中使用的感受. 德安微信管理后台是管理多个微信帐号的平台,登录到平台的用户有三个角色,游客和微信帐号管理员.超级管理员.超级管理员负责建立新的微信帐号.建立新的微信帐号管理员:微信帐号管理员负责维护微信菜单:微信图文消息:处理微信事件,发布产品介绍专题等:游客的功能有浏览.下单.手机号绑定等.基于此我们分配了三个用户角色:ROLE_TRAVELER.ROLE_ADMIN.ROLE_SUPER分别对应游客.微信帐号

java端拦截器判断客户的的请求是否是ajax请求

1 java端拦截器判断客户的的请求是否是ajax请求 2 3 4 发表于 2014-08-22 23:38:08 5 普通请求与ajax请求的报文头不一样,通过如下 6 7 String requestType = request.getHeader("X-Requested-With"); 8 9 如果requestType能拿到值,并且值为XMLHttpRequest,表示客户端的请求为异步请求,那自然是ajax请求了,反之如果为null,则是普通的请求 10 11 http:/

SpringMVC 自定义一个拦截器

自定义一个拦截器方法,实现HandlerInterceptor方法 public class FirstInterceptor implements HandlerInterceptor{ /** * 该方法在目标方法之前被调用. * 若返回值为 true, 则继续调用后续的拦截器和目标方法. * 若返回值为 false, 则不会再调用后续的拦截器和目标方法. * * 可以考虑做权限. 日志, 事务等. */ @Override public boolean preHandle(HttpServ

SpringMVC学习16-springmvc拦截器

1.定义拦截器 定义拦截器,实现HandlerInterceptor接口.接口中提供三个方法. public class HandlerInterceptor1 implements HandlerInterceptor { //进入 Handler方法之前执行 //用于身份认证.身份授权 //比如身份认证,如果认证不通过表示当前用户没有登陆,需要此方法拦截不再向下执行 @Override public boolean preHandle(HttpServletRequest request,

java SpringMVC Filter登录拦截器

SpringMVC框架是一个非常强大的java web框架,目前最主流的也是spring mvc的框架今天我们学习下springMVCd的登录拦截器Filter 首先呢,SpringMVC具有统一的入口DIspatcherServlet,所有请求都会通过DIspatcherServlet来进行处理 dispatcherServlet是前置控制器,配置在web.xml中,主要是用来拦截对应的请求,然后将请求根据对应的规则发送到Controller来进行处理 首先在web.xml中进行配置拦截请求