SpringMVC常见问题汇总

SpringMVC执行原理图

image-20211004105133886

各组件的详细说明可参考这篇文章SpringMVC组件概述

SpringMVC常用注解

@Controller

注解在类上,表明这个类是Spring MVC里的Controller,将其声明为Spring的一个Bean,Dispatcher Servlet会自动扫描注解了此注解的类,并将Web请求映射到注解了@RequestMapping的方法上,需要注意的是,在Spring MVC声明控制器Bean的时候,只能使用@Controller

@RequestMapping

@RequestMapping注解用来映射Web请求(访问路径和参数)、处理类和方法。它可以注解在类和方法上。注解在方法上的@RequestMapping路径会继承注解在类上的路径,@RequestMapping支持Servlet的request和response作为参数,也支持对它们的媒体类型进行配置。

@Controller 			 // 声明此类是一个控制器 
@RequestMapping("/anno") // 映射此类的访问路径是 /anno 
public class DemoAnnoController {}

@ResponseBody

@ResponseBody支持将返回值放在response体内,而不是返回一个页面。Ajax的异步访问程序,可以以此注解返回数据而不是返回页面;此注解可以放在返回值或者方法上。

@RequestMapping("/index")
@ResponseBody
public String index(HttpServletRequest request, HttpServletResponse response) {
    return "url: " + request.getRequestURL() + " can access";
}

@RequestBody

@RequestBody允许request的参数在request体中,而不是在直接链接在地址后面。此注解放在参数前。

@RequestBody的作用其实是将json格式的数据转为java对象。

// 前端
$.ajax({
    data:{ "username":"tom", "address":"北京" }
})

// 后端
@RequestMapping("/insert")
public void insert(@RequestBody User user) {}

@PathVariable

@PathVariable用来接收路径参数,如 /news/001,可接收001作为参数。此注解放置在参数前。

@RequestMapping("/show/{id}/{name}")
public String show(@PathVariable("id") Long ids, @PathVariable("name") String names) {
    return "hello";
}

@RestController

@RestController是一个组合注解,组合了@Controller@ResponseBody,意味着当开发一个只和页面交互数据的控制的时候,可以使用此注解。
若没有此注解,要想实现上述功能,则需在代码中加上@Controller@ResponseBody两个注解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦翼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值