写点什么

SpringMVC 常用注解

作者:@下一站
  • 2022-11-30
    陕西
  • 本文字数:1473 字

    阅读完需:约 5 分钟

SpringMVC常用注解

URL 路由映射 @RequestMapping 该注解用以注册接口的路由映射

路由映射:当用户访问一个 url 后,将请求对应到某个类的某个方法的过程

用法:该注解可以加在类上也可以加载方法上

@Controller@ResponseBodypublic class StudentController {    @RequestMapping("/hi")    public String sayHi(HttpServletRequest request) {        return "hello world";}
复制代码

这样通过访问 http://localhost:8080/hi 在页面上看到一个 hello world

@Controller 是 spring 框架启动时会加载 注册到 Bean 中

@ResponseBody 用来将 JAVA 对象转换为 json 格式的数据,写入 response 对象的 body 中。也相当于告诉程序我返回的不是一个页面

如果不加 @ResponseBody 会发现访问报错,因为他以为你返回了一个页面,结果并没有。

为了简便写法,可以用 @RestController 注解

@RestControllerpublic class StudentController {    @RequestMapping("/hi")    public String sayHi(HttpServletRequest request) {        return "hello world";}
复制代码

@RestController 的作用就相当于 @Controller + @ResponseBody

@RequestMapping 默认为 get 方法

@RequestMapping("/hi") //这样写就是默认的get方法
当然 你可以指定方法写法:
@RequestMapping(value = "/hi",method = RequestMethod.POST)
复制代码

还可以使用简便的注解:

  • @PostMapping

  • @GetMapping

  • Put、Delete 等都有对应的注解,为方法名加个 Mapping

传递单个参数

在 servlet 中,用过一个方法获取参数

request.getParameter();
复制代码

在 springboot 里依然可以用,但是我们有更简便的方法来获取参数——直接在方法中定义参数,springboot 会自动根据参数名找到对应的值,形参名和 key 值必须相同例如:

@RestControllerpublic class StudentController {    @RequestMapping("/hi")    public String sayHi(String name) {        return name;    }}
复制代码

http://localhost:8080/hi?name=rich 访问 springboot 就会自动找到 key 为 name 的值,赋值给方法 sayHi 的形参 name

传递对象

同样也可以传递对象一个 Person 对象

@Datapublic class Person { private int id; private String name; private String password;}

@RequestMapping("/per")public Object method_2(Person p){ System.out.println("对象中的 name:"+p.getName()); System.out.println("对象中的 password:"+p.getPassword()); return "/index.html";}
复制代码

然后使用

http://localhost:8080/hi?name=rich&&password=123

访问,就可以实现对象 p 的传递,springboot 依然会根据 key 值给 Person 类的属性赋值,然后传递给 method_2 方法的形参 p

后端参数重命名

当想要对前端传过来的参数重命名时,可以使用该注解:

@RequestParam

具体用法:

@RequestMapping("name")public Object method_4(@RequestParam("time") String createtime) { System.out.println("时间:" + createtime); return "/index.html";}
复制代码

@RequestParam()中写前端的 key,然后再在后面定义形参重新命名为 createtime。但如果前端没有传过来 key 为 time 的值时,页面就会报 400 的错误。但在实际应用中,有些时候的参数非必填项,为了避免报 400 的错误,可以将 @RequestParam 的设置改一下

@RequestParam(value = "time", required = false) 
复制代码

将 required 改为 false,非必要

上传文件

@RequestPart 使用方法:

    @RequestMapping("/param9")    public String param9(String name, @RequestPart("myfile") MultipartFile file) throws IOException {        file.transferTo(new File("D://s.png"));    }
复制代码

@RequestPart 参数写前端传过来的文件的 key,传给 MultipartFile 类的 file 对象。

发布于: 刚刚阅读数: 3
用户头像

@下一站

关注

懒人 2020-11-22 加入

都是黄泉预约客,何必难为每一天,执念太强,无法豁然。

评论

发布
暂无评论
SpringMVC常用注解_软件开发_@下一站_InfoQ写作社区