栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC入门与数据绑定4:Spring MVC数据绑定一:URL Mapping(URL映射);(@RequestMapping,@GetMapping、@PostMapping)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC入门与数据绑定4:Spring MVC数据绑定一:URL Mapping(URL映射);(@RequestMapping,@GetMapping、@PostMapping)

说明:

(1)前面几篇博客我们简单介绍了【Spring MVC】,对【Spring MVC】有了简单的认识;从本篇博客开始,将详细介绍【Spring MVC】;

(2)本篇博客开始,介绍【Spring MVC数据绑定】;然后本篇博客介绍其中的URL映射,URL映射是指【Spring MVC中,Controller控制器的某一个方法】如何和【url】绑定在一起;前面接触了【@GetMapping("/t")注解 】和【@ResponseBody注解】,自然还有其他注解可以完成类似的工作;

(3)本篇博客代码沿用【SpringMVC入门与数据绑定3:Spring MVC初体验三:Spring MVC环境配置;】中的代码;

目录

一:URL Mapping(URL映射)简介;

二:【@GetMapping】、【@PostMapping】案例;

1.创建URLMappingController类:使用【@GetMapping】、【@PostMapping】;

2. 【@GetMapping】:提起get请求,观察效果;

3. 【@PostMapping】:提起post请求,观察效果;

三:【@RequestMapping】案例;

1.可以在类上,使用【@RequestMapping】;

(1)在类上 【@RequestMapping】;

(2)【@RequestMapping】:提起请求,观察效果;

2.也可以在方法上,使用【@RequestMapping】;(只是一般不这么干) 


一:URL Mapping(URL映射)简介;

(1)可以这样理解:对于web应用来说,所有对外暴露的接口,都是一个一个的URL网址;我们通过URL来调用并执行后端的代码;

(1)@RequestMapping是一个通用的注解;

          ● 这个注解一般是用在类上的,为类中所有方法上的【@GetMapping】、【@PostMapping】赋予访问前缀;

          ● 这个注解也可以使用在方法上,作为 【@GetMapping】、【@PostMapping】的通用书写方式;即,@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写;

(2)@GetMapping,@PostMapping是使用在方法上的,分别对应get请求和post请求;

(3)接下来的案例,会详细介绍这三个注解;


二:【@GetMapping】、【@PostMapping】案例;

1.创建URLMappingController类:使用【@GetMapping】、【@PostMapping】;

URLMappingController类:

package com.imooc.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class URLMappingController {

    @GetMapping("/g")
    @ResponseBody
    public String getMapping() {
        return "This is getMethod.";
    }

    @PostMapping("/p")
    @ResponseBody
    public String postMapping() {
        return "This is postMethod.";
    }
}

2. 【@GetMapping】:提起get请求,观察效果;

3. 【@PostMapping】:提起post请求,观察效果;

错误原因:通过浏览器的地址栏输入地址,所访问的URL都是get请求,因此如果以post定义方法,那么由于请求与实现的不一致,会返回405错误,method not allowed,  The specified HTTP method is not allowed for the requested resource。这归根到底是因为浏览器发送了get请求,而方法只能处理post请求,所以发生的错误。可以参考下【附加:一般情况下,通过浏览器的地址栏输入url,发送的只能是get请求;(即【哪些情况下会发送get请求】,【哪些情况下会发送post请求】)】

如果想测试postMapping()方法,可以创建一个HTML表单,然后表单提交方式为post方式,如下:


三:【@RequestMapping】案例;

1.可以在类上,使用【@RequestMapping】;

(1)在类上 【@RequestMapping】;
package com.imooc.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("um")
public class URLMappingController {

    @GetMapping("/g")
    @ResponseBody
    public String getMapping() {
        return "This is getMethod.";
    }

    @PostMapping("/p")
    @ResponseBody
    public String postMapping() {
        return "This is postMethod.";
    }
}

说明:

(1)@RequestMapping注解:通常使用在类上;这个注解通常用于URL的全局设置;阐述如下:

          ● 我们知道一般的url是多级的:

          ● 如上,我们希望URLMappingController中的所有方法的映射地址,都以【/um】为前缀;自然我们这样设置:

          ● 如果URLMappingController中的方法比较少还好,我们一个一个的去加就行了;但是如果URLMappingController中有上百个方法时,上面的策略就会很麻烦,而且很容易出现遗漏;

          ● 为此,@RequestMapping就派上用场了;如上面代码所示;上面设置以后,URLMappingController类中所有的方法的url都会添加上【/um】前缀了;

          ● 即,【@RequestMapping】可以为当前类中所有的【@GetMapping】、【@PostMapping】赋予访问前缀;

(2)【@RequestMapping】:提起请求,观察效果;

重启应用,访问如下:

2.也可以在方法上,使用【@RequestMapping】;(只是一般不这么干) 

阐述如下:

          ●【@RequestMapping】是一个全局的通用的请求映射;如果把其放在类上,就是为类中的、所有方法上的【@GetMapping】、【@PostMapping】赋予访问前缀;

          ● 如果把其放在方法上,那么其含义是,我们为当前方法绑定了url,但是不再区分get/post请求,即无论请求是get请求还是post请求,只要url对,都可以访问到这个方法;(不推荐这种用法,因为在实际开发中,每个方法应该有明确的访问方式,要么是get,要么是post;即,在方法上,还是推荐使用【@GetMapping】、【@PostMapping】);

          ● 【@RequestMapping】可以设置参数,让其只对请求方式为get方式的请求生效(Post同理);

但是,【@RequestMapping(value = "/g",method = RequestMethod.GET)】这种写法比较麻烦;所以,SpringMVC才提供了@GetMapping("/g")这种简写的方式;

          ● 在实际开发的时候,一般这样做:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281521.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号