GVKun编程网logo

Spring @RequestMapping“不包含”正则表达式

16

在本文中,您将会了解到关于Spring@RequestMapping“不包含”正则表达式的新资讯,并给出一些关于1、Spring注解之@RequestMapping、@Controller文件相关@R

在本文中,您将会了解到关于Spring @RequestMapping“不包含”正则表达式的新资讯,并给出一些关于1、Spring注解之@RequestMapping、@Controller 文件相关 @RequestMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping、@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping、@RequestMapping详解、@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping 请求的用法(推荐)的实用技巧。

本文目录一览:

Spring @RequestMapping“不包含”正则表达式

Spring @RequestMapping“不包含”正则表达式

我有此RequestMapping:

@RequestMapping(value = "/route/to-{destination}-from-{departure}.html", method = {RequestMethod.GET, RequestMethod.HEAD})

我想添加该RequestMapping:

@RequestMapping(value = "/route/to-{destination}.html", method = {RequestMethod.GET, RequestMethod.HEAD})

因此,它可以服务于所有“无出发”路线。但是,这会产生冲突,因为“ / route / to-destination-from-departure”
URL实际上也与第二个RequestMapping匹配…很公平,所以我的解决方案是指定一个正则表达式:

@RequestMapping(value = "/route/to-{destination:^((?!-from-).)+}.html", method = {RequestMethod.GET, RequestMethod.HEAD})

因此,如果“目标”包含“ -from-”,则RequestMapping将不匹配。

而且…不起作用!网址“ /route/to-barcelona-from-
paris.html”已成功通过第一个RequestMapping提供,但网址“ /route/to-
barcelona.html”却根本未提供…我缺少什么?

注意:我不想使用Java解决方案,例如只有一个“ / route / to- {destination}” RequestMapping,然后检查“
destination”是否包含“ -from-” .. :)另外,我也无法更改这些路线是因为SEO …

答案1

小编典典

您可以使用

"/route/to-{destination:(?!.*-from-).+}.html"

^主播将搜索字符串的开始,并将在此处失败的任何比赛。

(?!.*-from-)排除模式将失败包含任何输入-from-比换行符字符以外的任何字符0+后。

.+模式将消耗除行换行符之外的所有1个或更多字符。

1、Spring注解之@RequestMapping

1、Spring注解之@RequestMapping

阅读文本大概需要3分钟。

@RequestMapping是一个用来处理请求地址映射的注解,可用于类或者方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestMapping注解有六个属性:

下面进行详细的讲解:

  • value:指定请求的实际地址,指定的地址可以是URI Template模式。

  • method:指定请求的method类型,GET、POST、PUT、DELETE等。

  • consumes:指定处理请求的提交内容类型(Content-Type),例如application/json、application/xml、text/html等。

  • produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。

  • params:指定request中必须包含某些参数值才让该方法处理。

  • headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。


备注:

@RequestMapping中consumes和produces的区别RequestMapping中consumes和produces的区别:

说到这两个参数,不得不先回顾一下HTTP协议Header中的两个东西

Content-Type 和Accept。在Request中,Content-Type 用来告诉服务器当前发送的数据是什么格式;而Accept 用来告诉服务器,客户端能认识哪些格式数据,最好返回这些格式中的其中一种。

  • consumes 用来限制Content-Type 

  • produces 用来限制Accept 


例子:

有个用户给发了一个请求,

请求头中 

Content-Type =application/json 

Accept = */*

就是说用户发送的json格式的数据,可以接收任意格式的数据返回。但是如果接口中定义如下:

@Controller
public class HelloWorld {
     @RequestMapping(value="/helloworld",consumes={"application/xml"},produces={"application/xml"})
        public String hello(){
         System.out.println("hello world");return"success";
    }
}

该接口只接收 application/xml 格式数据,也只返回application/xml格式数据。很明显是调不通这个接口的。

稍微改一下该接口,即可:

@Controller
public class HelloWorld {
     @RequestMapping(value="/helloworld",consumes={"application/xml","application/json"},produces={"application/xml"})
        public String hello(){
         System.out.println("hello world");return"success";
    }
}


handler method参数绑定常用的注解,根据他们处理的request的不同内容部分分为四类:

  • 处理request uri部分的注解:@PathVariable;

  • 处理request header部分的注解:@RequestHeader, @CookieValue;

  • 处理request body部分的注解:@RequestParam, @RequestBody;

  • 处理attribute类型的注解:@SessionAttributes, @ModelAttribute;


@PathVariable

当使用@RequestMapping URI template样式映射时,即someUrl/{paramId},这时的paramId可通过@PathVariable注解绑定它传过来的值到方法的参数上。


@RequestHeader、@CookieValue

@RequestHeader注解可以把Request请求header部分的值绑定到方法的参数上。

@CookieValue可以把Request header中关于cookie的值绑定到方法的参数上。


推荐阅读


Spring Boot 最流行的 16 条实践

SSM框架的面试常见问题

【分布式】缓存穿透、缓存雪崩,缓存击穿解决方案

阿里P7给出的一份超详细 Spring Boot 知识清单

关注我每天进步一点点

你点的每个在看,我都认真当成了喜欢


本文分享自微信公众号 - JAVA乐园(happyhuangjinjin88)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

@Controller 文件相关 @RequestMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping

@Controller 文件相关 @RequestMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping

https://blog.csdn.net/magi1201/article/details/82226289(copy)   

最近学习看一些代码,发现对于发送请求这件事,有的地方用@RequestMapping,有的地方用@PostMapping,为了搞清楚区别,特意查了下spring 源代码,现在特此记录下。

 @GetMapping用于将HTTP get请求映射到特定处理程序的方法注解
具体来说,@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。

@PostMapping用于将HTTP post请求映射到特定处理程序的方法注解
具体来说,@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。

下面我们来看下@GetMapping的源码,可以对上面的两句释义给予充分的支撑。

/**
 * Annotation for mapping HTTP {@code GET} requests onto specific handler
 * methods.
 *
 * <p>Specifically, {@code @GetMapping} is a <em>composed annotation</em> that
 * acts as a shortcut for {@code @RequestMapping(method = RequestMethod.GET)}.
 *
 *
 * @author Sam Brannen
 * @since 4.3
 * @see PostMapping
 * @see PutMapping
 * @see DeleteMapping
 * @see PatchMapping
 * @see RequestMapping
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(method = RequestMethod.GET)
public @interface GetMapping {
 
    /**
     * Alias for {@link RequestMapping#name}.
     */
    @AliasFor(annotation = RequestMapping.class)
    String name() default "";
 
    ...
 
}

上面代码中,最关键的是 @RequestMapping(method = RequestMethod.GET),这行代码即说明@GetMapping就是@RequestMapping附加了请求方法。同时,可以看到@GetMapping这个注解 是spring4.3版本引入,同时引入的还有@PostMapping、@PutMapping、@DeleteMapping和@PatchMapping,一共5个注解。


所以,一般情况下用@RequestMapping(method = RequestMethod. XXXX)即可。


@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping、@RequestMapping详解

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping、@RequestMapping详解

最近写项目中突然发现有人再controller层写@PostMapping,这对于经常用@RequestMapping的我来说,感到跟奇怪,网上搜寻了一些资料,特在此整合一下:

Spring4.3中引进了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping} 来帮助简化常用的HTTP方法的映射 并更好地表达被注解方法的语义

@GetMapping: 处理get请求,传统的RequestMapping来编写应该是@RequestMapping(value = “/get/{id}”, method = RequestMethod.GET)
新方法可以简写为:
@GetMapping("/get/{id}")
@PostMapping: 处理post请求,传统的RequestMapping来编写应该是@RequestMapping(value = “/get/{id}”,method = RequestMethod.POST)
新方法可以简写为:
@PostMapping("/get/{id}")
@PutMapping: 和PostMapping作用等同,都是用来向服务器提交信息。如果是添加信息,倾向于用@PostMapping,如果是更新信息,倾向于用@PutMapping。两者差别不是很明显。
@DeleteMapping 删除URL映射,具体没有再实践中用过,不知道好在什么地方
@PatchMapping 至今不知如何用,再什么场景下用。。。有知道的欢迎留言或私信
上面所有的mapping归根到底就是两种请求,即:post和get,Spinrg官方引进众多请求的原因个人感觉是,简化配置。post和get两者的区别如下:
首先,什么情况下是get请求呢:

直接在浏览器地址栏输入某个地址
表单默认的提交方式
什么情况下是post请求呢:

设置表单method = “post”
ajax type: ‘post’,
浏览器通过url处理的请求为get请求,如果后台限制只能用post请求会发生如下错误:

method not allowed, The specified HTTP method is not allowed for the requested resource.
1
get请求特点:
a. 请求参数会添加到请求资源路径的后面,只能添加少量参数(因为请求行只有一行,大约只能存放2K左右的数据)
b. 请求参数会显示在浏览器地址栏,路由器会记录请求地址 (极为的不安全)
c.如果传输中文,必定会乱码(原因:get请求默认编码格式为:IIO-8859-1,后台编码格式一般为:GBK或者UTF-8)
post请求的特点:
a. 请求参数添加到实体内容里面,可以添加大量的参数(也解释了为什么浏览器地址栏不能发送post请求,在地址栏里我们只能填写URL,并不能进入到Http包的实体当中)
b. 相对安全,但是,post请求不会对请求参数进行加密处理(可以使用https协议来保证数据安全)
————————————————
版权声明:本文为CSDN博主「只会debugger」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/java_xdo/article/details/88711192

@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping 请求的用法(推荐)

@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping 请求的用法(推荐)

高春辉、王春生、朱峰:关于开源创业的 15 件小事

转:

@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping 请求的用法(推荐)

@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping请求的用法(推荐)

学习目标

1、一周掌握 JAVA 入门到进阶知识
2、掌握基础 C#l 窗体知识
3、手把手教你 vbs 脚本制作
4、强大的 IDEA 编程利器
5、经典少见的 面试题目技巧


@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping 请求的用法

  • 学习目标
  • 前言
  • @PostMapping
  • @DeleteMapping
  • @PutMapping
  • @GetMapping
  • @RequestMapping
  • 总结


前言

@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping请求的用法(推荐)


希望:2012 新的一年,想要的都拥有,得不到的都释怀!

@PostMapping

如图所示:
@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping请求的用法(推荐)

增加应该使用 POST

@DeleteMapping

如图所示:
@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping请求的用法(推荐)

删除应该使用 DELETE

@PutMapping

如图所示:
@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping请求的用法(推荐)

修改应该使用 PUT

@GetMapping

如图所示:
@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping请求的用法(推荐)

查询应该使用 GET

@RequestMapping

如图所示:
@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping请求的用法(推荐)

@GetMapping是一个组合注解 是@RequestMapping(method = RequestMethod.GET)的缩写
@DeleteMapping是一个组合注解 是@RequestMapping(method = RequestMethod.DELETE)的缩写
@PutMapping是一个组合注解 是@RequestMapping(method = RequestMethod.PUT)的缩写
@PostMapping是一个组合注解 是@RequestMapping(method = RequestMethod.POST)的缩写

总结

通过上面的介绍,我们应该学会了怎么用上述的注解了。

转:

@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping 请求的用法(推荐)


--Posted from Rpc

今天关于Spring @RequestMapping“不包含”正则表达式的讲解已经结束,谢谢您的阅读,如果想了解更多关于1、Spring注解之@RequestMapping、@Controller 文件相关 @RequestMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping、@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping、@RequestMapping详解、@RequestMapping,@GetMapping ,@PostMapping,@PutMapping,@DeleteMapping 请求的用法(推荐)的相关知识,请在本站搜索。

本文标签:

上一篇spring.xml在类路径中的打印路径(spring类路径 classpath)

下一篇未报告的异常UnknownHostException; 必须被抓住或宣布被抛出(未报告的异常错误)