Le développement d'annotation MVC signifie un développement de classe basé sur les annotations. Pour chaque processeur défini, il n'est pas nécessaire de s'inscrire dans le XML.
L'inscription est terminée en annotant simplement les classes et les méthodes dans le code.
Définir le processeur
@Controller: la classe actuelle est un processeur
@RequestMapping: La méthode actuelle est une méthode de processeur, le nom de la méthode est arbitraire et la demande est traitée et répondu.
@Controller public class MyController {@RequestMapping (value = "/hello.do") public ModelandView docontrol (httpServLetRequest request, httpservletResponse réponse) {ModelandView mv = new ModelandView (); mv.addObject ("message", "méthode d'exécution"); mv.setViewName ("Bienvenue, neil!"); retour MV; }} La carte de demande peut être restreinte, par exemple
Copiez le code comme suit: @RequestMapping (value = "/ hello.do", params = {"name = neil", "! Age"}, méthode = requestMethod.post)
méthode = requestMethod.Post Type de soumission limité à la publication
params = {"name = neil", "! Âge"} Le nom du paramètre doit être transporté dans la demande limitée, la valeur est neil et l'âge du paramètre ne peut pas être transporté.
Acceptez les paramètres de demande
Si le nom du paramètre dans la demande est le même que le nom du paramètre de la méthode du processeur, il peut être obtenu directement.
@RequestMapping (value = "/ hello.do") public ModelandView docontroll (nom de chaîne, int age) {System.out.println ("name:" + name + ", âge:" + age); ModelAndView mv = new ModelAndView (); retour MV; }Si les noms de paramètres sont incohérents, vous devez le localiser via @RequestParam.
@RequestParam a trois propriétés
La copie de code est la suivante: docontroll (@RequestParam (name = "username") Nom de la chaîne, @RequestParam (name = "userage") int Age)
Variable de chemin @pathvariable
Les paramètres de la méthode du processeur peuvent provenir des paramètres transportés par la demande, ou des variables de l'URI, c'est-à-dire des variables de chemin.
Comme les paramètres normaux mentionnés ci-dessus, si le nom de la variable de chemin est incompatible avec le nom du paramètre qui reçoit sa valeur, vous devez indiquer le nom de la variable de chemin via les paramètres.
Comme indiqué ci-dessous, notez le nom d'utilisateur et le nom, l'âge et l'âge.
@Requestmapping (value = "/ {username} / {age} /hello.do") public ModelandView docontroll (@pathvariable ("username") Nom de la chaîne, @RequestParam int Age) {System.out.println ("name:" + name + "," + age); ModelAndView mv = new ModelAndView (); retour MV; }La méthode du processeur renvoie la valeur
Les quatre processeurs couramment utilisés avec annotation @Controller sont:
1, retour à ModelandView
Une fois la méthode du processeur terminée, il doit passer à d'autres ressources et transmettre des données entre les ressources redirigées, puis retourner ModelandView.
public ModelAndView Docontroll () {ModelAndView ModelAndView = new ModelAndView (); // les données passées ModelAndView.AddObject ("Name", "Neil"); ModelAndView.SetViewName ("/ user.do"); return ModelAndView; }2, retour au vide
Une fois la demande traitée, il n'est pas nécessaire de sauter et le processeur peut être remis au vide, comme la réponse de la demande asynchrone Ajax.
Si vous devez sauter, vous pouvez également utiliser le servletapi pour envoyer ou transmettre.
3, objet de retour
Le processeur peut renvoyer un objet objet, qui n'apparaît pas comme une vue logique, mais est utilisé pour afficher les données directement sur la page.
Renvoyant un objet objet, vous devez utiliser l'annotation @ResponseBody pour mettre les données JSON converties dans le poids de réponse.
@RequestMapping (value = "/ hello.do") @ResponseBody public ModelandView docontroll () {return new Student ("neil", 998); } Le front-end obtient des données
Fr.ajax ({url: "hello.do", complet: fonction (data) {alert (data.name + "" + data.age);}})De même, vous pouvez retourner la liste de collection, la carte, etc.
@RequestMapping (value = "/ hello.do") @ResponseBody public ModelandView docontroll () {list <Student> list = new ArrayList <Student> (); list.add (New Student ("A", 11)); list.add (New Student ("B", 22)); list.add (New Student ("C", 33)); Liste de retour; } Fr.ajax ({url: "Hello.do", complet: fonction (data) {$ (data) .each (function (index)) {alert (data [index] .name + data [index] .age);}}})4, retour à la chaîne
Il peut y avoir trois scénarios pour retourner une chaîne:
Nom de la vue logique
La chaîne renvoyée par le processeur peut spécifier le nom de vue logique et le convertir en une adresse de vue physique via la résolution de l'analyseur de vue.
Le dernier chemin d'accès réel = "Prefix" + Nom de vue logique + "suffixe"
Si vous ne spécifiez pas le pré-suuffleur, vous pouvez également renvoyer directement le nom de la vue physique, tel que
return "/web-inf/admin/welcome.jsp"
Rediriger la redirection
return "redirect: /admin/next.action";
Il équivaut à la réponse.sendRedirect (). Après le transfert, la barre d'adresse du navigateur devient l'adresse transmise.
Étant donné qu'une nouvelle demande est lancée, les paramètres d'origine ne peuvent pas être transmis à l'URL suivante lors du transfert.
Si vous souhaitez passer des paramètres, vous pouvez épisser les paramètres après URL et a = 1 & b = 2
Transfert
retourner "en avant: /admin/forward.action";
Il est équivalent à requier.getRequestDispatcher (). Forward (demande, réponse). Après le transfert, la barre d'adresse du navigateur est toujours l'adresse d'origine.
Le transfert n'exécute pas la nouvelle demande et la nouvelle réponse, mais partage une demande et une réponse avec la demande avant le transfert.
Les paramètres peuvent être réutilisés directement avant le transfert.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.