Springboot框架——3.整合SpringMVC

1.修改端口号:

        在application.properties中添加如下配置即可:

server.port=8088

2.静态资源访问:

        首先打开ResourceProperties这个类的源码:

        将静态资源放到类中默认位置即可实现访问:

        

        http://localhost:8088/erth.jpg

 3.拦截器:

        先定义个拦截器:

package com.lxj.interceptor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class LoginInterceptor implements HandlerInterceptor {

    private Logger logger=LoggerFactory.getLogger(LoginInterceptor.class);
    @Override
    public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler){
        logger.debug("执行前!");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView){
        logger.debug("执行后!");
    }

    @Override
    public void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex){
        logger.debug("跳转后!");
    }

    /*
     * 这里注意日志级别,默认显示info以上级别,如果显示更低级别需要在配置文件中配置 logging.level.com.lxj=debug */
}

        然后通过实现WebMvcConfigure并添加@Configuration注解来实现自定义拦截器:

package com.lxj.config;

import com.lxj.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    @Bean  //将LoginInterceptor拦截器注入到spring容器中
    public LoginInterceptor loginInterceptor(){
        return new LoginInterceptor();
    }

    @Override //重写接口方法,添加自定义拦截器
    public void addInterceptors(InterceptorRegistry registry){
        // registry注册拦截器
        // addPathPatterns添加拦截路径:
        //  '?'  匹配任何单字符
        //  '*'  匹配0或者任意数量字符
        //  '**' 匹配0或者更多目录
        registry.addInterceptor(this.loginInterceptor()).addPathPatterns("/**");
    }

}

        重新访问可以发现已执行对应的拦截器:

        可以发现比之前的spring繁琐的配置文件方便多了!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

bugku-web-xxx二手交易市场

这里直接来到一个交易平台 还是三板斧 源码查看 <script>$(#searchList li).click(function(){var type$(this).attr(aman-type);$(this).parent().find(li).attr(class,red);$(this).attr(class,red-on)search();});function search(){var url/index;var type$("#…

java通过maven导入本地jar包的三种方式

一、引入lib下加载&#xff08;加载过后打包&#xff0c;以后再次使用不用再次导入&#xff09; 首先创建一个用于创建jar包的项目&#xff0c;并测试能否成功运行 讲项目打包 在需要引入的项目中创建lib目录 并把刚才打包的jar复制进去 通过dependency引入jar包 groupId、art…

【安装部署】Apache SeaTunnel 和 Web快速安装详解

版本说明 由于作者目前接触当前最新版本为2.3.4 但是官方提供的web版本未1.0.0&#xff0c;不兼容2.3.4&#xff0c;因此这里仍然使用2.3.3版本。 可以自定义兼容处理&#xff0c;官方提供了文档&#xff1a;https://mp.weixin.qq.com/s/Al1VmBoOKu2P02sBOTB6DQ 因为大部分用…

详解数据中台,附案例

&#xff08;一&#xff09;什么是数据中台&#xff0c;有什么价值&#xff1f; 数据中台居于前台和后台之间&#xff0c;是企业级的数据共享、能力复用平台&#xff0c;是数字 化转型的基础和中枢系统。将企业全域海量、多源、异构的数据整合资产化&#xff0c;为业务前台提供…

使用TVM在树莓派部署yolov8模型(二)

这部分主要记录部署环境的搭建。 在电脑或服务器上编译&#xff0c;需要搭建完整的TVM工具链&#xff1b;树莓派上仅负责运行&#xff0c;因此只编译runtime即可。 先从简单的开始 一 在树莓派上编译runtime 我的树莓派是新装的系统&#xff0c;那就从头搭建环境吧。 我用的树…

发布!DolphinDB 白皮书正式上线官网!

对广大数据库用户而言&#xff0c;白皮书是极具参考价值的使用指南和学习手册。白皮书不但能深入剖析数据库的基础概念与架构&#xff0c;协助用户了解数据库的工作原理和应用技巧&#xff0c;更提供了丰富的实践案例&#xff0c;帮助用户从中汲取经验&#xff0c;避免在实际应…

在微信上怎么实现预约功能

在快节奏的现代生活中&#xff0c;时间成为了我们最宝贵的财富。无论是看病、理发、还是参加各类培训&#xff0c;等待往往成为了一个难以避免的“拦路虎”。为了解决这一痛点&#xff0c;微信预约功能应运而生&#xff0c;它不仅为我们的生活带来了极大的便利&#xff0c;更成…

文章解读与程序——资源回顾

综合能源是指利用多种能源形式&#xff0c;如化石能源、可再生能源和核能等&#xff0c;通过综合、灵活的方式满足能源需求。这种综合利用能源的方式旨在提高能源利用效率&#xff0c;减少能源消耗对环境的影响&#xff0c;并促进能源系统的可持续发展。 电力系统规划是指对电…

Android,AMS、WMS、PKMS添加动态控制debug开关功能

问题背景 在framework源码中有很多debug开关,通常我们想要看某个模块的日志,比如说广播,就需要去修改源码,把对应的debug值改为true,但是这种方法耗时耗力,比如说我想看sendBroadcast的流程,但是BroadcastQueue中有很多debug开关,如下: 这种就需要去修改对应的源码才…

PFA移液枪头为什么比普通塑料枪头贵这么多?

移液枪头是用于移液器的一次性适配枪头&#xff0c;可在各种研究应用中准确、精确、一致地转移少量液体。 PFA移液枪头&#xff0c;金属元素空白值低&#xff08;铅、铀含量小于0.01ppb)&#xff0c;化学性能好&#xff0c;可重复使用。 目前市场上的规格&#xff1a;0.01ml、…

C语言-字符函数与字符串函数

在C语言中&#xff0c;我们经常要对字符或是字符串进行各种操作。那C语言究竟给了我们哪些方法呢&#xff0c;本篇文章就是让大家了解对字符和字符串处理相关的知识。 目录 1.字符函数 1.1字符分类函数 1.2字符转换函数 2.字符串函数 2.1strlen函数的使用和模拟实现 2.2…

腾讯云幻兽帕鲁一键开服教程

腾讯云作为领先的云计算服务提供商&#xff0c;为广大用户提供了便捷、高效的游戏服务器搭建解决方案。其中&#xff0c;幻兽帕鲁一键开服功能&#xff0c;更是让游戏开服变得简单易懂。本文将为大家详细介绍腾讯云幻兽帕鲁一键开服的步骤&#xff0c;帮助大家轻松搭建自己的游…

cesium 指定点旋转rectangle Primitive方式 矩阵篇

cesium中rectangle是水平垂直于正北方向的&#xff0c;rectangle的属性中有rotation&#xff0c;但是rotation是以矩形的中心点进行旋转的&#xff0c;旋转过程中矩形的形状可能会变形&#xff0c;如果需要以矩形的顶点为原点进行旋转&#xff0c;可以采用primitive的方式添加p…

详解playwright 官方Javascript demo(适合小白)

如果大家刚上手playwright&#xff0c;并看到了Javascript脚本的官方demo&#xff0c;代码如下&#xff1a; const { webkit } require(playwright);(async () > {const browser await webkit.launch();const page await browser.newPage();await page.goto(http://what…

uni-starter的微信登录拿不到登录者的昵称,头像,手机号问题记录

uni-starter的微信登录竟然拿不到登录者的昵称&#xff0c;头像&#xff0c;手机号 获取手机号的方法在另外一篇文章中&#xff0c;需要认证&#xff0c;需要有营业执照 uni.login({"provider": type,"onlyAuthorize": true,// #ifdef APP"univerif…

嵌入式工程师如何利用周末提升自己?

提升自己一定要趁早&#xff0c;这是作为中年人的我&#xff0c;对年轻人的忠告。 以前年轻&#xff0c;觉得时间多&#xff0c;总是幻想着&#xff0c;很多人也大器晚成啊&#xff0c;晚点努力也不晚。 前阵子小米汽车火了&#xff0c;雷总说这是他最后一次重大创业&#xff0…

GEE APP——土壤水分资源管理器

摘要 由于土壤水分含量与地球气候和天气以及干旱、洪水或山体滑坡等现象有关,因此对许多科学和专业用户来说都非常宝贵。遥感技术为连续测量这一变量提供了独特的可能性。特别是在农业领域,对高空间分辨率绘图的需求非常强烈。然而,目前可操作的土壤水分产品只有中粗空间分…

RS232、RS485、RS422、TTL、CAN各自的区别

目录 一&#xff1a;工业串口通信标准RS232、RS485、RS422的区别 第一个区别、硬件管脚接口定义不同 第二个区别、工作方式不同 第三个区别、通信方式不同 第四个区别&#xff0c;逻辑特性不同 第五个区别、抗干扰性、传输距离和传输速率也不同 二&#xff1a;RS232、RS…

判断字符串为空的几种方法

1,关于null和""的区别&#xff1a; &#xff08;1&#xff09; null表示不指向任何东西&#xff0c;调用的话会报空指针异常&#xff1b; 空字符串""表示一个长度为0的字符串&#xff0c;调用是安全的&#xff1b; &#xff08;2&#xff09; null 不是对象…

LLM推理中的参数:beam_search、num_sequences、do_sample、temperature、top_k、top_p

原文&#xff1a; https://huggingface.co/blog/how-to-generate beam_search&#xff1a;动态规划每个step保留几个top解&#xff1b; num_sequences: generate输出几个top序列。num_sequences<beam_search。 do_sample: 设为True&#xff0c;则每个输出都进行采样&#…