Cet article présente des exemples de transmission de redirection et d'intercepteur dans SpringMVC. Il est partagé avec vous, comme suit:
Paramètres variables Lors de la conception de méthodes, utilisez数据类型... pour déclarer les types de paramètres, par exemple: public static void function(int... numbers)
Lors de la mise en œuvre du corps de la méthode, les paramètres variables sont traités comme un tableau
classe publique test {public static void main (String [] args) {System.out.println (test.sum (1,2,3)); System.out.println (test.sum (1,2,3,4,54)); } public static int sum (int ... nombres) {int sum = 0; for (int i = 0; i <nombres.length; i ++) {sum + = nombres [i]; } RETOUR SUM; }}Remarque: Dans chaque méthode, un seul paramètre variable est autorisé au maximum, et s'il existe un paramètre variable, il doit être le dernier paramètre.
Transfert et redirection
Dans la méthode de gestion des demandes dans le contrôleur, la méthode par défaut de renvoi d'une chaîne est en train de transmettre. La valeur transmise est le nom du composant View, tel que return "connexion", qui obtiendra essentiellement la page qui est enfin affichée en fonction du résolveur de vue (ViewResolver). La syntaxe de la redirection de retour: le chemin représente la redirection. Le contenu sur le côté droit de la redirection: est le chemin. Ce chemin utilise généralement un chemin relatif et est référencé en fonction du chemin de la barre d'adresse du client actuel comme norme. Par exemple, l'adresse actuelle est: http: // localhost: 8080 / project / user / reg.do, puis renvoyer "rediriger: login.do", puis rediriger vers http: // localhost: 8080 / project / user / login.do, si vous renvoyez "redirect: /main/index" ou retour " http: // localhost: 8080 / project / main / index.do
avant:
La méthode par défaut, mais vous pouvez également utiliser return "en avant: connexion"
La vue retournée doit être une vue, qui sera transmise à la vue spécifiée après avoir traversé l'analyseur de vue.
réorienter:
Redirection: renvoyer "Redirection: Login.do"
Renvoie un chemin d'accès à la méthode du contrôleur, pas une vue. Cela ne passera pas par l'analyseur de vue, mais sautera directement.
Exemple
@RequestMapping (value = "/ handle_reg.do", méthode = requestMethod.Post) public String handleReg (utilisateur utilisateur, ModelMap Map) {try {userService.reg (user); System.out.println ("Enregistré avec succès!"); return "redirect: login.do"; // redirige vers la méthode de contrôle de Login.do, Login.do correspond à Forwing à Login.jsp} Catch (UserNameConflictException e) {System.out.println (e.getMessage ()); map.put ("errorMessage", e.getMessage ()); return "erreur"; }} @RequestMapping (value = "login.do") String public handlelogin () {return "login"; }Intercepteur
Concepts de base
Utilisation d'interceptor
Classe d'intercepteur personnalisée
Créez une classe d'interception (démointercepteur) pour implémenter l'interface HandlerInterceptor
classe publique DémointerceptOrImplements HandlerInterceptor {/ ** * appelé avant que le processeur exécute * @param demande objet httpservletRequest, qui peut obtenir des paramètres de demande, etc. * @param réponse httpservletResponse objet * @param handler interceptor contrôleur objet * @rerurn Si le faux est renvoyé, le flux de traitement sera interrompu et le sous-concepteur des sous-traitants sera interrompu et le sous-concepteur sera interdit. Si True est renvoyé, les intercepteurs et processeurs ultérieurs seront exécutés * / Public Boolean Prehandle (HttpServLetRequest Request, HttpServletResponse Response, Object Handler) lance Exception {System.out.println ("pré-halte de DeMoInterceptor"); Retour Vrai; } / ** * appelé après l'exécution du processeur, et appelez avant de passer à la vue spécifiée * @param demande httpsservletRequest objet * @param réponse httpservletResponse objet * @param réponse httpservletResponse Object * @param handler interceptor contrôleur objet * @param modelView ModelView Object, qui store les résultats du traitement et les résultats de la vue * / public VOID PostHandle (demande httpservletRequest, réponse HttpServletResponse, gestionnaire d'objets, ModelandView ModelAndView) lève une exception {/ ** * 1. Vous pouvez concevoir votre propre logique, par exemple, dans certains cas, return, renvoie true * 2. Retour True signifie que le processeur et l'intercepteur suivant sont exécutés, return false Will the Processing Flux * / System.out.println ("Handler:" + Handler); System.out.println ("Exécution de PostHandler de Demointerceptor"); // Définissez le nom de la vue, puis une fois l'exécution terminée, il sautera vers la page index.jsp // ModelandView.SetViewName ("index"); } / ** * Appel * Une fois le traitement de la demande terminé, le public void afterCompletion (HttpServLetRequest Request, HttpServletResponse Response, Object Handler, Exception ex) lève l'exception {System.out.println ("DeMoInterceptor's afterCompletion Execution"); }}Configurer dans le fichier de configuration de Springmvc
Configuration
Doit être configuré dans l'ordre ci-dessus, sinon une erreur sera signalée
<! - Configurez l'intercepteur, où plusieurs intercepteurs peuvent être configurés -> <mvc: intercepteurs> <mvc: interceptor> <! - Configurez le chemin d'intercepteur et interceptez tous les mappages de méthode de processeur sous / utilisateur, par exemple: http: // localhost: 8080 / springmvc / user / ligin.do, cette demande sera interceptée:>>> <mvc: mappingPath = "/ user / *" /> <! - Configurez la méthode du contrôleur qui n'est pas interceptée par l'intercepteur, il s'agit d'une configuration facultative, telle que http: // localhost: 8080 / springmvc / user / index.do, ce ne sera pas intercepté -> <mvc: exclure-mappagePath = "/ user / index.do" <MVC: exclure-mappingpath = "/ user / login.do" /> <! - Configurez le bean de l'intercepteur, en spécifiant le nom complet de la classe -> <Ebanclass = "cn.tedu.spring.interceptor.demointerceptor"> </ bean> </ mvc: interceptor> </ mvc: interceptor>
La méthode d'implémentation
Prévu booléen publique (demande httpservletRequest, réponse httpservletResponse, gestionnaire d'objets)
Public void Posthandle (HttpServLetRequest Request, HttpServletResponse Response, Handler d'objet, ModelandView ModelandView)
public void afteracletion (httpservletRequest, httpservletResponse réponse, gestionnaire d'objets, exception ex)
Vérification de la connexion de la démonstration
Intercepteur personnalisé (LoginInterceptor)
Le processus spécifique est écrit très clairement dans la méthode du pré-maineur
classe publique LoginInterceptorImPlements HandlerInterceptor {/ * * appelé avant l'exécution du processeur (non javadoc) * 1. Obtenez la session * 2. Lisez la valeur UID dans la session * Si NULL, cela signifie qu'il n'y a pas de connexion, puis redirige directement vers l'interface de connexion et renvoie false en même temps. Il n'est pas nécessaire d'exécuter le processus ultérieur * Si ce n'est pas nul, cela signifie qu'il a été connecté, puis renvoie directement True et continue d'exécuter l'intercepteur ou le processeur public * / Public Boolean Prehandle (HttpservletRequest Request, httpservletResponse Response, objet Handler) lance Exception {httSession Session = request.getSession ();); // Obtenir l'objet session uid = session.getAttribute ("uid"); // Lisez l'objet en session // Si UID existe, vous pouvez vous connecter et terminer if (uid! = Null) {return true; // Renvoie true, si la connexion est réussie, vous devez exécuter le processus ultérieur} Response.SenDredirect (request.getContextPath () + "/ user / login.do"); // redirige vers l'interface de connexion return false; // retour false, le processus ultérieur n'a pas besoin d'être exécuté, et il est directement interrompu} public void Posthandle (HttpServleRequest Response HTTPServletResponse, gestionnaire d'objets, ModelandView ModelAndView lance exception {} public Void AfterCompletion (HTTPServleSter exception }}Configurer l'intercepteur dans Springmvc
Puisque ici, il saute simplement vers le centre des utilisateurs et doit vérifier la connexion, il correspond simplement à user_center.do
<! - Configurer les intercepteurs, où plusieurs intercepteurs peuvent être configurés -> <MVC: Interceptors> <MVC: interceptor> <mvc: mappingPath = "/ user / user_center.do" /> <beanclass = "cn.tedu.spring.interceptor.logininterceptor"> </Eban> </mvc: interceptor> </ mv: interceptor "
Ordonnance d'exécution de plusieurs intercepteurs
Exécutez en fonction de l'ordre configuré dans le fichier de configuration de SpringMVC, c'est-à-dire l'ordre des intercepteurs configurés sous <MVC: intercepteurs>. Si un intercepteur est effectué sur le même chemin, alors le premier intercepteur du premier configuré
La différence entre l'intercepteur et le filtre (différence principale)
Résumer
Les intercepteurs peuvent être utilisés lorsque plusieurs demandes nécessitent des tâches mêmes ou extrêmement similaires.
Développer un intercepteur bien, alors vous devez le configurer dans le fichier de configuration de Springmvc
Dans <MVC: Interceptors>, si plusieurs <MVC: Interceptors> sont configurés, plusieurs intercepteurs formeront une chaîne d'intercepteur. Si plusieurs intercepteurs sont configurés, ils intercepteront le même chemin, puis ils seront exécutés dans l'ordre des nœuds configurés.
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.