Jadual Kandungan
@RequestMapping
@RequestParam
@PathVariable
@ResponseBody
@RequestBody
@CookieValue
@RequestHeader
@ExceptionHandler
Rumah Java JavaAsas springmvc常用5种注解的使用

springmvc常用5种注解的使用

Jul 01, 2020 pm 05:25 PM
springmvc

springmvc的常见5种注解:1、@RequestMapping,是一个用来处理请求地址映射的注解;2、@RequestParam,用于将请求参数区数据映射到功能处理方法的参数上;3、@PathVariable,用于将请求变量。

springmvc常用5种注解的使用

@RequestMapping

是一个用来处理请求地址映射的注解
适用于类、方法。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

属性

value: 指定请求的实际地址,值可以是普通的具体值,可以指定为含有某变量的一类值(URI Template Patterns with Path Variables)
可以指定为含正则表达式的一类值(URI Template Patterns with Regular Expressions)
method: 指定请求的method类型,GET、POST、PUT、DELETE等
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
params: 指定request中必须包含某些参数值是,才让该方法处理
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求

  1.处理get请求: @RequestMapping(value = "index",method = RequestMethod.GET)
  2.springboot错误处理(使用app客户端返回json格式,使用浏览器返回html错误页)
   @RequestMapping(produces = "text/html")
  3.方法仅处理request Content-Type为“application/json”类型的请求
   @RequestMapping(value = "/pets", consumes="application/json")
  4.仅处理请求中包含了名为“myParam”,值为“myValue”的请求
   @RequestMapping(value = "/pets/{petId}", params="myParam=myValue") 
  5.仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.rxy.com/”的请求
   @RequestMapping(value = "/pets", headers="Referer=http://www.rxy.com/")
Salin selepas log masuk

@RequestParam

用于将请求参数区数据映射到功能处理方法的参数上
适用:方法参数

属性

value/name: 两个属性都指代参数名字,即入参的请求参数名字(通常表单name属性)
required: 是否必须,默认是true,表示请求中一定要有相应的参数,否则将抛出异常
defaultValue: 默认值,表示如果请求中没有同名参数时的默认值,设置该参数时,自动将required设为false

  如果是原子类型,不管加没加注解,都必须有值,否则抛出异常,如果允许空值请使用包装类代替
  index(@RequestParam Integer num){}  表示该参数必须传递,值允许为空
  表示该参数非必须,如果不传则默认为0
  getPageData(@RequestParam(name="pageNum",defaultValue="0") String pageNo, String pageSize)
Salin selepas log masuk

@PathVariable

用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数
适用:方法参数

属性

value: 指定url模版变量名称,如果名称与方法参数名不一样,则需要指定,否则可省略

    @RequestMapping("/index/{id}")
         public String index(@PathVariable("id") String sdf){
           System.out.println(sdf);
           return "index";
     }
Salin selepas log masuk

@ResponseBody

该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区,默认springmvcjson形式返回(使用jackson转换器)
适用:方法,返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用
对比:@RequestBody 将HTTP请求正文转换为适合的HttpMessageConverter对象
@ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流

@RequestBody

1.该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上
2.再把HttpMessageConverter返回的对象数据绑定到controller中方法的参数上
适用:方法参数,对于request的Content-Type:为application/json, application/xml必须使用该注解
对于application/x-www-form-urlencoded,如果请求方式为put,则为必须,
对于POST/GET方式可选(即非必须,因为@RequestParam,@ModelAttribute也可以处理)
对于multipart/form-data, @RequestBody不能处理这种格式的数据
属性:required: 是否必须,默认是true,表示请求中一定要有相应的参数,否则将抛出异常
示例:通常使用该注解前端都是发送ajax请求,那么请求部分内容如下:

         $.ajax({
           type: "POST",
           url:"/role/saveRole",
           contentType:"application/json",
           data: JSON.stringify(_self.form)...
Salin selepas log masuk

注意:contentType不可省略,data必须是通过stringify转换为json字符串的数据
那么对应方法就可以这么写:

@RequestMapping(value = "/saveRole",method = RequestMethod.POST)
public String saveRole(@RequestBody People requestJson) {}
Salin selepas log masuk

如果前端传递的是对象的数组,那么后台也可以直接使用List直接接受,这是绑定List数据最实用的方式

@CookieValue

可以把Request header中关于cookie的值绑定到方法的参数上
适用:方法参数

获取cookie中的JSESSIONID
public String index(@CookieValue("JSESSIONID") String cookie){}
Salin selepas log masuk

@RequestHeader

可以把Request请求header部分的值绑定到方法的参数上
适用:方法参数

获取请求中Accept-Encoding值,返回gzip, deflate, br
public String index(@RequestHeader("Accept-Encoding") String host){return host;}
Salin selepas log masuk

@ExceptionHandler

注解在方法上,表示该方法用于处理特定的异常,处理范围是当前类,如果想要全局捕获异常,需要使用@ControllerAdvice
当一个Controller中有多个HandleException注解出现时,那么异常被哪个方法捕捉呢?这就存在一个优先级的问题
ExceptionHandler的优先级是:在异常的体系结构中,哪个异常与目标方法抛出的异常血缘关系越紧密,就会被哪个捕捉到
属性:value: 需要处理的异常类型集合(Class)
在当前Controller有两个处理异常的方法,当访问/index时,页面显示: json data

package com.rxy.controller;

@Controller
public class HelloController {
    
    @ExceptionHandler({ ArithmeticException.class })
    @ResponseBody
    public String handleArithmeticException(Exception e) {
        e.printStackTrace();
        return "json data";
    }
    
    @ExceptionHandler({ IOException.class })
    public String handleIOException(Exception e) {
        e.printStackTrace();
        //返回错误页面
        return "error";
    }

    @RequestMapping("/index")
    public String index(){
        int i = 10 / 0;
        return "index";
    }

}
Salin selepas log masuk

Atas ialah kandungan terperinci springmvc常用5种注解的使用. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Analisis perbandingan dan perbezaan antara SpringBoot dan SpringMVC Analisis perbandingan dan perbezaan antara SpringBoot dan SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot dan SpringMVC adalah kedua-dua rangka kerja yang biasa digunakan dalam pembangunan Java, tetapi terdapat beberapa perbezaan yang jelas antara mereka. Artikel ini akan meneroka ciri dan penggunaan kedua-dua rangka kerja ini dan membandingkan perbezaannya. Mula-mula, mari belajar tentang SpringBoot. SpringBoot telah dibangunkan oleh pasukan Pivotal untuk memudahkan penciptaan dan penggunaan aplikasi berdasarkan rangka kerja Spring. Ia menyediakan cara yang pantas dan ringan untuk membina bersendirian, boleh dilaksanakan

Apakah perbezaan antara SpringBoot dan SpringMVC? Apakah perbezaan antara SpringBoot dan SpringMVC? Dec 29, 2023 am 10:46 AM

Apakah perbezaan antara SpringBoot dan SpringMVC? SpringBoot dan SpringMVC ialah dua rangka kerja pembangunan Java yang sangat popular untuk membina aplikasi web. Walaupun mereka sering digunakan secara berasingan, perbezaan antara mereka adalah jelas. Pertama sekali, SpringBoot boleh dianggap sebagai lanjutan atau versi dipertingkatkan bagi rangka kerja Spring. Ia direka bentuk untuk memudahkan proses permulaan dan konfigurasi aplikasi Spring untuk membantu pembangun

Apakah perbezaan antara SpringBoot dan SpringMVC? Apakah perbezaan antara SpringBoot dan SpringMVC? Dec 29, 2023 pm 05:19 PM

SpringBoot dan SpringMVC ialah dua rangka kerja yang biasa digunakan dalam pembangunan Java Kedua-duanya disediakan oleh rangka kerja Spring, tetapi ia mempunyai beberapa perbezaan dalam fungsi dan penggunaan. Artikel ini akan memperkenalkan ciri dan perbezaan SpringBoot dan SpringMVC masing-masing. 1. Ciri-ciri SpringBoot: Konfigurasi ringkas: SpringBoot sangat memudahkan proses konfigurasi projek melalui prinsip konvensyen berbanding konfigurasi. Ia secara automatik boleh mengkonfigurasi parameter yang diperlukan oleh projek dan pembangun

Apakah perbezaan antara spring dan springmvc Apakah perbezaan antara spring dan springmvc Dec 29, 2023 pm 05:02 PM

Perbezaan antara spring dan springmvc: 1. Kedudukan dan fungsi; 2. Fungsi teras; Pengenalan terperinci: 1. Kedudukan dan fungsi Spring ialah rangka kerja pembangunan aplikasi komprehensif yang menyediakan suntikan pergantungan, pengaturcaraan berorientasikan aspek, pengurusan transaksi dan fungsi lain Ia direka untuk memudahkan pembangunan aplikasi peringkat perusahaan, dan Spring MVC ialah Rangka kerja Spring. Modul di dalamnya digunakan untuk pembangunan aplikasi Web dan melaksanakan corak MVC 2. Fungsi teras dan sebagainya.

Apakah perbezaan antara springboot dan springmvc Apakah perbezaan antara springboot dan springmvc Jun 07, 2023 am 10:10 AM

Perbezaan antara springboot dan springmvc adalah: 1. Makna yang berbeza; 3. Kebergantungan yang berbeza; 5. Produktiviti yang berbeza; Fungsi yang disediakan; 8. Fungsi yang berbeza;

Cara menggunakan pemintas SpringMVC Java Cara menggunakan pemintas SpringMVC Java May 13, 2023 pm 02:55 PM

Peranan pemintas SpringMVC pemintas adalah serupa dengan penapis dalam pembangunan Servlet, yang digunakan untuk pra-memproses dan pasca-memproses pemproses. Pemintas disambungkan ke dalam rantai dalam susunan tertentu, dan rantai ini dipanggil rantai pemintas (InterceptorChain). Apabila kaedah atau medan yang dipintas diakses, pemintas dalam rantaian pemintas akan dipanggil mengikut susunan yang telah ditakrifkan sebelum ini. Pemintas juga merupakan pelaksanaan khusus idea AOP. Perbezaan antara pemintas dan penapis: Penapis (Penapis) Skop penggunaan pemintas (Pemintas) adalah sebahagian daripada spesifikasi servlet dan boleh digunakan oleh mana-mana projek JavaWeb

Menggunakan SpringMVC untuk pemprosesan perkhidmatan Web dalam pembangunan API Java Menggunakan SpringMVC untuk pemprosesan perkhidmatan Web dalam pembangunan API Java Jun 17, 2023 pm 11:38 PM

Dengan perkembangan Internet, perkhidmatan Web menjadi semakin biasa. Sebagai antara muka pengaturcaraan aplikasi, JavaAPI sentiasa melancarkan versi baharu untuk menyesuaikan diri dengan senario aplikasi yang berbeza. Sebagai rangka kerja sumber terbuka yang popular, SpringMVC boleh membantu kami membina aplikasi web dengan mudah. Artikel ini akan menerangkan secara terperinci cara menggunakan SpringMVC untuk pemprosesan perkhidmatan Web dalam pembangunan JavaAPI, termasuk mengkonfigurasi SpringMVC, menulis pengawal dan menggunakan

Bandingkan persamaan dan perbezaan antara SpringBoot dan SpringMVC Bandingkan persamaan dan perbezaan antara SpringBoot dan SpringMVC Dec 29, 2023 am 08:30 AM

Menganalisis persamaan dan perbezaan antara SpringBoot dan SpringMVC SpringBoot dan SpringMVC adalah rangka kerja pembangunan yang sangat penting dalam bidang Java. Walaupun kedua-duanya adalah sebahagian daripada rangka kerja Spring, terdapat beberapa perbezaan yang jelas dalam penggunaan dan kefungsian. Artikel ini akan membandingkan SpringBoot dan SpringMVC dan menganalisis persamaan dan perbezaan antara mereka. Mula-mula, mari belajar tentang SpringBoot. SpringBo

See all articles