Contrôleur


Controller (Controller) est le cœur du système MVC. Il est responsable du traitement de toutes les requêtes initiées par le navigateur et de la détermination du traitement logique du contenu de la réponse. Le contrôleur est une classe Java standard et n'a besoin d'hériter d'aucune classe de base. . Via la classe La méthode expose l'interface à l'extérieur, et le résultat de retour de cette méthode déterminera le contenu spécifique de la réponse au navigateur

Ce qui suit est un exemple d'écriture du contrôleur dans le module WebMVC :

@Controller
public class DemoController {

    @RequestMapping("/sayhi")
    public IView sayHi() {
        return View.textView("Hi, YMPer!");
    }
}

Démarrez le service Tomcat et accédez http://localhost:8080/sayhi,得到的输出结果将是:Hi, YMPer!

À partir du code ci-dessus, nous pouvons voir qu'il y a deux annotations, à savoir :

  • @Controller : déclarez une classe en tant que contrôleur, et le framework scannera automatiquement toutes les classes qui déclarent cette annotation et les enregistrent en tant que contrôleurs au démarrage ;

    name : nom du contrôleur, la valeur par défaut est "" (ce paramètre n'est pas encore utilisé) 

    singleton : spécifie si le contrôleur est un singleton, la valeur par défaut ; est vrai ;

  • @RequestMapping : déclare le mappage du chemin de la requête du contrôleur, scope : classe ou méthode ;

    value : mappage du chemin de la requête du contrôleur, paramètre requis

    method[] : méthode de requête autorisée, la valeur par défaut est ; Méthode GET, plage de valeurs : GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE ;

    header[] : nom d'en-tête qui doit exister dans l'en-tête de la requête

    param[] : nom du paramètre qui doit exister dans la requête ;

Exemple 1 :

Créez un exemple de contrôleur non unique, les règles de la méthode du contrôleur sont les suivantes :

  1. La méthode du contrôleur ne prend en charge que l'accès POST et PUT
  2. Le paramètre d'en-tête de requête doit contenir x- ; request-with=XMLHttpRequest (c'est-à-dire pour déterminer s'il s'agit d'une requête AJAX) ;
  3. Le paramètre name doit exister dans les paramètres de la requête :
Cet exemple montre principalement ; comment utiliser les annotations @Controller et @RequestMapping pour configurer les contrôleurs et les méthodes du contrôleur ;
La méthode du contrôleur doit être modifiée avec public, sinon elle sera invalide 
Étant donné que l'annotation @RequestMapping est également déclarée sur le contrôleur, le chemin de la requête ; le mappage de la méthode du contrôleur deviendra : /demo/sayhi ;

Exemple 2 :

L'exemple ci-dessus montre un certain contrôle sur la requête. Ce qui suit montre comment contrôler le résultat de la réponse :

Définissez les paramètres d'en-tête de réponse via des annotations :

from = "china"

age = 18

  1. Définissez le contrôleur pour qu'il renvoie la vue et le contenu via des annotations : "Salut, YMPer!"
    • @Controller(singleton = false)
      @RequestMapping("/demo")
      public class DemoController {
      
          @RequestMapping(value = "/sayhi",
              method = {Type.HttpMethod.POST, Type.HttpMethod.PUT},
              header = {"x-requested-with=XMLHttpRequest"},
              param = {"name=*"})
          public IView sayHi() {
              return View.textView("Hi, YMPer!");
          }
      }
  2. Trois annotations sont utilisées dans cet exemple :

    • @ResponseView : déclare que la méthode du contrôleur renvoie l'objet de vue par défaut, utilisé uniquement lorsque la méthode n'a pas de valeur de retour ou que la valeur de retour est invalide

      name : modèle de vue chemin du fichier, la valeur par défaut est "" ;

      type : afficher le type de fichier, la valeur par défaut est Type.View.NULL

    • @ResponseHeader : ajoutez des paramètres d'en-tête de réponse lors de la définition de la méthode du contrôleur pour renvoyer les résultats ; [] : en-tête de réponse @Header Parameter collection ;

      @Header : déclare une paire clé-valeur d'en-tête de réponse à la demande, uniquement pour le transfert de paramètres ;
    • name : nom du paramètre d'en-tête de réponse, paramètre requis ; valeur du paramètre d'en-tête de réponse, la valeur par défaut est "" ;

      type : type de paramètre d'en-tête de réponse, prend en charge STRING, INI, DATE, la valeur par défaut est Type.HeaderType.STRING ;