Heim  >  Artikel  >  Java  >  Die Verwendung von 5 häufig verwendeten Anmerkungen in springmvc

Die Verwendung von 5 häufig verwendeten Anmerkungen in springmvc

hzc
hzcOriginal
2020-07-01 17:25:3010799Durchsuche

Fünf allgemeine Annotationen von springmvc: 1. @RequestMapping, eine Annotation zur Verarbeitung der Anforderungsadressenzuordnung. 2. @RequestParam, die zum Zuordnen der Anforderungsparameterbereichsdaten zu den Parametern der Funktionsverarbeitung verwendet wird Methode; 3. @PathVariable, wird zum Festlegen von Anforderungsvariablen verwendet.

Die Verwendung von 5 häufig verwendeten Anmerkungen in springmvc

@RequestMapping

ist eine Annotation, die zur Verarbeitung der Anforderungsadressenzuordnung verwendet wird.
gilt für Klassen und Methoden. Bei einer Klasse bedeutet dies, dass alle Methoden in der Klasse, die auf Anfragen antworten, diese Adresse als übergeordneten Pfad verwenden.

Attribute

value: Geben Sie die tatsächliche Adresse der Anforderung an. Der Wert kann ein gewöhnlicher spezifischer Wert sein oder als Werttyp angegeben werden, der eine bestimmte Variable (URI) enthält Vorlagenmuster mit Pfadvariablen)
Kann als Werttyp angegeben werden, der reguläre Ausdrücke enthält (URI-Vorlagenmuster mit regulären Ausdrücken)
method: Geben Sie den Methodentyp der Anforderung an, GET, POST, PUT, DELETE usw.
consumes: Geben Sie Process den Übermittlungsinhaltstyp (Content-Type) der Anfrage an, z. B. application/json, text/html
produces: Geben Sie den zurückgegebenen Inhaltstyp an, nur wenn der (Akzeptieren) Typ im Anforderungsheader enthält den angegebenen Typ. Rückgabe
params: Die angegebene Anforderung muss bestimmte Parameterwerte enthalten, bevor diese Methode sie verarbeiten kann.
headers: Die angegebene Anforderung muss bestimmte Parameterwerte enthalten angegebene Header-Werte, bevor diese Methode die Anfrage verarbeiten kann

  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

wird verwendet, um die Daten des Anforderungsparameterbereichs den Parametern der Funktionsverarbeitungsmethode zuzuordnen
Anwendbar für: Methodenparameter

Attribute

value/name: Beide Attribute beziehen sich auf Parameternamen, also auf den Namen des angeforderten Parameters (normalerweise das Formularnamenattribut)
required: Ob Es ist notwendig, der Standardwert ist wahr, was darauf hinweist, dass in der Anforderung entsprechende Parameter vorhanden sein müssen, andernfalls wird eine Ausnahme ausgelöst
defaultValue: Standardwert, der den Standardwert angibt, wenn kein Parameter mit demselben Namen vorhanden ist Wenn Sie diesen Parameter festlegen, wird „required“ automatisch auf „false“ gesetzt , Nehmen Sie die Variablen in der URI-Vorlage als Parameter

Anwendbar: Methodenparameter

Attribute


Wert: Geben Sie den Variablennamen der URL-Vorlage an, wenn sich der Name vom Namen des Methodenparameters unterscheidet , Sie müssen es angeben.

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

@ResponseBody

Diese Annotation wird verwendet, um die Methode von

Das Objekt zurückzugeben, nachdem es in das angegebene Objekt konvertiert wurde Format durch entsprechendes

, wird in den

-Datenbereich des

-Objekts geschrieben. Standardmäßig wird Controller in der Form HttpMessageConverter zurückgegeben (unter Verwendung des Response-Konverters) body ist anwendbar: Methode, wenn es sich bei den zurückgegebenen Daten nicht um eine Seite mit HTML-Tags, sondern um Daten in einem anderen Format (z. B. JSON, XML usw.) handelt, verwenden Sie zum Vergleichen springmvc: @jsonKonvertieren Sie die HTTP-Anfrage Körper in ein geeignetes HttpMessageConverter-Objekt umwandelnjackson@
Geben Sie den Inhalt oder das Objekt als HTTP-Antwortkörper zurück und rufen Sie das Adapterkonvertierungsobjekt auf, das für HttpMessageConverter geeignet ist, um in den Ausgabestream zu schreiben
RequestBody @RequestBody
ResponseBody 1. Diese Annotation wird zum Lesen verwendet. Die Textteildaten der Anforderungsanforderung werden mit dem standardmäßig konfigurierten HttpMessageConverter analysiert und dann werden die entsprechenden Daten an das zurückzugebende Objekt gebunden

2. Binden Sie dann das Objekt Von HttpMessageConverter an die Parameter der Methode im Controller zurückgegebene Daten

Anwendbar: Methodenparameter, für Anforderungsinhaltstyp: application/json, application/xml muss diese Annotation verwenden

Für application/x-www-form- urlencodiert, wenn die Anforderungsmethode eingegeben wird, ist diese Annotation erforderlich.

Optional für die POST/GET-Methode (d. h. nicht erforderlich, da @RequestParam und @ModelAttribute ebenfalls verarbeitet werden können)
Für Multipart-/Formulardaten , @RequestBody kann Daten in diesem Format nicht verarbeiten
Attribut: erforderlich: Ob erforderlich, der Standardwert ist wahr, was bedeutet, dass die Anforderung entsprechende Parameter haben muss, andernfalls wird eine Ausnahme ausgelöst
Beispiel: Normalerweise vorne -end sendet mit dieser Annotation eine Ajax-Anfrage, dann lautet der Anforderungsteil wie folgt:

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

Hinweis: contentType kann nicht weggelassen werden, Daten müssen über stringify in JSON-String konvertiert werden
Dann kann die entsprechende Methode sein geschrieben wie folgt:
         $.ajax({
           type: "POST",
           url:"/role/saveRole",
           contentType:"application/json",
           data: JSON.stringify(_self.form)...
Wenn das Frontend ein Array von Objekten übergibt, kann das Backend auch List verwenden. Dies ist die praktischste Möglichkeit, Listendaten zu binden >

@CookieValue

kann den Cookie-Wert im Request-Header an die Parameter der Methode binden. Oben

gilt für: Methodenparameter

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

@RequestHeader

kann den Wert des Request-Header-Teils an die Parameter der Methode binden
gilt für: Methodenparameter

获取请求中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";
    }

}

Das obige ist der detaillierte Inhalt vonDie Verwendung von 5 häufig verwendeten Anmerkungen in springmvc. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn