首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Springboot中的GetMapping排除路径变量中的html文件

在Spring Boot中,@GetMapping注解用于映射HTTP GET请求到特定的处理方法。如果你想要排除路径变量中的HTML文件,可以通过配置Spring MVC的HandlerInterceptor或者使用@RequestMappingexcludePathPatterns属性来实现。

基础概念

  • @GetMapping: 这是Spring MVC提供的一个注解,用于将HTTP GET请求映射到特定的处理器方法。
  • 路径变量: 在URL中可以定义一些变量,通过{variableName}的形式来表示,这些变量可以在控制器方法中作为参数获取。
  • HandlerInterceptor: Spring MVC中的一个接口,用于在请求处理的不同阶段执行自定义逻辑,如请求预处理、后处理等。

类型

  • 全局拦截器: 通过实现WebMvcConfigurer接口并重写addInterceptors方法来注册全局的拦截器。
  • 局部拦截器: 可以通过在控制器类或方法上使用@ControllerAdvice@ExceptionHandler注解来实现局部拦截。

应用场景

当你想要阻止某些特定的URL模式(例如包含HTML文件的路径)被@GetMapping处理时,可以使用上述方法。

解决问题的方法

方法一:使用HandlerInterceptor

代码语言:txt
复制
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

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

@Component
public class HtmlFileInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String uri = request.getRequestURI();
        if (uri.endsWith(".html")) {
            response.sendError(HttpServletResponse.SC_FORBIDDEN, "HTML files are not allowed.");
            return false;
        }
        return true;
    }
}

然后在配置类中注册这个拦截器:

代码语言:txt
复制
import org.springframework.beans.factory.annotation.Autowired;
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 WebConfig implements WebMvcConfigurer {

    @Autowired
    private HtmlFileInterceptor htmlFileInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(htmlFileInterceptor);
    }
}

方法二:使用excludePathPatterns

如果你使用的是Spring Boot 2.6及以上版本,可以在@RequestMapping注解中使用excludePathPatterns属性来排除特定的路径模式:

代码语言:txt
复制
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(excludePathPatterns = "*.html")
public class MyController {

    @GetMapping("/api/data")
    public String getData() {
        return "Data from API";
    }
}

参考链接

通过上述方法,你可以有效地排除路径变量中的HTML文件,确保它们不会被@GetMapping注解处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHPCMS删除路径中的html

最新版本的PHPCMSV9直接在栏目设置中选择“是否生成到根目录”即可。新建栏目和已存在栏目没有区别,修改后,更新一下缓存即可。...下面是原来的方法(已过期) 我所使用的是PHPCMSV9默认情况下生成的静态页面,都是位于html文件夹下,我不希望有太长的url,所以接下来让我们一起来解决路径中html的删除方法。...在新建栏目时,在“生成HTML设置”中,设置“是否生成到根目录”为 “是”时,那么它的就会生成为根目录了。不过这种方法对已经添加过的栏目再做修改时该功用无效,依旧是第一次的设置的路径。...修改配置文件。找到cachesconfigssystem.php 找到“html_root”这一项,然后把/html这个字符串删除即可。。这样再新建栏目时就生效了。...那么已经新建过的栏目如何修改html路径呢? 只能在数据库里改了,进入phpmyadmin,打开 V9_category表,找到该栏目对应的字段url所对应的值,然后把/html就行了。。

2.1K30
  • HTML中的相对路径与绝对路径

    HTML初学者会经常遇到这样一个问题,如何正确引用一个文件。比如,怎样在一个HTML网页中引用另外一个HTML网页作为超链接(hyperlink)?怎样在一个网页中插入一张图片?.........(相关教程:HTML超链接;HTML图片) 如果你在引用文件时(如加入超链接,或者插入图片等),使用了错误的文件路径,就会导致引用失效(无法浏览链接文件,或无法显示插入的图片等)。...为了避免这些错误,正确地引用文件,我们需要学习一下HTML路径。 HTML有2种路径的写法:相对路径和绝对路径。...HTML相对路径(Relative Path) 同一个目录的文件引用 如果源文件和引用文件在同一个目录里,直接写引用文件名即可。...HTML绝对路径(Absolute Path) HTML绝对路径(absolute path)指带域名的文件的完整路径。

    3.3K70

    Python中的相对文件路径的调用

    前言 先让我们来看看一个用到相对文件路径的函数调用的问题。...这是因为在函数调用的过程中,当前路径.代表的是被执行的脚本文件的所在路径。...在这个情况中,.表示的就是main.py的所在路径,所以load_txt()函数会在dir1文件夹中寻找test.txt文件。 那么怎么样才能在函数调用的过程中保持相对路径的不变呢?...方法 在网上有相当多的教程都有提到这个Python中相对文件路径的问题,但是大部分都没有提及到在这种情况下的解决办法。...在以下的三个函数中,第一个和第二个是大部分教程中的解决办法,但是这样是错误的,因为第一个和第二个函数所获取的"当前文件路径"都是被执行的脚本文件的所在路径,只有第三个函数返回的当前文件路径才是真正的、该函数所在的脚本文件的所在路径

    2.5K40

    Excel: 提取路径中的文件名

    文章背景:在日常工作中,有时需要从绝对路径中提取文件名。比如,已知某个文件的存储路径,想要获取最后的文件名称。下面介绍两种方法。...A2的公式中,SUBSTITUTE函数将字符串中的斜杆\替换成99个空格。...思路分析:针对文件路径,先用99个空格替换掉路径中的斜杆\;再从字符串右侧起,获取99个字符(新字符串),此时,新字符串内既有文件名,也有空格;最后,通过trim函数,移除首尾的空格,从而得到所需要的文件名...思路分析:针对文件路径,使用Split函数,基于斜杆/,将路径分割成各个小块,保存在一个数组内;然后通过Ubound函数,获取数组的最后一个索引号,从而将文件名提取出来。...参考资料: [1] 如何用excel提取路径中最后一个文件夹的名字(https://jingyan.baidu.com/article/a948d651aae9544a2ccd2e74.html) [2

    2.7K20

    JavaWeb开发中的文件访问路径

    在Servlet中,“/”表示Web应用根目录,和物理路径的相对表示。“./”表示当前目录,“../”表示上级目录,以此类推。 此外,Servlet和JSP中获得文件路径:1....JSP中获得当前应用的相对路径和绝对路径 根目录所对应的绝对路径:request.getRequestURI(); 文件的绝对路径:application.getRealPath(request.getRequestURI...Servlet中获得当前应用的相对路径和绝对路径 根目录所对应的绝对路径:request.getServletPath(); 文件的绝对路径:request.getSession().getServletContext...HTML中的form表单的action属性的地址应该是相对于服务器根目录http://localhost:8080/的,所以提交到loginjsp的路径应该为:action="/WebApp/user/...JavaScript也是在客户端解析的,所以其相对路径和form表单一样。 所以一般情况下,在HTML页面中引用的CSS和JS还有表单的action属性前面都最好加上应用的名称。另外,尽量避免使用'.

    1.9K30

    Java 中几种获取文件路径的方式

    前言 Java 开发中我们经常要获取文件的路径,比如读取配置文件等等。今天我们就关于文件的路径和如何读取文件简单地探讨一下。 2. 文件的路径 文件的路径通常有 相对路径 与 绝对路径。...2.1 相对路径 以当前文件为基准进行一级级目录指向被引用的资源文件。在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变就可以被读取到。...2.2 绝对路径 文件在文件系统中真正存在的路径,是指从硬盘的根目录(Windows为盘符)开始,进行一级级目录指向文件(从根目录一层层读写)。...Java 中通过java.io.File 来进行文件操作。并且提供了以下三个方法来获取文件的路径。 3.1 getPath 该方法返回文件抽象路径名的字符串形式。...因为速记符的存在,一个文件在文件系统中的 绝对路径 可以有很多个。 3.3 getCanonicalPath 速记符 不被解析有时候是很痛苦的事,我们可能需要知道具体的路径。

    11.5K20

    HTML中如何表示根目录?HTML的绝对路径与相对路径

    路径指文件存放的位置,在网页中利用路径可以引用文件,插入图像、视频等。表示路径的方法有两种:相对路径,绝对路径。以下讨论均是在HTML环境下进行。 HTML中如何表示根目录?.../aaa" //表示当前目录的上级目录下的aaa "bbb/aaa" //表示当前目录的bbb目录下的aaa HTML之绝对路径与相对路径 相对路径 相对路径是指目标相对于当前文件的路径,网页结构设计中多采用这种方法来表示目标的路径..../ :代表文件所在的目录(可以省略不写) ../ :代表文件所在的父级目录 ../../ :代表文件所在的父级目录的父级目录 / :代表文件所在的根目录 值得注意的是,(/ :代表文件所在的根目录)其实可以理解成项目内部的绝对路径...举例: 如果要在test.html中引入000.css,可以有以下写法: (..../html/css/css1/000.css"/> 绝对路径 绝对路径是指完整的网址,假设图一中项目的网站域名为www.quanbaike.com,那么000.css的绝对路径应该是 https://www.quanbaike.com

    11.9K30

    SpringBoot教程(四) | SpringBoot中的配置文件

    其实springBoot 的配置文件总共可以放到四个地方,优先级如下: 项目根目录下的config目录中 项目根目录下 classPath下的config目录中 classpath 目录下 优先级从上到下...那么怎么办呢,我们可以把这个包拷贝到本地环境,把里面的配置文件提取出来,然后把需要修改的配置修改一下,然后在服务器上jar包的路径下创建一个config文件夹,再把修改后的配置文件放到这个文件夹中,重新启动项目...springBoot优先加载的肯定还是application.yml,我们只需在这个配置文件中来指定让谁生效即可。...方式二: 使用Environment Envionment 类是Spring中提供的一个变量,用来封装环境信息数据,我们也可以这个文件中获取配置文件中的内容。使用方式如下。...方式三: 将配置文件中的内容封装成一个javaBean 我们在config文件夹下创建一个类,用于接收配置文件中的这些内容。

    63831

    SpringBoot中的配置文件分离

    0.背景 idea中新建好springboot项目后,默认的配置文件是放在resource目录下的,这个时候进行打包,配置文件会打包到jar中,每次更新配置信息都需要重新打jar包部署,比较麻烦....目的:将配置文件分离,其他位置存放好配置文件后,在启动jar时指定配置文件,实现灵活切换 1.默认的配置文件 1.1 application.properties SpringBoot程序默认从application.properties...=绝对路径\自定义配置文件3.properties 2.2 代码中指定 2.2.1 在application.properties文件中指定一个文件路径 eg:路径配置如下,当前项目config下的path.properties.../config/path.properties 2.2.2 编写加载类 这样启动时就会先加载出application.properties中${xx.pathConfig.path}的值,然后加载出这个定义的配置文件...只要修改application.properties中配置的自定义文件路径,就可以切换到不同的配置文件. package xx.config; import org.springframework.context.annotation.Configuration

    3.3K10

    IOS中获取各种文件的目录路径的方法

    iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library。...您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好. Caches 目录:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。...4、tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。...: NSString *tmpDir = NSTemporaryDirectory(); 5,获取应用程序程序包中资源文件路径的方法: 例如获取程序包中一个图片资源(apple.png)路径的方法: NSString...iphone沙盒(sandbox)中的几个目录获取方式: [cpp] view plain copy // 获取沙盒主目录路径   NSString *homeDir =

    6K20

    用pathlib进行Python中的文件路径处理

    本文介绍Python中的文件路径处理方法,从字符串连接、os.path.join()到Python3中处理文件路径的简单方法:pathlib。 1....因为在linux和Windows上路径的分隔符是不一样的。比如下面代码在Windows上运行OK,但是在Linux或者Mac上就会报错。...缺点就是语法较为冗长,对于多个路径的拼接,需要把每个路径的字符串传入os.path.join(),这样也不够直观。...支持不同的操作系统。我们只需要新建一个Path()对象,将路径或者文件传入,然后用/将它们连接即可,pathlib会帮我们做系统判断。...[x for x in p.iterdir() if x.is_dir()] p.iterdir() # 当路径指向一个目录时,产生该路径下的对象的路径 # 将路径绝对化 p.resolve()

    4K30

    小文件多的业务场景,建议WinDefend排除业务路径对比

    背景:有个证券客户POC,跟友商对比,业务队列积压、出结果有两三秒延迟 排除云硬盘、virtio驱动、pagefile、网卡receive buffer等方面后,看到业务小文件很多且defender在运行...,就添加命令排除了下,然后复测正常 WinDefend排除业务路径,可参考https://cloud.tencent.com/developer/article/2195212 别看上面三两句简单简单就解决了...; 2、用新代次机型搭配极速型云盘测试、用之前的增强型云盘扩容到460G确保吞吐上限增加到350MB/s再次测试,业务表现依旧;了解业务瞬时小文件非常多的特点后,发现WinDefend在后台比较活跃,怀疑其干扰业务执行...,添加排除业务路径后,业务压测恢复正常。...我平时排查复杂问题一般是这个思路: 1、云平台iaas层面、云平台组件层面先排除,比如母机、云盘等均已排除 2、禁用或卸载杀毒防护软件 包括第三方杀毒防护软件、操作系统自带的WinDefend、云平台的安全组件

    5510
    领券