SpringMVC [réponse de traitement, annotations SpringMVC (@RequestParam, @RequestHeader, @CookieValue)] (3) - explication détaillée complète (résumé d'apprentissage --- de l'entrée à l'approfondissement)

 

Table des matières

​SpringMVC          traite les données de réglage du domaine de réponse _context

SpringMVC traitement response_request transfert et redirection 

Annotations communes de SpringMVC :

Annotation SpringMVC_@RequestParam

 SpringMVC注解_@RequestHeader、@CookieValue

@RequestHeader

 @CookieValue

Annotation SpringMVC_@SessionAttributes

Annotation SpringMVC_@ModelAttribute  

Prise en charge du style SpringMVC annotation_RESTful


 

SpringMVC gère les données de réglage du champ response _context

 La portée du contexte signifie qu'elle est valide dans toute l'application. La transmission de valeurs à la portée de contexte dans SpringMVC ne peut être réalisée qu'à l'aide de l'objet ServletContext. Cependant, cet objet ne peut pas être directement injecté dans les paramètres de la méthode et doit être obtenu via l'objet HttpSession.

1. Écrire la méthode du contrôleur

@RequestMapping("/c2/hello7")
public String setContextModel(HttpSession session){
    ServletContext servletContext = session.getServletContext();
    servletContext.setAttribute("age",10);
    return "xiaotong";
}

2. Écrire des pages jsp

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<html>
    <head>
        <title>百战不败</title>
    </head>
    <body>
        <h1>你好!${requestScope.name}</h1>
        <h1>地址是!${sessionScope.address}</h1>
        <h1>年纪是!${applicationScope.age}</h1>
    </body>
</html>

SpringMVC traitement response_request transfert et redirection 

 Dans le cas précédent, nous avons constaté que la valeur du champ de demande peut être transmise à la page jsp, c'est-à-dire que la couche inférieure de la vue via l'analyseur de vue est le transfert de la demande.

Si nous ne voulons pas utiliser de résolveur de vue lors du saut, nous pouvons utiliser HttpServletRequest natif pour le transfert de requête ou HttpServletResponse pour la redirection :

@RequestMapping("/c2/hello8")
public void myForward1(HttpServletRequest request, HttpServletResponse response)
throws Exception{
    request.setAttribute("name","辛苦学堂");
    // 请求转发
    // request.getRequestDispatcher("/c2/hello9").forward(request,response);
    // 原生重定向
    response.sendRedirect("/c2/hello9");
 }
@RequestMapping("/c2/hello9")
public void myForward2(HttpServletRequest request){
    System.out.println("hello");
    System.out.println(request.getAttribute("name"));
}

SpringMVC fournit également un moyen plus simple de transfert et de redirection des demandes :

@RequestMapping("/c2/hello10")
public String myForward3(HttpServletRequest request){
    request.setAttribute("name","辛苦学堂");
    // 请求转发
    return "forward:/c2/hello9";
    // 重定向
    // return "redirect:/c2/hello9";
}

SpringMVC implémente les fonctions du contrôleur via des annotations. Ensuite, nous étudierons en détail les annotations courantes de SpringMVC :

Annotations communes de SpringMVC :

 Annotation SpringMVC_@Controller

Fonction : marquez le contrôleur et remettez-le au conteneur Spring pour la gestion.

Emplacement : Au-dessus de la classe

 Annotation SpringMVC_@RequestMapping

 Rôle : définir le chemin de la requête pour la méthode du contrôleur

 Position : au-dessus d'une méthode ou d'une classe. Utilisé sur une classe, cela signifie que toutes les méthodes de contrôleur de la classe utilisent cette adresse comme chemin parent.

 Les attributs:

         1. valeur/chemin : chemin de la requête

         2. méthode : Spécifiez la méthode de requête

         3. params : spécifie les paramètres de la requête qui doivent être envoyés

         4. headers : Spécifiez les en-têtes de requête que la requête doit contenir

@Controller
@RequestMapping("/c3")
public class MyController3 {
     /*
        访问路径为 /c3/annotation1
        支持post和get请求
        请求时必须带有age参数
        请求时必须带有User-agent请求头
     */
    @RequestMapping(path = "/annotation1",method =
{RequestMethod.GET,RequestMethod.POST},params = {"age"},headers = {"User-agent"})
    public String annotation1(String username){
        System.out.println(username);
        return "xiaotong";
   }
}

Annotation SpringMVC_@RequestParam

 Rôle : Obtenir les paramètres de la requête dans la méthode du contrôleur

 Position : avant le paramètre de méthode

 Les attributs:

        1. name : Spécifiez le nom du paramètre de requête

        2. defaultValue : définir la valeur par défaut du paramètre

        3. obligatoire : si le paramètre est un paramètre qui doit être transmis

/*
    定义请求的参数名为username,默认值为sxt,不是必须的参数
*/
@RequestMapping("/annotation2")
public String annotation2(@RequestParam(name = "username",defaultValue = "txc",required =
false) String name){
    System.out.println(name);
    return "baizhan";
}

 SpringMVC注解_@RequestHeader、@CookieValue

@RequestHeader

 Rôle : Obtenir les données d'en-tête de la requête dans la méthode du contrôleur

 Position : avant le paramètre de méthode

 @CookieValue

Rôle : Obtenir les données des cookies dans la méthode du contrôleur

Position : avant le paramètre de méthode

/*
  获取User-Agent请求头
  获取JSESSIONID的Cookie值
 */
@RequestMapping("/annotation3")
public String annotation3(@RequestHeader("User-Agent")
String userAgent, @CookieValue("JSESSIONID") String jSessionId){
    System.out.println(userAgent);
    System.out.println(jSessionId);
    return "xiaotong";
}

 

Annotation SpringMVC_@SessionAttributes

 Fonction : stocker les données dans le modèle de modèle dans le domaine de session

 Emplacement : Au-dessus de la classe

@Controller
@RequestMapping("/c4")
// 将模型中的name数据保存到session中
@SessionAttributes("name")
public class MyController4 {
    @RequestMapping("/t1")
    public String t1(Model model){
        // model中保存name数据
        model.addAttribute("name","北京大乱斗");
        return "xiaotong";
   }
    @RequestMapping("/t2")
    public String t2(HttpSession session){
        // 从session中获取name数据
      System.out.println(session.getAttribute("name"));
        return "xiaotong";
   }
}

Annotation SpringMVC_@ModelAttribute  

 

 Fonction 1 : Définir la méthode spécifiée à exécuter avant les autres méthodes du contrôleur

 Position : au-dessus de la méthode

@Controller
@RequestMapping("/c5")
public class MyController5 {
    @ModelAttribute
    public void before(){
        System.out.println("前置方法");
   }
    @RequestMapping("/t1")
    public String t1(){
        System.out.println("t1");
        return "baizhan";
   }
}

Fonction 2 : obtenir des données du modèle de modèle et attribuer des valeurs aux paramètres

Position : avant le paramètre de méthode

@Controller
@RequestMapping("/c6")
public class MyController6 {
    // 前置方法向Model中设置数据
    @ModelAttribute
    public void before(Model model){
        model.addAttribute("name","辛苦学堂");
   }
    // 该参数不是从请求中获取,而是从Model中获取
    @RequestMapping("/t1")
    public String t1(@ModelAttribute("name") String name){
        System.out.println(name);
        return "xiaotong";
   }
}

 

Prise en charge du style SpringMVC annotation_RESTful

Introduction au style RESTful

Le style RESTful est un style de conception de chemin d'URL. Dans le chemin d'URL RESTful, toutes les données sur le réseau peuvent être considérées comme une ressource, qui peut être un morceau de texte, une image ou un objet Java. Et chaque ressource occupera un chemin réseau, peu importe si la ressource est ajoutée, supprimée, modifiée ou cochée, le chemin d'accès est le même.

URL traditionnelle :

    Trouvez l'étudiant avec l'identifiant 1 : http://localhost:8080/student/findById?id=30

    Supprimez l'étudiant dont l'identifiant est 1 : http://localhost:8080/student/deleteById?id=30

URL de style REST :

    Trouvez l'étudiant dont l'identifiant est 30 : http://localhost:8080/student/30

    Supprimez l'étudiant dont l'identifiant est 30 : http://localhost:8080/student/30

 Alors comment distinguer quel type d'opération est la ressource ? Selon différents procédés de demande, il est jugé quelle opération est en cours d'exécution.

Nous avons déjà appris deux méthodes de requête, la requête GET et la requête POST, et il existe quatre méthodes de requête pour accéder aux URL de style RESTful :

       1. Requête GET : opération de requête

       2. Requête POST : ajouter une opération

       3. Requête DELETE : opération de suppression

       4. Requête PUT : modification de l'opération

URL de style REST :

       Trouvez l'étudiant dont l'id est 30 : http://localhost:8080/student/30 GET method request

       Supprimez l'étudiant dont l'identifiant est 30 : http://localhost:8080/student/30 DELETE request

Avantages du style RESTful :

La structure est claire, conforme aux normes, facile à comprendre et facile à développer.

Je suppose que tu aimes

Origine blog.csdn.net/m0_58719994/article/details/131745061
conseillé
Classement