下面是详解SpringMVC常用注解功能及属性的攻略。
一、@RequestMapping注解
1.1 作用
@RequestMapping注解用于映射请求路径和处理方法之间的关系。使用@RequestMapping注解, 可以定义URL的请求方式(GET/POST)、请求参数和响应结果等。
1.2 属性
- value: 请求的URL路径或URL模式,支持Ant-style路径或正则表达式
- method: 请求的HTTP方法类型,比如GET、POST、PUT等
- params: 请求需要的参数,支持简单的表达式,比如“param1=value1¶m2=value2”
- headers: 请求需要的头信息,支持简单的表达式,比如“Accept-Language=en-US,zh;q=0.8”
1.3 示例
1.3.1 设置单个请求路径
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/hello")
public String sayHello() {
return "hello";
}
}
上面示例中:
- 类级别的@RequestMapping注释/user定义了此控制器中所有处理程序方法的基本URL。
- 方法级别的@RequestMapping注释/hello定义了处理程序方法的特定URL。
当执行/user/hello请求时,该框架将调用sayHello()方法,并将其结果解释为视图名称,然后查找与该视图名称相关联的视图。
1.3.2 设置多个请求路径
@Controller
@RequestMapping({"/user", "/member"})
public class UserController {
@RequestMapping("/hello")
public String sayHello() {
return "hello";
}
}
上面示例中,@RequestMapping注解中定义了多个请求路径,当执行/user/hello和/member/hello请求时,都会调用sayHello()方法。
二、@PathVariable注解
2.1 作用
@PathVariable注解表示请求路径中的一部分可以作为服务方法的参数,方便领域对象的多层结构路径展示,例如查询用户详情/user/{userId}。@PathVariable可以将URI模板中的变量(如/{varName})绑定到处理程序的方法参数上。
2.2 属性
- value: 关联URI模板变量值和处理器方法参数的名称
- required: 指示URI模板变量是否必须存在,默认为true
2.3 示例
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("/{id}")
public String getUserById(@PathVariable("id") Long userId, Model model) {
User user = userService.getUserById(userId);
model.addAttribute("user", user);
return "userDetail";
}
}
上面示例中的@GetMapping注解指定HTTP GET请求方法,"{id}"指URI模板变量,@PathVariable注解表示将URI模板变量绑定到方法参数"userId"上。方法入参名和URI模板变量名默认一致,所以@RequestParam注解可以不指定value属性。
当执行/user/123请求时,路径中的123会绑定到方法参数userId上,然后调用getUserById方法,并将查询出的User对象绑定到Model中返回到视图层。
三、@RequestParam注解
3.1 作用
@RequestParam注解用于将请求参数的值绑定到方法参数上,是SpringMVC处理页面请求的基础注解。在@RequestParam注解中有一个value属性,用来指定请求参数的名称;还有一个required属性,用来指定请求参数是否是必须的,若参数不是必须的,但请求中没有包含该参数,则会将该参数值设置为null。
3.2 属性
- value: 请求参数的名称
- required: 指示请求参数是否必须存在,默认为true
- defaultValue: 指示当请求参数不存在时,要绑定的默认值
3.3 示例
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/search")
public String searchUser(@RequestParam("name") String userName, Model model) {
List<User> userList = userService.searchUserByName(userName);
model.addAttribute("userList", userList);
return "userList";
}
}
上面示例中的@RequestParam注解指定了请求参数名称为"name",绑定到了方法参数userName上。当执行/user/search?name=Jack请求时,就会将"Jack"这个参数绑定到userName上,然后调用searchUser方法查询用户信息。
如果在请求中不存在"name"参数,将会抛出MissingServletRequestParameterException异常。可以设置required属性为false或指定defaultValue来解决这个问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解SpringMVC常用注解功能及属性 - Python技术站