@param: 在参数上使用@Param(“paramName”)注解”解决了传多个参数的问题。
@Param("id") Integer id
param里面的这个id是在mapper xml文件里用的变量名,Integer 后面的这个id 是函数的参数,名字可以和param里的名字不一样
@RequestMapping:处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
属性:
1、 value, method;
value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
2、consumes,produces;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3、 params,headers;
params: 指定request中必须包含某些参数值时,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
@Autowired:对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。
Autowired默认先按byType,如果发现找到多个bean,则,又按照byName方式比对,如果还有多个,则报出异常。
例子:
@Autowired(避免了必须new一个对象)
private ExamUserMapper examUserMapper; - ExamUserMapper是一个接口
1. spring先找类型为ExamUserMapper的bean
2. 如果存在且唯一,则OK;
3. 如果不唯一,在结果集里,寻找name为examUserMapper的bean。因为bean的name有唯一性,所以,到这里应该能确定是否存在满足要求的bean了
4.
URL路径映射
4.1、普通URL路径映射
@RequestMapping(value={"/test1", "/user/create"}):多个URL路径可以映射到同一个处理器的功能处理方法。
4.2、URI模板模式映射
@RequestMapping(value="/users/{userId}"):{×××}占位符, 请求的URL可以是 “/users/123456”或
“/users/abcd”,@PathVariable可以提取URI模板模式中的{×××}中的×××变量。
@RequestMapping(value="/users/{userId}/create"):这样也是可以的,请求的URL可以是“/users/123/create”。
@RequestMapping(value="/users/{userId}/topics/{topicId}"):这样也是可以的,请求的URL可以是“/users/123/topics/123”。
4.3、Ant风格的URL路径映射
@RequestMapping(value="/users/**"):可以匹配“/users/abc/abc”,但“/users/123”将会被【URI模板模式映射中的“/users/{userId}”模式优先映射到】【详见4.14的最长匹配优先】。
@RequestMapping(value="/product?"):可匹配“/product1”或“/producta”,但不匹配“/product”或“/productaa”;
@RequestMapping(value="/product*"):可匹配“/productabc”或“/product”,但不匹配“/productabc/abc”;
@RequestMapping(value="/product/*"):可匹配“/product/abc”,但不匹配“/productabc”;
@RequestMapping(value="/products/**/{productId}"):可匹配“/products/abc/abc/123”或“/products/123”,也就是Ant风格和URI模板变量风格可混用;
4.4、正则表达式风格的URL路径映射
正则表达式风格的URL路径映射是一种特殊的URI模板模式映射:
URI模板模式映射是{userId},不能指定模板变量的数据类型,如是数字还是字符串;
正则表达式风格的URL路径映射,可以指定模板变量的数据类型,可以将规则写的相当复杂。
4.5、组合使用是“或”的关系
如@RequestMapping(value={"/test1", "/user/create"}) 组合使用是或的关系,即“/test1”或“/user/create”请求URL路径都可以映射到@RequestMapping指定的功能处理方法。
@RequestParam: someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。
1.Spring MVC – URI Templates例子
在spring mvc中通过url路径来访问控制器中的方法,可以在用@RequestMapping注解的路径中使用URI模板。使用@PathVariable注解来指明方法中的参数应该对应URI模板中的变量,如下例子:
@RequestMapping (value= "/owners/{ownerId}" , method=RequestMethod.GET) public String findOwner( @PathVariable String ownerId, Model model) { Owner owner = ownerService.findOwner(ownerId); model.addAttribute( "owner" , owner); return "displayOwner" ; } |
URI模板”/owners/{ownerId}”指定了变量名为ownerId。当方法被请求的时候ownerId的值会被赋值为请求的 URI,比如一个请求为/owners/fred,那么方法中的ownerId参数会赋值为fred。必须保证参数名和URI模板变量名一致才能自动赋 值,想自定义参数变量需要在@PathVariable注解中加入参数,如下:
@RequestMapping (value= "/owners/{ownerId}" , method=RequestMethod.GET) public String findOwner( @PathVariable ( "ownerId" ) String theOwner, Model model) { // implementation omitted } |
当然,也可以使用多个@PathVariable来绑定多个URI模板变量,如下:
@RequestMapping (value= "/owners/{ownerId}/pets/{petId}" , method=RequestMethod.GET) public String findPet( @PathVariable String ownerId, @PathVariable String petId, Model model) { Owner owner = ownerService.findOwner(ownderId); Pet pet = owner.getPet(petId); model.addAttribute( "pet" , pet); return "displayPet" ; } |
下面的代码展示使用变量作为相对路径,当请求为/owners/42/pets/21,会调用findPet()方法。
@Controller @RequestMapping ( "/owners/{ownerId}" ) public class RelativePathUriTemplateController { @RequestMapping ( "/pets/{petId}" ) public void findPet( @PathVariable String ownerId, @PathVariable String petId, Model model) { // implementation omitted } } |
@PathVariable和方法中的参数可以是任何简单数据类型,例如:int,long,Date,等等。spring会自动转换,如果不匹配则抛出TypeMismatchException。
2.@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.
3.
http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2
可以把这地址分开理解,其中问号前半部分:http://localhost:8080/Springmvc/user/page.do 这个就是路径,是你的请求url,而如果这个路径上有数据匹配,用的就是@PathVariable 如
@RequestMapping(value="/page{pageNo}.do")
public String page(@PathVariable int pageNo){}
【注意:看下这地方的@RequestMapping的地址,对照我上面说的路径】
而问号的后面部分就是请求参数部分,是要向请求路径提交的参数信息,用的就是@RequestParam ,对于这种参数,如果你要用的话,代码应该如下:
@RequestMapping(value="/page.do")
public String page(@RequestParam int pageSize,@RequestParam int pageNow){}
【注意:这个代码的RequestMapping地址只需要/page.do就行】
其实你只要把什么叫请求路径,什么叫请求参数分清楚,也就能理解@PathVariable和@RequestParam
我再举个例子,就拿你这个问题在iteye上的地址为例,http://www.iteye.com/problems/101566 这个如果对应sprimgmvc里面,想获取问题编号101566,因为这个地址直接就是请求路径,是一个url,所以代码中用的应该是 @PathVariable,如下:
@RequestMapping(value="/problems/{problemId}")
public String showProblem(@PathVariable int problemId){}
@RequestParam:在SpringMVC后台控制层获取参数.
@PathVariable是用来获得请求url中的动态参数
@PathVariable和@RequestParam,分别是从路径里面去获取变量,也就是把路径当做变量,后者是从请求里面获取参数。
相关推荐
URL映射规则在SpringMVC中主要通过`@RequestMapping`注解来实现。这个注解可以应用在类级别或方法级别,提供了多种方式来定义URL路径。 1. 类级别的`@RequestMapping`:此注解应用于控制器类的顶部,表示类中的所有...
MySQL是一种广泛使用的开源关系型数据库管理系统,而Java实体类则是将数据库表结构映射到编程语言中的对象,便于进行对象关系映射(ORM)。本话题将详细介绍如何通过原生JDBC连接MySQL数据库,自动获取所有表名并...
- **定义与作用**:`@RequestMapping` 是一个用于映射请求 URL 到具体处理方法的注解。它可以作用于类级别或者方法级别。在类级别上使用时,其子类的所有方法默认会继承此注解的属性,而在方法级别上使用时,则用于...
2. `@RequestMapping`:此注解用于映射HTTP请求到控制器类的方法。可以用于类级别或方法级别,以指定URL模式。类级别的映射可以作为方法映射的前缀。 ```java @Controller @RequestMapping("/users") public class ...
**定义**: `@RequestMapping` 是Spring MVC中最常用的注解之一,用于处理请求地址映射。 **使用场景**: - **类级别**: 当注解应用在类上时,表示该类中的所有方法都会以此路径作为父路径。 - **方法级别**: 应用在...
在Spring MVC框架中,URL映射是连接前端请求与后端处理逻辑的关键步骤。这个"Spring简单URL映射例子"展示了如何配置并使用URL映射来处理HTTP GET请求,同时展示如何获取并处理GET方式传递的参数。让我们深入探讨这个...
Java注解是Java编程语言中的一个重要特性,它们提供了一种元数据的方式,让开发者能够向编译器或运行时环境传递额外的信息。这些信息可以用来验证代码、自动生成代码、配置框架或者在运行时进行一些处理。注解的使用...
`@Route`注解通常会用在Activity、Fragment或自定义View等组件上,参数可能包括URL路径、Intent的Action、Category等,这样在运行时就可以通过这些信息准确地启动对应的组件。 4. **路由注册与解析**: 在应用...
Java注解,也称为标注,是Java开发中的一个重要特性,自JDK 5.0引入。它们提供了一种元数据的方式,允许程序员在代码中添加信息,这些信息可以在编译时或运行时被编译器或Java虚拟机(JVM)处理。注解不同于Javadoc,...
例如,`@GetMapping`用于处理GET请求,它们将URL映射到特定的控制器方法,实现RESTful API的设计。 8. `@Controller`, `@Service`, `@Repository`: 这些注解是Spring MVC中的,分别用于标记控制器、服务和数据访问...
SpringBoot 中常用注解及各种注解作用 SpringBoot 框架中,注解扮演着非常重要的角色,它们可以帮助开发者快速构建应用程序,提高开发效率。下面将对 SpringBoot 中常用注解进行详细的介绍,并解释每个注解的作用。...
**Spring Boot 常用注解详解** Spring Boot以其简洁的配置、快速的启动和集成众多优秀框架的能力,成为Java开发领域中的热门选择。在Spring Boot应用中,注解起着至关重要的作用,它们简化了配置,使得代码更加简洁...
9. `@RequestMapping`:用于映射HTTP请求,将URL路径与处理方法关联。 10. `@GetMapping`,`@PostMapping`,`@PutMapping`,`@DeleteMapping`:这些是Spring 4.3引入的简化版注解,分别对应HTTP的GET、POST、PUT和...
- **定义**: `@RequestMapping`用于映射URL路径到具体的类或方法上。 - **用途**: 可以在类级别或者方法级别使用,用于处理特定的HTTP请求。 **3.4 @GetMapping** - **定义**: `@GetMapping`是`@RequestMapping...
【Spring Boot常用注解说明】 在Spring Boot框架中,注解起到了至关重要的作用,它们简化了配置,使得开发过程更加高效。以下是一些常见的Spring Boot注解及其详细解释: 1. **@SpringBootApplication** 这是...
以下是对Spring MVC常用注解的详细解释: 1. `@Controller`:这是定义一个类作为Spring MVC控制器的基本注解。当Spring容器扫描到这个注解时,它会将此类实例化,并处理其方法以响应HTTP请求。 2. `@...
Spring Boot 常用注解汇总说明 一、启动注解 @SpringBootApplication 在Spring Boot应用中,`@SpringBootApplication`是最核心的注解,它实际上是一个复合注解,包含了`@SpringBootConfiguration`、`@...
2. **使用URL映射和Servlet**:在Servlet配置中,可以定义多个URL映射,每个映射对应不同的业务逻辑。这样,用户看到的URL就可以与实际处理请求的Servlet映射关系解耦。 ```xml <!-- web.xml配置 --> ...
#### 六、SpringMVC_5_常用注解 - **`@Controller`注解**: - 作用:用于标记一个类为控制器。 - 使用场景:当一个类主要负责处理HTTP请求时,应该使用此注解。 - 特点:被标记的类会被Spring容器识别并管理。 ...