`

java常用注解,URL地址映射

    博客分类:
  • java
阅读更多

@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)
publicString findOwner(@PathVariableString 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)
publicString findOwner(@PathVariable("ownerId") String theOwner, Model model) {
  // implementation omitted
}

  当然,也可以使用多个@PathVariable来绑定多个URI模板变量,如下:

@RequestMapping(value="/owners/{ownerId}/pets/{petId}", method=RequestMethod.GET)
publicString findPet(@PathVariableString ownerId, @PathVariableString 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}")
publicclassRelativePathUriTemplateController {
  @RequestMapping("/pets/{petId}")
  publicvoidfindPet(@PathVariableString ownerId, @PathVariableString 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,分别是从路径里面去获取变量,也就是把路径当做变量,后者是从请求里面获取参数。

 

 

分享到:
评论

相关推荐

    SpringMVC入门很简单之URL映射规则

    URL映射规则在SpringMVC中主要通过`@RequestMapping`注解来实现。这个注解可以应用在类级别或方法级别,提供了多种方式来定义URL路径。 1. 类级别的`@RequestMapping`:此注解应用于控制器类的顶部,表示类中的所有...

    mysql表映射成java实体类

    MySQL是一种广泛使用的开源关系型数据库管理系统,而Java实体类则是将数据库表结构映射到编程语言中的对象,便于进行对象关系映射(ORM)。本话题将详细介绍如何通过原生JDBC连接MySQL数据库,自动获取所有表名并...

    springmvc常用注解标签详解

    - **定义与作用**:`@RequestMapping` 是一个用于映射请求 URL 到具体处理方法的注解。它可以作用于类级别或者方法级别。在类级别上使用时,其子类的所有方法默认会继承此注解的属性,而在方法级别上使用时,则用于...

    Spring MVC的常用注解

    2. `@RequestMapping`:此注解用于映射HTTP请求到控制器类的方法。可以用于类级别或方法级别,以指定URL模式。类级别的映射可以作为方法映射的前缀。 ```java @Controller @RequestMapping("/users") public class ...

    SpringMVC九大常用注解

    **定义**: `@RequestMapping` 是Spring MVC中最常用的注解之一,用于处理请求地址映射。 **使用场景**: - **类级别**: 当注解应用在类上时,表示该类中的所有方法都会以此路径作为父路径。 - **方法级别**: 应用在...

    Spring简单URL映射例子

    在Spring MVC框架中,URL映射是连接前端请求与后端处理逻辑的关键步骤。这个"Spring简单URL映射例子"展示了如何配置并使用URL映射来处理HTTP GET请求,同时展示如何获取并处理GET方式传递的参数。让我们深入探讨这个...

    java注解整理

    Java注解是Java编程语言中的一个重要特性,它们提供了一种元数据的方式,让开发者能够向编译器或运行时环境传递额外的信息。这些信息可以用来验证代码、自动生成代码、配置框架或者在运行时进行一些处理。注解的使用...

    Android-一个以注解方式实现的路由映射解决方案基于sourcegen

    `@Route`注解通常会用在Activity、Fragment或自定义View等组件上,参数可能包括URL路径、Intent的Action、Category等,这样在运行时就可以通过这些信息准确地启动对应的组件。 4. **路由注册与解析**: 在应用...

    java或Java框架中常用的注解及其作用详解_资料.docx

    Java注解,也称为标注,是Java开发中的一个重要特性,自JDK 5.0引入。它们提供了一种元数据的方式,允许程序员在代码中添加信息,这些信息可以在编译时或运行时被编译器或Java虚拟机(JVM)处理。注解不同于Javadoc,...

    Spring中常用注解

    例如,`@GetMapping`用于处理GET请求,它们将URL映射到特定的控制器方法,实现RESTful API的设计。 8. `@Controller`, `@Service`, `@Repository`: 这些注解是Spring MVC中的,分别用于标记控制器、服务和数据访问...

    SpringBoot 中常用注解及各种注解作用

    SpringBoot 中常用注解及各种注解作用 SpringBoot 框架中,注解扮演着非常重要的角色,它们可以帮助开发者快速构建应用程序,提高开发效率。下面将对 SpringBoot 中常用注解进行详细的介绍,并解释每个注解的作用。...

    Spring Boot 常用注解.rar

    **Spring Boot 常用注解详解** Spring Boot以其简洁的配置、快速的启动和集成众多优秀框架的能力,成为Java开发领域中的热门选择。在Spring Boot应用中,注解起着至关重要的作用,它们简化了配置,使得代码更加简洁...

    java spring 框架及注解 总结

    9. `@RequestMapping`:用于映射HTTP请求,将URL路径与处理方法关联。 10. `@GetMapping`,`@PostMapping`,`@PutMapping`,`@DeleteMapping`:这些是Spring 4.3引入的简化版注解,分别对应HTTP的GET、POST、PUT和...

    SpringBoot常用注解详解含使用示例(值得珍藏)

    - **定义**: `@RequestMapping`用于映射URL路径到具体的类或方法上。 - **用途**: 可以在类级别或者方法级别使用,用于处理特定的HTTP请求。 **3.4 @GetMapping** - **定义**: `@GetMapping`是`@RequestMapping...

    springboot常用注解说明

    【Spring Boot常用注解说明】 在Spring Boot框架中,注解起到了至关重要的作用,它们简化了配置,使得开发过程更加高效。以下是一些常见的Spring Boot注解及其详细解释: 1. **@SpringBootApplication** 这是...

    SpringMVC 常用注解类视频详解

    以下是对Spring MVC常用注解的详细解释: 1. `@Controller`:这是定义一个类作为Spring MVC控制器的基本注解。当Spring容器扫描到这个注解时,它会将此类实例化,并处理其方法以响应HTTP请求。 2. `@...

    Springboot 常用注解汇总说明

    Spring Boot 常用注解汇总说明 一、启动注解 @SpringBootApplication 在Spring Boot应用中,`@SpringBootApplication`是最核心的注解,它实际上是一个复合注解,包含了`@SpringBootConfiguration`、`@...

    Java WEB实现URL重写

    2. **使用URL映射和Servlet**:在Servlet配置中,可以定义多个URL映射,每个映射对应不同的业务逻辑。这样,用户看到的URL就可以与实际处理请求的Servlet映射关系解耦。 ```xml <!-- web.xml配置 --> ...

    Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_5_常用注解 共22页.pptx

    #### 六、SpringMVC_5_常用注解 - **`@Controller`注解**: - 作用:用于标记一个类为控制器。 - 使用场景:当一个类主要负责处理HTTP请求时,应该使用此注解。 - 特点:被标记的类会被Spring容器识别并管理。 ...

Global site tag (gtag.js) - Google Analytics