Récemment, j'ai réalisé un projet qui a des exigences. Je souhaite implémenter la fonction de connexion automatique. En vérifiant les informations pertinentes, je prévois d'utiliser la surveillance des sessions pour le faire. Ce qui suit est une liste des méthodes de configuration du moniteur:
1. Ajoutez le code suivant au fichier web.xml du projet:
<! - Ajouter un écouteur de session -> <ouvoiteur> <auditeur-classe> Chemin d'écouteur </ auteur-classe> </diner>
2. Écrivez des cours Java.
classe publique SessionListener implémente httpSessionListener {public void SessionCreated (httpSessionEvent arg0) {// SimpledateFormat exécute lorsque la session est créée simpleformat simpleformat = new SimpledateFormat ("mm-ss-ms"); string nowTimes = SimpleFormat.Format (new ()); user u = Null; // system.out.println ("executL. "+ NowTimes +" _ "+ U); httSession seses = arg0.getSession (); string id = sess.getId () +" _ "+ ses.getcreationtime ();} public void sessionDestROYED (httpSessionSevent arg0) {// SimpledAtformat exécute lorsque la session défaillante Simpleformat SimpledateFormat ("MM-SS-MS"); String NowTimes = SimpleFormat.Format (new Date ()); //System.out.println("Session a expiré. Temps final: "+ NowTimes);}}Une fois la configuration terminée, j'ai réussi à saisir la méthode SessionDestRoyed après l'expiration de la session. J'étais prêt à effectuer l'opération de saut de page. J'ai soudainement découvert comment écrire un saut. J'ai été stupéfait et j'ai continué à surfer sur Internet pour demander au maître. J'ai constaté que ce moniteur avait été réalisé avec un traitement de statistiques de fond et je ne pouvais pas réaliser la fonction du saut de page.
Je ne peux abandonner cette méthode et commencer à utiliser des filtres pour l'implémenter
1. Ajouter la configuration du filtre dans web.xml
<filter> <filter-name> SessionFilter </ Filter-Name> <Filter-Class> com.orchestrall.web.helper.session.essionfilter </ filter-Class> </ Filter> <Lilter-Mapping> <Filter-Name> SessionFilter </ Filter-Name> <Url-Pattern> / Actions / * </url-Pattern>
2. Créez une nouvelle classe SessionFilter pour implémenter l'interface de filtre.
Classe publique SessionFilter implémente Filter {public void destroy () {// Todo Méthode générée automatiquement Stub} public void Dofilter (ServletRequest Response Response, HttServleRequest HttRequest = (httServleTrlest) httpResponse = (httpservletResponse) Response; httpSession session = httprequest.getSession (); // connecter urlstring loginurl = httprequest.getContextPath () + "/admin/login.jsp"; url.substring (url.LastIndexof ("/")); // Timeout Process (httprequest.getheader ("x-requied-with")! = null && httprequest.getheader ("x-requis avec"). "Timeout"); httpResponse.AddHeader ("LoginPath", Loginurl); chain.dofilter (demande, réponse); // impossible, sinon la demande errera} else {String str = "<script linguisse = 'Javascrip "'; </script>"; réponse.setContentType ("text / html; charset = utf-8"); // résoudre chinois Brized Try {printwriter writer. gens3. Client JS, utilisé pour le délai d'expiration de la session de demande Ajax
Pour jQuery
<script type = "text / javascript"> $ (document) .ajaxComplete (function (event, xhr, paramètres) {if (xhr.getResponseHeader ("SessionStatus") == "Timeout") {if (xhr.getResponseEader ("LoginPather")) {alert ("Session expires, s'il vous plaît log dans!"); Window.Location.replace (xhr.getResponseHeader ("LoginPath");} else {alert ("Demandez le délai d'expiration, veuillez vous connecter!"); </cript>Demande AJAX pour les extjs
Ext.ajax.on ('requestComplete', checkuseSessionStatus, this); function checkuseSessionStatus (conn, réponse, options) {if (réponse.getResponseHeader ("SessionStatus") == 'Timeout') {if (réponse.getResponseHeader ("LoginPather")) {alert ("Session expirèes, s'il vous plaît log dans log dans Encore une fois! "); window.top.location.href = réponse.getResponseHeader (" LoginPath ");} else {alert (" Demande Timeout, veuillez vous connecter à nouveau! ");}}}Si une certaine demande Ajax n'est pas affectée par la méthode globale, alors lors de l'utilisation de la méthode $ .ajax (), le paramètre global peut être défini sur False. Le code jQuery est le suivant:
$ .ajax ({url: "test.html", global: false // ne déclenche pas l'événement global ajax})Ce qui précède est l'exemple de code que l'éditeur vous a présenté que la session sautera automatiquement à la page de connexion après son expiration. J'espère que ce sera utile à tout le monde. Si vous voulez en savoir plus, veuillez faire attention au site Web de Wulin.com!