Maison  >  Article  >  Java  >  Quelles sont les 5 annotations couramment utilisées dans springmvc ?

Quelles sont les 5 annotations couramment utilisées dans springmvc ?

coldplay.xixi
coldplay.xixioriginal
2020-06-22 16:53:414303parcourir

Quelles sont les 5 annotations couramment utilisées dans springmvc ?

Tutoriel recommandé : "Tutoriel vidéo Java"

Quelles sont les 5 annotations couramment utilisées dans springmvc ?

Les cinq annotations couramment utilisées dans springmvc sont :

1. Annotations de composants :

1 @Component Ajoutez @ avant la classe. définition L'annotation du composant sera reconnue par le conteneur Spring et convertie en bean.

2. @Repository annote la classe d'implémentation Dao (spécial @Component)

3 @Service est utilisé pour annoter la couche de logique métier, (spécial @Component)

. 4. @Controller est utilisé pour les annotations de la couche de contrôle (@Component spécial)

Les quatre annotations ci-dessus sont toutes annotées sur la classe, et la classe annotée sera initialisée au printemps en tant que bean. Ensuite, gérez-les uniformément. .

2. Annotations de type de requête et de paramètre :

1 @RequestMapping : utilisé pour traiter le mappage d'adresses de requête, qui peut être appliqué aux classes. et des méthodes supérieures.

Quantity: Définissez l'adresse de mappage de la demande de requête.

Quantitymethod: Définissez la méthode de la demande d'adresse, notamment [GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE. 】Par défaut, les requêtes get sont acceptées. Si la méthode de requête est différente de la méthode définie, la requête échouera.

Quantityparams : Définissez les valeurs des paramètres qui doivent être incluses dans la requête de requête.

Quantityheaders : Définissez que la requête doit contenir certains en-têtes de requête spécifiés, tels que : RequestMapping(value = "/something", headers = "content-type=text/*") indique que la requête doit contain Une requête correspondante est un en-tête de type Content contenant "text/html", "text/plain".

Quantityconsume : Définissez le type de contenu dont la soumission est demandée.

Quantityproducts : Spécifiez le type de contenu à renvoyer. Ce n'est que lorsque le type (Accepter) dans l'en-tête de la requête contient le type spécifié qu'il sera renvoyé

@RequestMapping(value="/requestTest.do",params = {"name=sdf"},headers = {"Accept-Encoding=gzip, deflate, br"},method = RequestMethod.GET)
 
   public String getIndex(){
 
     System.out.println("请求成功");
 
     return "index";
 
   }

Le code ci-dessus indique que la requête La méthode est une requête GET. Les paramètres de la requête doivent inclure le paramètre name=sdf, puis l'en-tête de la requête doit avoir le type header Accept-Encoding=gzip, deflate, br.

De cette manière, une demande peut être restreinte via des annotations.

2.@RequestParam : utilisé pour récupérer la valeur du paramètre entrant

Quantityvalue : le nom du paramètre

Quantity requis : définition Si le paramètre entrant est obligatoire, la valeur par défaut est true (similaire à l'attribut params de @RequestMapping)

@RequestMapping("/requestParams1.do")
 
  public String requestParams1(@RequestParam(required = false) String name){
 
    System.out.println("name = "+name);
 
    return "index";
 
  }
 
  @RequestMapping("/requestParams2.do")
 
  public String requestParams2(@RequestParam(value = "name",required = false) String names){
 
    System.out.println("name = "+names);
 
    return "index";
 
  }

Les deux méthodes de saisie des paramètres sont les mêmes lorsque le nom de la valeur déclarée est. affiché, le nom et la valeur du paramètre sont saisis. Idem, s'il n'y a pas de déclaration explicite, comme déclaré de la première manière, les noms des paramètres d'entrée et les noms des variables des paramètres de fonction seront les mêmes.

3.@PathViriable : permet de définir la valeur du paramètre de chemin

Quantity : le nom du paramètre

Quantityrequired : définit si le Le paramètre entrant est une valeur obligatoire

@RequestMapping("/{myname}/pathVariable2.do")  public String pathVariable2(@PathVariable(value = "myname") String name){
 
    System.out.println("myname = "+name);    return "index";
 
  }

Ce chemin déclare {myname} comme paramètre de chemin, alors ce chemin aura n'importe quelle valeur et @PathVariable pourra obtenir la valeur du chemin en fonction de la valeur.

4. @ResponseBody : agit sur la méthode et peut renvoyer l'intégralité du résultat renvoyé dans un certain format, tel que le format json ou xml.

@RequestMapping("/{myname}/pathVariable2.do")
 
   @ResponseBody
 
   public String pathVariable2(@PathVariable(value = "myname") String name){
 
     System.out.println("myname = "+name);
 
     return "index";
 
   }

Il ne renvoie pas de page, mais imprime la chaîne "index" directement sur la page. Ceci est en fait similaire au code suivant.

PrintWriter out = resp.getWriter();
 
 out.print("index");
 
 out.flush();

5, @CookieValue : utilisé pour obtenir la valeur du Cookie demandée

@RequestMapping("/requestParams.do")
 
   public String requestParams(@CookieValue("JSESSIONID") String cookie){
 
     return "index";
 
   }


6. @ModelAttribute :

est utilisé pour enregistrer des paramètres dans le modèle. Vous pouvez annoter des méthodes ou des paramètres. Lorsqu'elle est annotée sur une méthode, la méthode sera exécutée dans le processeur. Exécutez avant, puis stockez l'objet renvoyé dans la session (la condition préalable est l'annotation @SessionAttributes) ou l'attribut de modèle @ModelAttribute("attributeName") est spécifié lors du marquage de la méthode. S'il n'est pas spécifié, le nom de classe du retour. type est utilisé (première lettre minuscule) comme nom d’attribut.

@ModelAttribute("user")
 
  public UserEntity getUser(){
 
    UserEntity userEntityr = new UserEntity();
 
    userEntityr.setUsername("asdf");
 
    return userEntityr;
 
  }
 
  
 
  @RequestMapping("/modelTest.do")
 
  public String getUsers(@ModelAttribute("user") UserEntity user){
 
    System.out.println(user.getUsername());
 
    return "/index";
 
  }

Dans le code ci-dessus, l'annotation @ModelAttribute("user") est utilisée, qui est exécutée avant d'exécuter le contrôleur. Ensuite, une donnée de modèle nommée user sera générée dans le contrôleur. les paramètres. @ModelAttribute récupère les paramètres, puis applique le modèle au contrôleur. Nous pouvons également l'utiliser dans la page jsp,

<body>   ${user.username} </body>

7, @SessionAttributes

par défaut, Next Spring MVC stocke les données du modèle dans le champ de requête. Lorsqu'une requête se termine, les données sont invalides. Si vous souhaitez l'utiliser sur plusieurs pages. Ensuite, vous devez utiliser la session. L'annotation @SessionAttributes permet de stocker une copie des données du modèle dans le domaine de session. Lorsqu'elle est utilisée avec @ModelAttribute("user"), la valeur de modèle du nom correspondant sera stockée dans la session

@Controller
 
@RequestMapping("/test")
 
@SessionAttributes(value = {"user","test1"})
 
public class LoginController{
 
  @ModelAttribute("user")
 
  public UserEntity getUser(){
 
    UserEntity userEntityr = new UserEntity();
 
    userEntityr.setUsername("asdf");
 
    return userEntityr;
 
  }
 
  
 
  @RequestMapping("/modelTest.do")
 
  public String getUsers(@ModelAttribute("user") UserEntity user ,HttpSession session){
 
    System.out.println(user.getUsername());
 
    System.out.println(session.getAttribute("user"));
 
    return "/index";
 
  }
 
}

combinée avec le code de l'exemple précédent, ajoutée à l'annotation @SessionAttributes, puis demandée. deux fois, la valeur de l'attribut nommé user n'existe pas dans la première session. Lors de la deuxième demande, il s'avère qu'il y a une autre valeur dans la session. C'est parce que les données du modèle n'ont pas été enregistrées dans la session. lors de la première demande. Il n'est enregistré qu'après retour. Le dernier modèle peut être obtenu lors de la deuxième demande

.

Remarque : @ModelAttribute("user") UserEntity Lorsque l'utilisateur obtient le contenu de l'annotation, il demandera d'abord s'il existe une valeur d'attribut correspondante dans la session, puis interrogera le modèle sinon.

Articles connexes recommandés : "Tutoriel de développement Java"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn