SpringMVC常用注解

本篇文章主要介绍了SpringMVC一些常用注解

目录

一.@Controller:

二.@RequestMapping:

(1)GetMapping

(2)PostMapping

三.@RequestParam:

四.@PathVariable:

五.@ModelAttribute:

六.@ResponseBody:

七.@ResponseStatus:

八.@SessionAttributes:

九.@InitBinder:

十.@ExceptionHandler:


SpringMVC中常用的注解包括:

一.@Controller:

标记一个类为SpringMVC的Controller,处理HTTP请求和响应。

下面是一个使用Spring MVC框架的@Controller示例:

@Controller
public class UserController {
    
    @Autowired
    private UserService userService;
    
    @RequestMapping(value = "/users", method = RequestMethod.GET)
    public String userList(Model model) {
        List<User> users = userService.getAllUsers();
        model.addAttribute("users", users);
        return "users";
    }
    
    @RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
    public String userDetails(@PathVariable("id") int id, Model model) {
        User user = userService.getUserById(id);
        model.addAttribute("user", user);
        return "userDetails";
    }
    
    @RequestMapping(value = "/users", method = RequestMethod.POST)
    public String addUser(@ModelAttribute("userForm") User user) {
        userService.addUser(user);
        return "redirect:/users";
    }
    
    @RequestMapping(value = "/users/{id}", method = RequestMethod.PUT)
    public String updateUser(@PathVariable("id") int id, @ModelAttribute("userForm") User user) {
        user.setId(id);
        userService.updateUser(user);
        return "redirect:/users";
    }
    
    @RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)
    public String deleteUser(@PathVariable("id") int id) {
        userService.deleteUser(id);
        return "redirect:/users";
    }
}

上述示例中,@Controller注解标注了UserController类,并且使用@Autowired注解注入了一个UserService对象。

使用@RequestMapping注解可以将方法映射到相应的URL上。例如,userList()方法映射到了URL "/users",userDetails()方法映射到了URL "/users/{id}"。

在userList()方法中,我们从UserService中获取用户列表,将其添加到Model中,然后返回"users"视图名。

在userDetails()方法中,我们从UserService中获取指定id的用户对象,将其添加到Model中,然后返回"userDetails"视图名。

在addUser()方法中,我们使用@ModelAttribute注解将前端提交的表单数据绑定到User对象上,然后调用UserService的addUser()方法保存用户对象。

在updateUser()方法中,我们使用@PathVariable注解获取URL中的id参数,再使用@ModelAttribute注解绑定前端提交的表单数据到User对象上,最后调用UserService的updateUser()方法更新用户对象。

在deleteUser()方法中,我们使用@PathVariable注解获取URL中的id参数,然后调用UserService的deleteUser()方法删除指定id的用户对象。

以上就是一个简单的Spring MVC的@Controller示例。

二.@RequestMapping:

标记一个方法处理的HTTP请求的URL路径,可以绑定多个URL路径。

@RequestMapping是Spring MVC中的注解之一,用于定义请求URL与处理方法之间的映射关系。

示例:

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String viewUser(@PathVariable("id") String userId, Model model) {
        // 处理方法体
        return "userView";
    }

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public String addUser(@ModelAttribute("user") User user) {
        // 处理方法体
        return "redirect:/user/" + user.getId();
    }

    @RequestMapping(value = "/{id}/update", method = RequestMethod.POST)
    public String updateUser(@PathVariable("id") String userId, @ModelAttribute("user") User user) {
        // 处理方法体
        return "redirect:/user/" + user.getId();
    }

    @RequestMapping(value = "/{id}/delete", method = RequestMethod.GET)
    public String deleteUser(@PathVariable("id") String userId) {
        // 处理方法体
        return "redirect:/user";
    }
}

以上示例中,@RequestMapping注解设置url为/user,全局默认url都会以/user开头。在类级别上,@RequestMapping注解设置了/user,表示该类中的所有方法都在/user下面。在方法级别上,@RequestMapping注解使用value参数定义了具体的url,并使用method参数限制了HTTP请求方法。

(1)GetMapping

@Get mapping注解是Spring框架中用于处理HTTP GET请求的注解,它可以用于标识一个方法,当发起一个HTTP GET请求时,Spring框架会自动调用被该注解标识的方法来响应该请求。

使用@Get mapping注解时,需要指定该方法能够响应的URL路径,例如:

@GetMapping("/user/{id}")
public User getUser(@PathVariable Integer id) {
    // 处理获取用户的逻辑
}

该示例中,@GetMapping注解标识的方法能够响应的URL路径是"/user/{id}",其中{id}是一个路径参数,用于指定要获取的用户的ID。当访问URL路径为"/user/123"时,Spring框架会自动调用getUser方法,并将123作为参数传入该方法中,以便获取对应的用户信息。

(2)PostMapping

@PostMapping是一个Spring注解,用于将HTTP POST请求映射到特定的处理程序方法上。它可以用于接收来自客户端的POST请求,并将请求的数据解析成Java对象,然后使用这些数据执行业务逻辑代码。通常结合@RequestParam注解使用,用于处理表单提交等操作。它可以接收@RequestParam注解传递的参数,也可以接收RequestBody注解传递的JSON数据。在Spring MVC中,@PostMapping是@Controller注解的一部分,它允许开发人员编写处理POST请求的控制器方法。

下面是@PostMapping注解的示例:

@PostMapping("/example")
public void handleExamplePostRequest(@RequestBody ExampleDto exampleDto) {
 // 处理请求的代码
}

在上述示例中,@PostMapping注解将HTTP的POST请求映射到/example路径上,并将请求的正文映射到ExampleDto对象上。处理程序方法handleExamplePostRequest将负责处理该请求,并根据需要进行逻辑处理。

三.@RequestParam:

获取HTTP请求参数的值,适用于GET和POST请求。

@RequestParam是Spring MVC中的注解,用于提取请求参数的值并将其绑定到方法的参数上。当浏览器向服务器发送请求时,它通常会带有一些查询字符串参数,例如searchTerm=apple&numResults=10。@RequestParam注解告诉Spring MVC框架将这些查询字符串参数提取为方法的参数,并且可以指定参数的名称和是否为必需参数。例如:

@GetMapping("/search")
public String search(@RequestParam("searchTerm") String term, 
                     @RequestParam(value = "numResults", defaultValue = "10") int numResults) {
   // Code to perform search
}

在上面的例子中,@RequestParam("searchTerm")告诉Spring MVC将查询字符串参数"searchTerm"的值绑定到方法的term参数上。@RequestParam注解还可以接受其他参数,例如defaultValue,用于指定参数的默认值。

四.@PathVariable:

获取URL路径中的参数值。

五.@ModelAttribute:

绑定HTTP请求参数到一个JavaBean中,可以作用于方法参数和方法体内部变量。

以下是一个在Spring MVC中使用@ModelAttribute注解的示例:

@ModelAttribute("user")
public User setUpUserForm() {
    return new User();
}

@RequestMapping("/user/register")
public String registerUser(@ModelAttribute("user") User user) {
    // 处理用户注册逻辑
    return "success";
}

在这个示例中,@ModelAttribute注解被用来在请求处理方法之前执行一个方法,即setUpUserForm()方法。该方法返回一个User对象,并将其添加到模型中,模型的名称为"user"。这个模型对象可以在请求处理方法中使用,即registerUser()方法中的@ModelAttribute("user") User user参数。

在registerUser()方法中,@ModelAttribute("user")注解告诉Spring MVC从模型中获取名为"user"的对象,并将其作为方法参数传递给该方法。这个对象可以被用于处理用户提交的数据,例如用户注册表单的数据。

通过使用@ModelAttribute注解,我们可以避免重复的代码,同时也可以更方便地处理表单数据。

六.@ResponseBody:

标记一个方法返回值为响应体内容,可以自动将Java对象转换为JSON/XML格式。

@ResponseBody注解是Spring MVC框架中的一个注解,用于将返回值自动转换为JSON或XML格式的响应体。

例如,我们定义一个Controller类:

@RestController
@RequestMapping("/example")
public class ExampleController {

    @GetMapping("/hello")
    @ResponseBody
    public String sayHello() {
        return "Hello World!";
    }
}

在这个示例中,我们使用@GetMapping注解来映射HTTP GET请求到sayHello()方法上,并用@ResponseBody注解来告诉Spring MVC将方法的返回值转换为响应体。如果不使用@ResponseBody注解,则返回值将被解释为视图的名称,然后由视图解析器处理。

当浏览器发出GET请求/example/hello时,Spring MVC将调用sayHello()方法并将返回的字符串"Hello World!"自动转换为JSON或XML格式,并将其作为响应体返回给浏览器。

七.@ResponseStatus:

设置HTTP响应的状态码和原因短语。

八.@SessionAttributes:

用来指定模型属性放到Session中,可以用于多个请求之间共享模型数据。

九.@InitBinder:

用于数据绑定,可以在Controller类中定义一个方法,用于自定义类型转换器和数据格式化。

十.@ExceptionHandler:

标记一个方法为异常处理方法,用于在Controller内部处理异常,可以指定具体的异常类型。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值