SpringBoot:拦截器,过滤器,打包与运行

news2024/11/29 10:35:10

目录

一、拦截器

1、创建实现类实现HandlerInterceptor 接口

2、注册拦截器对象

二、过滤器

拦截器与过滤器区别

三、打包运行windows版(jar包,war包)

1、打包为jar包

2、打包为 war包


一、拦截器

拦截器(Interceptor )是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行

作用:

在指定的方法调用前后执行预先设定的代码

阻止原始方法的执行

示例:

1、创建实现类实现HandlerInterceptor 接口

public class SysIntercerptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        //判断用户是否登录
        User user = (User) session.getAttribute(Constants.USER_SESSION);
        if (user == null){
            System.out.println("用户未登录");
            String path = request.getContextPath() + "/";
            response.sendRedirect(path);
            return false;
        }
        return true;
    }
}

2、注册拦截器对象

@Configuration
public class SmbmsInterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //拦截的路径表达式
        String[] path = {"/sys/**","/provider/**"};
        //不拦截的路径表达式
        String[] excludePath = {"/sys/add.do"};
        //放行
        registry.addInterceptor(new SysIntercerptor()).addPathPatterns(path).excludePathPatterns(excludePath);
    }
}

二、过滤器

定义一个过滤器类Filter,在类的上方使用 @WebFilter指定过滤路径和@Component注解即可

注意:若创建的过滤器类不在启动类所在的包下面,则需要在启动类上面增加注解

@ServletComponentScan(basePackages=过滤器类所在包路径)

示例:

@Component
@WebFilter(value = {"/sys/**","/provider/**"})//过滤请求路径
public class SmbmsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        //获取请求参数
        Map<String,String[]> stringMap = request.getParameterMap();
        //遍历请求方式
        if (stringMap != null){
            stringMap.forEach((k,v) ->{
                System.out.println(k);
                if (v != null){
                    for (String s : v) {
                        System.out.println(s);
                    }
                }
            });
        }
        //放行
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

拦截器与过滤器区别

归属不同:Filter属于Servlet技术,Interceptor属于SpringMVc技术

拦截内容不同:Filter对所有访问进行增强,Interceptor仅针对SpringMVC的访问进行增强

三、打包运行windows版(jar包,war包)

1、打包为jar包

1、springboot默认打包为jar包,点击package

2、 找到打包好的文件,在搜索框输入cmd

3、 输入java -jar 文件名称

结束运行:ctrl+c

2、打包为 war包

1、主启动类继承 SpringBootServletInitializer

示例:

public class SpringBootSmbmsApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootSmbmsApplication.class, args);
    }

}

继承 SpringBootServletInitializer 可以使用外部 tomcat。

SpringBootServletInitializer 就是原有的 web.xml 文件的替代。使用了嵌入式 Servlet,默认是不支

持 jsp。

2、修改pom文件中的packaging标签为:<packaging>war</packaging>

properties标签中配置跳过测试

<skipTests>true</skipTests>

3、打包

找到打包好的war包放入本地tomcat中webapp包中,找到tomcat的bin目录,点击startup.bat运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉搜索树——BinarySearchTree

致前行的人&#xff1a; 要努力&#xff0c;但不要着急&#xff0c;繁花锦簇&#xff0c;硕果累累&#xff0c;都需要过程&#xff01; 目录 1.二叉搜索树 1.1二叉搜索树概念 1.2二叉搜索树的操作 1.3二叉搜索树的实现 2.4二叉搜索树的应用 2.5二叉搜索树的性能分析 2.二…

不用U盘 重装系统(别再浪费钱去电脑城装系统了)

不用U盘 重装系统&#xff08;别再浪费钱去电脑城装系统了&#xff09; 首先打开浏览器&#xff0c;搜索MSDN回车&#xff0c;选择第一个网站 点击操作系统 往下拉找到win10专业版 选择&#xff08;business editions&#xff09;和 (x64) 打开迅雷&#xff0c;点击新建&a…

高德地图开发实战案例:使用Loca数据源展示海量点标注(海量点、自定义分类图标、聚合、信息提示、3D控件)

系列文章目录 高德地图开发实战案例:弧线连接线标注高德地图开发智慧社区网格化数据格式产生的无法单击事件的解决方案高德地图进阶开发实战案例(1):webAPI坐标转换和jsAPI批量转换高德地图进阶开发实战案例(2):电子围栏&#xff08;多边形的绘制&#xff09;的展示高德地图进…

与chatGPT的第一次亲密接触

最近&#xff0c;chatGPT火了&#xff0c;不管传统媒体&#xff0c;还是各种自媒体平台都在说它。今天我突然也想注册一个玩玩&#xff0c;注册前2步还行&#xff0c;但是等点开邮箱校验时&#xff0c;打开网页显示&#xff1a; 上网查了一下&#xff0c;没向中国开放服务&…

Java高手速成 | 对象-关系的映射、映射对象标识符与JPA API的级联操作

01、对象-关系的映射概念 Java对象和关系数据库存在一些简单的映射关系&#xff0c;比如Customer类与CUSTOMERS表映射&#xff0c;一个Customer对象与CUSTOMERS表中的一条记录映射&#xff0c;Customer类的name属性与CUSTOMERS表的NAME字段映射。 但是&#xff0c;毕竟对象模型…

有了独自开,一个人就是一个团队

文章目录 简单介绍优点 优秀案例平台福利总结 简单介绍 独自开是一个基于商品与服务交易全流程的PaaS开发平台。对于开发者&#xff0c;独自开可以协助开发者一个人独自开发一套系统。 优点 独自开有独创的分层标准化平台架构&#xff0c;可以满足系统的任何个性化需求。 …

PICT:一款功能强大的信息收集和事件响应工具

关于PICT PICT是一款功能强大的信息收集和事件响应工具&#xff0c;该工具可以帮助广大研究人员在受感染的终端节点中收集各种信息&#xff0c;以辅助进行网络安全事件应急响应。这些数据可能不够完整&#xff0c;但确实能够捕捉到很多有价值的取证信息。如果你想要获取完整的…

搜广推 隐语义模型(LMF)与矩阵分解(MF)

😄 MF的出现就是为了解决CF处理稀疏矩阵能力弱的问题,增强泛化能力。挖掘用户和物品的隐含兴趣和隐含特征。 ⭐ 在这里隐语义模型LMF在这里也就是利用MF对用户评分矩阵分解出来的用户隐向量矩阵、物品隐向量矩阵,然后基于这两个矩阵就可以计算得分,完成推荐任务。 🚀 MF…

我猜这将是程序员副业接单赚外快的最好的平台!

文章目录一、前言二、【独自开】介绍2.1 分层标准化平台架构2.2 集成第三方数字接口2.3 支持各个行业的系统定制开发三、如何在【独自开】赚钱获取收益?3.1 如何称为【独自开】开发者?3.2 如何领取任务赚取收益四、【独自开】优秀案例4.1 家政服务平台4.2 优选商城五、【独自…

设计模式之观察者模式,以C++为例。

今天来准备浅浅的过一下观察者模式&#xff0c;观察者模式也叫作&#xff1a;发布者订阅者模式。该模式的特点是多个对象依赖一个对象&#xff0c;为一对多依赖关系&#xff0c;每当一个对象改变时&#xff0c;所有依赖它的对象都会得到通知并自动更新&#xff0c;该模式主要维…

MySQL数据同步到ES集群(MySQL数据库与ElasticSearch全文检索的同步)

简介&#xff1a;MySQL数据库与ElasticSearch全文检索的同步&#xff0c;通过binlog的设置对MySQL数据库操作的日志进行记录&#xff0c;利用Python模块对日志进行操作&#xff0c;再利用kafka的生产者消费者模式进行订阅&#xff0c;最终实现MySQL与ElasticSearch间数据的同步…

C++类和对象:面向对象编程的核心。| 面向对象还编什么程啊,活该你是单身狗。

&#x1f451;专栏内容&#xff1a;C学习笔记⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;日拱一卒&#xff0c;功不唐捐 文章目录一、前言二、面向对象编程三、类和对象1、类的引入2、类的定义Ⅰ、声明和定义在一起Ⅱ、声明和定义分开Ⅲ、成员变量命…

ChatGPT 怎么注册使用最新详细教程-新手小白

2022年11月30日chatGPT发布&#xff0c;一年时间风靡全美&#xff0c;甚至有调查&#xff0c;美国89%的大学生用chatGPT做作业&#xff0c;微软用100亿美元投资了该公司&#xff0c;这也引起了google的紧张&#xff0c;神经语言、人工智能、颠覆未来&#xff0c;成为描述chatGP…

VR博物馆带你走进云端,感受数字时代的力量

博物之志&#xff0c;以文化人&#xff0c;为了打破传统线上静态的博物馆图片&#xff0c;VR博物馆给民众带来了全新的视听体验&#xff0c;突破天气、交通、客流量等传统旅游限制问题&#xff0c;在VR全景中还能将线下博物馆的多媒体影响也逐一呈现出来&#xff0c;接下来让我…

ChatGPT给程序员人手一个,这很朋克(由ChatGPT编写)

目录ChatGPT、程序员、朋克为什么程序员需要ChatGPT&#xff0c;为什么这很朋克总结ChatGPT、程序员、朋克 本文由ChatGPT编写。 ChatGPT是由OpenAI开发的大型语言模型。它的核心功能是生成人类语言文本&#xff0c;因此有多种应用场景&#xff0c;如文本生成、对话生成、文本…

FlexGanttFX 11.12.6 Crack

FlexGanttFX 是 JavaFX 的调度和资源规划组件。它允许开发人员通过 CSS 以及可插入渲染器和编辑策略的使用来自定义其外观和行为的每个方面。FlexGanttFX 利用场景图/场景节点和画布 API 的完美组合&#xff0c;确保即使是最大的数据集也可以快速呈现。FlexGanttFX 不仅外表漂亮…

【java】遍历set集合,iterator遍历TreeSet,增强for循环遍历,set排序

目录 1. 增强for循环遍历&#xff08;底层还是用iterator实现的&#xff09;2.iterator遍历TreeSet3.说明4.补充测试用的集合来自上篇&#xff1a;https://blog.csdn.net/qq_43622777/article/details/128924730 1. 增强for循环遍历&#xff08;底层还是用iterator实现的&#…

服务异步通信 RabbitMQ

服务异步通信 RabbitMQRabbitMQ快速入门RabbitMQ概述和安装常见消息模型HelloWorld案例SpringAMQPBasic Queue 简单队列模型消息发送消息接收测试WorkQueue消息发送消息接收测试能者多劳总结发布/订阅Fanout声明队列和交换机消息发送消息接收总结Direct基于注解声明队列和交换机…

Ubuntu 22.04 LTS 入门安装配置优化、开发软件安装一条龙

Ubuntu 22.04 LTS 入门安装配置&优化、开发软件安装 例行前言   最近在抉择手上空余的笔记本&#xff08;X220 i7-2620M&#xff0c;Sk Hynix ddr3 8G*2 &#xff0c;Samsung MINISATA 256G&#xff09;拿来运行什么系统比较好&#xff0c;早年间我或许还会去继续使用Win…

urllib基础+xpath基础(爬虫基础_1)

文章目录1 urllib库的使用1.1 urllib.request发送请求获得响应数据一个类型六个方法内容下载定制请求对象1.2 urllib.parseget请求编码post请求编码1.3 ajax的get请求示例1.4 ajax的post请求示例1.5 Handler处理器1.6 代理服务器2 解析2.1 xpath2.2 JsonPath2.3 BeautifulSoup1…