Java est une utilisation alternative de finalize() Quiconque a fait de la programmation JAVA sait qu'il existe un mécanisme de garbage collector dans JAVA. runtime (généralement exécuté automatiquement lorsque la mémoire système est faible jusqu'à une certaine limite), la mémoire occupée par les objets qui ne sont plus utilisés sera recyclée. Par conséquent, dans les programmes JAVA, nous envisageons généralement uniquement de créer des objets et ne nous soucions jamais de l'effacement. objets. Finalize() est une méthode spéciale fournie par JAVA pour les classes.
Le processus de travail du garbage collector est à peu près le suivant : une fois que le garbage collector est prêt à libérer l'espace de stockage occupé par les objets inutiles, il appelle d'abord la méthode finalize() de ces objets, puis recycle réellement les objets. En utilisant finalize(), vous pouvez effectuer un travail spécial pendant que le garbage collector est en cours d'exécution. L'exemple suivant illustre une utilisation intelligente de finalize().
Les systèmes d'applications commerciales d'aujourd'hui adoptent de plus en plus la forme du WEB. Dans les applications de type WEB, chaque visite de page est indépendante et non liée. Même si plusieurs utilisateurs visitent la même page de l'application en même temps, les utilisateurs ne se connaissent pas. Que devez-vous faire si vous souhaitez vérifier quels utilisateurs utilisent actuellement le système (par exemple, lors de la préparation d'une restauration de données ou d'une mise à niveau du système, les administrateurs système aimeraient connaître ces informations fournies par les serveurs WEB basés sur la technologie Servlet et Jsp) ? caché Il contient des objets Session et Application, qui peuvent aider les développeurs à réaliser la sauvegarde et le partage continus de certaines informations. Lorsqu'un utilisateur accède à une application WEB, le serveur WEB créera automatiquement un objet Session, qui pourra être utilisé par l'utilisateur pour partager des données dans toutes les pages de l'application pendant la session. L'application est un objet global de l'application WEB. À l’aide des objets Session et Application, vous pouvez atteindre l’objectif de suivre toutes les informations utilisateur.
Lorsque l'utilisateur ouvre le navigateur et commence à demander la page de connexion de l'application WEB, le service WEB crée une session pour le client. Après cela, dans le délai d'expiration de la session, le client utilise. cette session (délai d'expiration Il peut être défini, par exemple, le serveur Tomcat est défini dans le fichier web.xml de chaque application). Si vous utilisez le navigateur IE, la session a une relation correspondante avec la connexion identifiée conjointement par l'adresse IP du client et l'ID de processus du programme client Windows avec la même adresse IP et le même processus (comme une nouvelle fenêtre ouverte via IE-File-New). -Window) ont la même session A, la session peut donc être utilisée pour identifier les connexions d'application client individuelles.
Ce qui suit est un exemple :
Afin de faciliter le traitement, créez d'abord une classe simple (utilisateur) pour exprimer les informations de l'utilisateur et stocker l'ID de session :
package com; public class user { public String name=""; public String sessionId=""; }# 🎜 🎜#Une autre classe (testSession) est utilisée pour traiter les informations de connexion, de déconnexion et d'autres actions de l'utilisateur, afin que le système puisse suivre les informations de l'utilisateur actuellement connecté.
package com; import java.util.Vector; import com.user; public class testSession { public user User; private Vector vsid; public testSession() { User=new user(); } public boolean verify(String username,String password) throws Exception //验证用户/密码 { return true; } public void setSessionVar(String sesid,Vector sid) { this.User.sessionId=sesid; this.vsid=sid; } private static synchronized void addappses(user puser, Vector pvsid) { //记录一个新连接的用户 int pos=-1; user l_user; if (puser==null || pvsid==null) return; for(int i=0;i l_user=(user)pvsid.get(i); if(l_user.sessionId.equals(puser.sessionId)){ pos=i; break; } } if(pos==-1){ pvsid.add(puser); } else{ pvsid.set(pos,puser); } } private static synchronized void removeappses(user puser, Vector pvsid) { //移除一个退出的用户 int pos=-1; user l_user; if (puser==null || pvsid==null) return; for(int i=0;i l_user=(user)pvsid.get(i); if(l_user.sessionId.equals(puser.sessionId)){ pos=i; break; } } if(pos!=-1){ pvsid.remove(pos); } } protected void finalize() { this.removeappses(this.User,this.vsid); } public boolean login(String username) throws Exception { //处理登录 this.User.name=username; this.addappses(this.User,this.vsid); return true; } public boolean logout() throws Exception { //处理注销 this. finalize(); this.User=null; this.vsid=null; return true; } }Chaque utilisateur crée un objet testSession pour enregistrer les informations de l'utilisateur. Afin de décrire la classe testSession, un autre fichier logintest.jsp doit être introduit en même temps. Cet exemple de fichier JSP fournit une interface simple pour le traitement de la connexion et de la déconnexion. Le contenu du fichier est le suivant :
<%@ page import=" com.testSession, java.util.Vector"%> <%@page contentType="text/html;charset=GBK" %> <% request.setCharacterEncoding(response. getCharacterEncoding());%> <% String actionType=request.getParameter("actiontype"); String actionResult=""; if(actionType!=null) { if(actionType.equals("login")){ // -1- String userName=request.getParameter("username"); if(userName==null || userName.equals("")){ ; } else{ String password=request.getParameter("password"); if(password==null) password=""; testSession ts= (testSession)session.getAttribute("testSession"); if(ts!=null) { //-1.1- session.removeAttribute("testSession"); if( !ts.User.name.equals("")) ts.logout(); } ts=new testSession(); if(!ts.verify(userName,password)) { //验证用户与密码,看是否合法用户 actionResult="login fail"; //非法用户,显示错误信息 } else{ //验证成功 session.setAttribute("testSession",ts); Vector app_vts= (Vector)application.getAttribute("app_vts"); if(app_vts==null) { app_vts=new Vector(); application.setAttribute("app_vts",app_vts); } ts.setSessionVar(session.getId(),app_vts); ts.login(userName); actionResult=userName+" login success"; } } } if(actionType.equals("logout")){ testSession ts= (testSession)session.getAttribute("testSession"); if(ts!=null) { session.removeAttribute("testSession"); if( !ts.User.name.equals("")){ //-2- actionResult=ts.User.name; ts.logout(); } session.invalidate(); } actionResult=actionResult+" logout success"; } } else actionResult="null"; %>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!