5 annotations couramment utilisées dans springmvc
Tutoriels recommandés : Tutoriel Printemps
1. Annotations du composant :
1 @Component Ajoutez l'annotation @Component avant la définition de la classe, ce sera le printemps. Identification des conteneurs et conversion en haricots.
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 annoter la couche de contrôle, (Spécial. @Component)
Les quatre annotations ci-dessus sont toutes annotées sur la classe La classe annotée sera initialisée en tant que bean d'ici le printemps puis gérée de manière uniforme.
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 aux méthodes.
Valeur : Définir l'adresse de mappage de la demande de requête
Méthode : Définir la méthode de demande d'adresse, y compris [GET , POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE.] La requête get est acceptée par défaut. 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 demande doit contenir l'en-tête Content-type de "text/html", "text/plain" pour être une demande correspondante.
Quantityconsume : Définissez le type de contenu dont la soumission est demandée.
Quantitys : 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 renverra
@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 méthode de requête 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 obtenir la valeur du paramètre entrant
Quantityvalue : le nom du paramètreQuantity requis : définition Si le paramètre entrant est requis, 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 du. La valeur déclarée est affichée, entrez le paramètre. Le nom du paramètre est le même que la valeur. S'il n'y a pas de déclaration explicite, comme déclaré de la première manière, le nom du paramètre d'entrée est le même que le nom de la variable du paramètre de fonction.
3.@PathViriable : utilisé pour définir les valeurs des paramètres de chemin
●value : le nom du paramètre ●required : définit si 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, puis ce chemin sera N'importe quelle valeur, @PathVariable pourra obtenir la valeur du chemin en fonction de la valeur.
4.@ResponseBody : En agissant sur la méthode, le résultat complet du retour peut être renvoyé dans un certain format, tel que json ou format XML.
@RequestMapping("/{myname}/pathVariable2.do") @ResponseBody public String pathVariable2(@PathVariable(value = "myname") String name){ System.out.println("myname = "+name); return "index"; }
Il renvoie non pas une page, mais une chaîne " index " est imprimé directement sur la page, ce qui est en fait similaire au code suivant.
PrintWriter out = resp.getWriter(); out.print("index"); out.flush();
5、@CookieValue:用于获取请求的Cookie值
@RequestMapping("/requestParams.do") public String requestParams(@CookieValue("JSESSIONID") String cookie){ return "index"; }
6、@ModelAttribute:
用于把参数保存到model中,可以注解方法或参数,注解在方法上的时候,该方法将在处理器方法执行之前执行,然后把返回的对象存放在 session(前提时要有@SessionAttributes注解) 或模型属性中,@ModelAttribute(“attributeName”) 在标记方法的时候指定,若未指定,则使用返回类型的类名称(首字母小写)作为属性名称。
@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"; }
如上代码中,使用了@ModelAttribute("user")注解,在执行控制器前执行,然后将生成一个名称为user的model数据,在控制器中我们通过注解在参数上的@ModelAttribute获取参数,然后将model应用到控制器中,在jsp页面中我们同样可以使用它,
<body> ${user.username} </body>
7、@SessionAttributes
默认情况下Spring MVC将模型中的数据存储到request域中。当一个请求结束后,数据就失效了。如果要跨页面使用。那么需要使用到session。而@SessionAttributes注解就可以使得模型中的数据存储一份到session域中。配合@ModelAttribute("user")使用的时候,会将对应的名称的model值存到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"; } }
结合上一个例子的代码,加了@SessionAttributes注解,然后请求了两次,第一次session中不存在属性名为user的值,第二次请求的时候发现session中又有了,这是因为,这是因为第一次请求时,model数据还未保存到session中请求结束返回的时候才保存,在第二次请求的时候已经可以获取上一次的model了
注意:@ModelAttribute("user") UserEntity user获取注解内容的时候,会先查询session中是否有对应的属性值,没有才去查询Model。
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
