>  기사  >  Java  >  springmvc에서 일반적으로 사용되는 5가지 주석 사용

springmvc에서 일반적으로 사용되는 5가지 주석 사용

hzc
hzc원래의
2020-07-01 17:25:3010799검색

springmvc의 5가지 공통 주석: 1. 요청 주소 매핑을 처리하는 데 사용되는 @RequestMapping 2. 요청 매개변수 영역 데이터를 함수 처리 방법의 매개변수에 매핑하는 데 사용되는 @RequestParam @PathVariable - 요청 변수를 전송하는 데 사용됩니다.

springmvc에서 일반적으로 사용되는 5가지 주석 사용

@RequestMapping

은 요청 주소 매핑을 처리하는 데 사용되는 주석입니다.
클래스 및 메서드에 적용됩니다. 클래스에서 사용된다는 것은 요청에 응답하는 클래스의 모든 메서드가 이 주소를 상위 경로로 사용한다는 의미입니다.

Attribute

value: 요청의 실제 주소를 지정합니다. 값은 일반적인 특정 값일 수도 있고 특정 변수를 포함하는 값 유형으로 지정할 수도 있습니다(URI 템플릿 패턴 경로 변수)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/")

@RequestParam

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

属性

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

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

@PathVariable

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

属性

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

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

@ResponseBody

该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区,默认springmvcjson形式返回(使用jackson转换器)
适用:方法,返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用
对比:@RequestBody 将HTTP请求正文转换为适合的HttpMessageConverter对象
@ResponseBody 정규 표현식이 포함된 값 유형(정규 표현식이 포함된 URI 템플릿 패턴)

메서드: 요청된 메소드 유형을 GET, POST, PUT, DELETE 등으로 지정합니다.

consumes: 요청 처리를 위해 제출된 콘텐츠 유형(Content-Type)을 지정합니다(예: application/json, text/html

produces: 반환된 콘텐츠 유형 지정, 요청 헤더의 (수락) 유형에 다음이 포함된 경우에만 지정된 유형만 반환됩니다

params: 지정된 요청은 메서드가 이를 처리하기 전에 특정 매개변수 값을 포함해야 합니다
headers: 지정된 요청에는 지정된 특정 매개변수가 포함되어야 합니다. 헤더 값을 사용하면 요청을 처리할 수 있습니다<br><pre class="brush:php;toolbar:false">         $.ajax({            type: &quot;POST&quot;,            url:&quot;/role/saveRole&quot;,            contentType:&quot;application/json&quot;,            data: JSON.stringify(_self.form)...</pre> <br>@RequestParam<br><br>은 요청 매개변수 영역 데이터를 함수 처리 방법의 매개변수에 매핑하는 데 사용됩니다.<br>적용 대상: 메소드 매개변수<br>

attributes


값/이름: 두 속성 모두 매개변수 이름, 즉 입력된 요청 매개변수의 이름을 나타냅니다(일반적으로 양식 이름 속성)

필수 code>: 필요한지 여부에 관계없이 기본값은 요청에 해당 매개변수가 있어야 함을 나타내는 true입니다. 그렇지 않으면 예외가 발생합니다.<p><code>defaultValue: 기본값, 없는 경우 기본값을 나타냅니다. 이 매개변수를 설정하면 필수가 자동으로 false로 설정됩니다

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

@PathVariable

사용 요청 URL의 템플릿 변수를 함수 처리 방법의 매개변수, 즉 take에 매핑합니다. URI 템플릿의 변수를 매개변수
적용 대상: 메서드 매개변수

속성

값: 이름이 메서드 매개변수 이름과 동일한 경우 URL 템플릿 변수 이름을 지정합니다. 다르면 지정해야 합니다. 그렇지 않으면 생략 가능

获取cookie中的JSESSIONID
public String index(@CookieValue("JSESSIONID") String cookie){}
@ResponseBody🎜🎜이 주석은 Controller의 메서드에서 반환된 개체를 적절한 HttpMessageConverter를 통해 지정된 개체로 변환하는 데 사용됩니다. 형식을 지정한 후 , Response 객체의 body 데이터 영역에 씁니다. 기본적으로 springmvcjson 형식으로 반환합니다. (jackson 변환기 사용) 🎜적용 대상: 메서드, 반환된 데이터가 html 태그가 있는 페이지가 아니라 다른 형식(예: json, xml 등)의 데이터인 경우 , 🎜Contrast: @RequestBody HTTP 요청 본문을 적합한 HttpMessageConverter 개체로 변환🎜@<code>ResponseBody 콘텐츠 또는 개체를 HTTP 응답 본문으로 반환하고 어댑터 변환을 호출합니다. HttpMessageConverter가 출력 스트림에 쓰기에 적합한 개체🎜🎜@RequestBody 🎜🎜1. 이 주석은 요청 요청의 본문 부분을 읽고 시스템의 기본 구성 HttpMessageConverter를 사용하여 이를 구문 분석한 다음 해당 데이터를 개체에 바인딩하는 데 사용됩니다. 🎜2. 그런 다음 HttpMessageConverter에서 반환된 개체 데이터를 컨트롤러에서 메서드의 매개 변수로 설정합니다. 🎜적용 대상: 메서드 매개 변수, 요청의 Content-Type: application/json, application/xml 이 주석을 사용하세요🎜application/x-www-form-urlencoded의 경우 요청 메서드가 put이면 필요합니다. 🎜 POST/GET 메서드의 경우 선택 사항(즉, @RequestParam, @ModelAttribute도 사용할 수 있으므로 필요하지 않음) 처리됨) 🎜 multipart/form-data의 경우 @RequestBody는 이 형식의 데이터를 처리할 수 없습니다. 🎜 속성: 필수: 필요합니까? 기본값은 true입니다. 이는 요청에 해당 매개변수가 있어야 함을 의미합니다. 그렇지 않으면 예외가 발생합니다. : 일반적으로 이 주석을 사용하는 프런트 엔드는 ajax 요청을 보내고 요청 부분은 다음과 같습니다. 🎜
获取请求中Accept-Encoding值,返回gzip, deflate, br
public String index(@RequestHeader("Accept-Encoding") String host){return host;}
🎜참고: contentType은 생략할 수 없으며, 데이터는 stringify를 통해 json 문자열로 변환되어야 합니다🎜그러면 해당 메서드는 다음과 같이 작성할 수 있습니다. 이것:🎜
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";
    }

}
🎜프런트 엔드가 객체 배열을 전달하면 백엔드도 List를 사용하여 이를 직접 받아들일 수 있습니다. 이는 목록 데이터를 정의하는 가장 실용적인 방법입니다 🎜🎜@CookieValue🎜🎜 요청 헤더의 쿠키 값을 메소드의 매개변수에 바인딩할 수 있습니다. 🎜적용 대상: 메소드 매개변수 🎜rrreee🎜@RequestHeader🎜🎜 요청 헤더 부분의 값을 메소드의 매개변수에 바인딩할 수 있습니다.🎜적용 대상: 메소드 매개변수🎜
获取请求中Accept-Encoding值,返回gzip, deflate, br
public String index(@RequestHeader("Accept-Encoding") String host){return host;}

@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";
    }

}

위 내용은 springmvc에서 일반적으로 사용되는 5가지 주석 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.