srpingboot拦截器
1、创建一个普通的web工程。
2、先创建需要的基础文件,比如一个用户类。
- package com.example.mode;
- public class User {
- private Integer id;
- private String name;
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
再创建一个监听类,这个类继承自HandlerInterceptor,然后,在这个类里就可以处理一些监听到的信息,比如有的登陆,有的没有登陆。
- package com.example.interceptor;
- import com.example.mode.User;
- import org.springframework.web.servlet.HandlerInterceptor;
- import org.springframework.web.servlet.ModelAndView;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class MyInterceptor implements HandlerInterceptor {
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- //这里编写拦截规则,可以从session中获取用户信息,这个名为user的attribute对象如果为空,就返回error,因为没有登陆
- // 如果这个对象存在,就返回true,不做任何处理。
- User user= (User) request.getSession().getAttribute("user");
- if(user==null) {
- response.sendRedirect(request.getContextPath()+"/user/error");
- return false;
- }
- return true;
- }
- @Override
- public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
- }
- @Override
- public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
- }
- }
这里还要建一个监听配置类,这个配置类来决定监听的对象集合,监听的类型,这里主要是监听web网页,所以,还要实现一个
- WebMvcConfigurer接口,然后重写这个接口里的addInterceptor程序,把上面的MyInterceptor监听类,添加到web网页监听中去。
- package com.example.config;
- import com.example.interceptor.MyInterceptor;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
- @Configuration
- public class MyInterceptorConfig implements WebMvcConfigurer {
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- //要拦截的路径集合
- String[] addPathPatterns={"/user/**"};
- //要排除的路径集合
- String[] excludePathPatterns={"/user/out","/user/error","/user/login"};
- //将规则集合添加到注册中
- registry.addInterceptor(new MyInterceptor())
- .addPathPatterns(addPathPatterns)
- .excludePathPatterns(excludePathPatterns);
- }
- }
这些工作都做完了,现在可以去编写控制类了,
- package com.example.control;
- import com.example.mode.User;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import javax.servlet.http.HttpServletRequest;
- //这个注释是表明这个类是一个Controller,还有就是以下所有方法都带ResponseBody
- @RestController
- //这里是为了方便,以后所有的指向都会默认指向/user/后面的路径了
- @RequestMapping("/user")
- public class MyController {
- // 以下为登陆方法,在里面可以检查登陆信息,然后填充request对象,再定向到需要的页面。
- @RequestMapping("/login")
- public Object login(HttpServletRequest request){
- User user=new User();
- user.setId(1001);
- user.setName("翠花");
- request.getSession().setAttribute("user",user);
- return "登陆成功";
- }
- // 登陆成功以后,定位到用户中心页面
- @RequestMapping("/center")
- public Object center(HttpServletRequest request){
- User user=(User) request.getSession().getAttribute("user");
- return "欢迎编号为:"+user.getId()+" 用户:"+user.getName();
- }
- // 没有登陆的用户访问的内容
- @RequestMapping("/out")
- public Object out(){
- return "普通用户访问页面";
- }
- // 当非登陆用户访问到某些页面时会定向到出错页面。
- @RequestMapping("/error")
- public Object error(){
- return "请登陆后再访问,谢谢!";
- }
- }
然后就可以直接运行了。
srpingboot拦截器的更多相关文章
- 6. ModelDriven拦截器、Preparable 拦截器
1. 问题 Struts2 的 Action 我们将它定义为一个控制器,但是由于在 Action 中也可以来编写一些业务逻辑,也有人会在 Action 输入业务逻辑层. 但是在企业开发中,我们一般会将 ...
- springmvc的拦截器
什么是拦截器 java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...
- Struts的拦截器
Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...
- Struts2拦截器的执行过程浅析
在学习Struts2的过程中对拦截器和动作类的执行过程一度陷入误区,特别读了一下Struts2的源码,将自己的收获分享给正在困惑的童鞋... 开始先上图: 从Struts2的图可以看出当浏览器发出请求 ...
- 学习SpringMVC——拦截器
拦截器,顾名思义就是用来拦截的. 那什么是拦截,又为什么要拦截.对于Spring MVC来说,拦截器主要的工作对象就是用户的请求,拦截下来之后,我们可以在拦截的各个阶段悉心呵护[为所欲为].常见的比如 ...
- alias拦截器的使用
在SSH项目中,有时需要由一个Action跳转到另一个Action.有两种方式可以实现Action之间的跳转,一种是chain,另一种是redirectAction,这两种方式之间的区别是chain是 ...
- Struts2入门(二)——配置拦截器
一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...
- 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录
java web工程项目使用了Spring+Spring MVC+Hibernate的结构,在Controller中的方法都是用于处理前端的访问信息,Controller通过调用Service进行业务 ...
- spring 拦截器
1.mvc.xml <!-- 自定义拦截链配置 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping p ...
随机推荐
- 描述一下 DispatcherServlet 的工作流程 ?
DispatcherServlet 的工作流程可以用一幅图来说明: 1.向服务器发送 HTTP 请求,请求被前端控制器 DispatcherServlet 捕获. 2. DispatcherServl ...
- 转载:平衡二叉树(AVL Tree)
平衡二叉树(AVL Tree) 转载至:https://www.cnblogs.com/jielongAI/p/9565776.html 在学习算法的过程中,二叉平衡树是一定会碰到的,这篇博文尽可能简 ...
- NetCore微服务实现事务一致性masstransit之saga使用
demo如下,一个订单处理的小例子: 首先看看结果很简单: 核心代码如下: using MassTransit; using Microsoft.Extensions.DependencyInject ...
- Noob渗透笔记
靶机下载地址:https://www.vulnhub.com/entry/noob-1,746/ kali ip 信息收集 依旧我们先使用nmap扫描确定一下靶机ip nmap -sP 192.168 ...
- (stm32f103学习总结)—待机唤醒实验
一.STM32待机模式介绍 1.1 STM32低功耗模式介绍 很多单片机具有低功耗模式,比如MSP430.STM8L等,我们的STM32 也不例外.默认情况下,系统复位或上电复位后,微控制器进入运行模 ...
- html 不常用标签介绍
文本元素 <wbr> 如果单词太长,或者您担心浏览器会在错误的位置换行,那么您可以使用 <wbr> 元素来添加 Word Break Opportunity(单词换行时机).英 ...
- 删除html标签或标签属性以及样式
JavaScript module for stripping HTML tags and/or HTML element attributes from strings. 安装 npm instal ...
- H5移动端开发
开发前准备 环境: Node.js LTS版本 git 最新版 文档: 本项目技术栈基于 ES2016 VueJS vux 快速开始 1.克隆项目 git clone https://gitee.co ...
- spark配置双master时一直处于standby的情况
一.情况描述 按照如下配置,使用zookeeper监听 SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspa ...
- 【Android开发】【布局】 仿QQ的UI
Demo地址