成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java中finalize()的另類用法

開發 后端
finalize,法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。本文主要介紹finalize()另類用法,一起來看。

Javafinalize()的另類用法,做過JAVA編程的都知道,在JAVA中有一種垃圾收集器的機制,當它運行時(通常在系統內存低到一定限度時自動運行),會回收不再使用的對象所占用的內存,所以,在JAVA程序中,我們通常只考慮創建對象,而從不關心對象的清除。Finalize()是JAVA為類提供的一種特殊方法。

垃圾收集器的工作過程大致是這樣的:一旦垃圾收集器準備好釋放無用對象占用的存儲空間,它首先調用那些對象的finalize()方法,然后才真正回收對象的內存。通過使用finalize(),就可以在垃圾收集器運行期間進行一些特殊的工作。下面一例就說明了finalize()的一種巧妙用法。

現在的商業應用系統越來越多的采用WEB形式。在WEB形式應用中,每一次頁面訪問是獨立的,前后不相關聯,哪怕多個用戶在同一時刻訪問應用的同一個頁面,用戶相互之間也是不知道的。如果想要檢查當前有哪些用戶正在使用系統(如準備恢復數據備份或進行系統升級時,系統管理員都很希望知道這些信息),該怎么辦呢? 基于Servlet、Jsp技術的WEB服務器提供了隱含的Session、Application對象,利用它可以幫開發者實現一些信息的持續保存和共享。當用戶訪問一個WEB應用時,WEB服務器會自動創建一個Session對象,該對象可以供用戶在會話期內在應用的所有頁面中共享數據; Application是WEB應用的一個全局對象。利用Session、Application對象,可以達到跟蹤所有用戶信息的目的。

當用戶打開瀏覽器開始請求WEB應用的登錄頁面時,WEB服務即為該客戶創建一個session,此后,在session的timeout時間內,該客戶都使用這個session(timeout時間可設置,如Tomcat服務器是在各應用的web.xml文件中設置)。如果使用IE瀏覽器, Session與客戶IP地址、客戶程序進程ID所共同標識的連接有對應關系,相同IP地址、相同進程的窗口(如通過IE-文件-新建-窗口打開的新窗口)具有同一個session,所以session可用于標識各個獨立的客戶應用連接。

下面是一個樣例:

為了方便處理,先建一個簡單類(user)用來表達用戶信息及存放sessionId:

 

  1. package com;  
  2. public class user {  
  3. public String name="";  
  4. public String sessionId="";  

 

另一個類(testSession)用于處理用戶的login、logout等動作信息,使系統可以跟蹤當前連接的用戶信息。

 

  1. package com;  
  2. import java.util.Vector;  
  3. import com.user;  
  4. public class testSession {  
  5. public user User;  
  6. private Vector vsid;  
  7. public testSession()  
  8. {  
  9. User=new user();  
  10. }  
  11. public boolean verify(String username,String password)  
  12. throws Exception //驗證用戶/密碼  
  13. {  
  14. return true;  
  15. }  
  16. public void setSessionVar(String sesid,Vector sid) {  
  17. this.User.sessionId=sesid;  
  18. this.vsid=sid;  
  19. }  
  20. private static synchronized void addappses(user puser,  
  21. Vector pvsid) { //記錄一個新連接的用戶  
  22. int pos=-1;  
  23. user l_user;  
  24. if (puser==null || pvsid==null)  
  25. return;  
  26. for(int i=0;i  
  27. l_user=(user)pvsid.get(i);  
  28. if(l_user.sessionId.equals(puser.sessionId)){  
  29. pos=i;  
  30. break;  
  31. }  
  32. }  
  33. if(pos==-1){  
  34. pvsid.add(puser);  
  35. }  
  36. else{  
  37. pvsid.set(pos,puser);  
  38. }  
  39. }  
  40. private static synchronized void removeappses(user puser,  
  41. Vector pvsid) { //移除一個退出的用戶  
  42. int pos=-1;  
  43. user l_user;  
  44. if (puser==null || pvsid==null)  
  45. return;  
  46. for(int i=0;i  
  47. l_user=(user)pvsid.get(i);  
  48. if(l_user.sessionId.equals(puser.sessionId)){  
  49. pos=i;  
  50. break;  
  51. }  
  52. }  
  53. if(pos!=-1){  
  54. pvsid.remove(pos);  
  55. }  
  56. }  
  57. protected void finalize() {  
  58. this.removeappses(this.User,this.vsid);  
  59. }  
  60. public boolean login(String username) throws Exception  
  61. //處理登錄  
  62. this.User.name=username;  
  63. this.addappses(this.User,this.vsid);  
  64. return true;  
  65. }  
  66. public boolean logout() throws Exception  
  67. //處理注銷  
  68. this. finalize();  
  69. this.User=null;  
  70. this.vsid=null;  
  71. return true;  
  72. }  

 

每一個用戶均建立一個testSession對象,來保存該用戶的信息。為了對類testSession進行說明,必須同時引人另一個文件logintest.jsp。這個用于示例的JSP文件提供一個簡單的界面進行登錄、注銷處理。文件內容如下:

 

  1. <%@ page import=" com.testSession,  
  2. java.util.Vector"%>  
  3. <%@page contentType="text/html;charset=GBK" %>  
  4. <% request.setCharacterEncoding(response.  
  5. getCharacterEncoding());%>  
  6. <%  
  7. String actionType=request.getParameter("actiontype");  
  8. String actionResult="";  
  9. if(actionType!=null) {  
  10. if(actionType.equals("login")){ // -1-  
  11. String userName=request.getParameter("username");  
  12. if(userName==null || userName.equals("")){  
  13. ;  
  14. }  
  15. else{  
  16. String password=request.getParameter("password");  
  17. if(password==null)  
  18. password="";  
  19. testSession ts=  
  20. (testSession)session.getAttribute("testSession");  
  21. if(ts!=null) { //-1.1-  
  22. session.removeAttribute("testSession");  
  23. if( !ts.User.name.equals(""))  
  24. ts.logout();  
  25. }  
  26. ts=new testSession();  
  27. if(!ts.verify(userName,password)) {  
  28. //驗證用戶與密碼,看是否合法用戶  
  29. actionResult="login fail";  
  30. //非法用戶,顯示錯誤信息  
  31. }  
  32. else//驗證成功  
  33. session.setAttribute("testSession",ts);  
  34. Vector app_vts=  
  35. (Vector)application.getAttribute("app_vts");  
  36. if(app_vts==null) {  
  37. app_vts=new Vector();  
  38. application.setAttribute("app_vts",app_vts);  
  39. }  
  40. ts.setSessionVar(session.getId(),app_vts);  
  41. ts.login(userName);  
  42. actionResult=userName+" login success";  
  43. }  
  44. }  
  45. }  
  46. if(actionType.equals("logout")){  
  47. testSession ts=  
  48. (testSession)session.getAttribute("testSession");  
  49. if(ts!=null) {  
  50. session.removeAttribute("testSession");  
  51. if( !ts.User.name.equals("")){ //-2-  
  52. actionResult=ts.User.name;  
  53. ts.logout();  
  54. }  
  55. session.invalidate();  
  56. }  
  57. actionResult=actionResult+" logout success";  
  58. }  
  59. }  
  60. else 
  61. actionResult="null";  
  62. %> 

 

 

【編輯推薦】

  1. C#執行Finalize方法
  2. 26.5.1 Finalize方法
  3. 4.6.8 對象析構與finalize方法
  4. 4.5.1.3 finalize()在該對象垃圾回收前調用
責任編輯:于鐵 來源: 幫考網
相關推薦

2010-11-23 11:16:35

MySQL表別名

2010-08-02 16:10:06

DB2數據庫

2015-03-13 09:30:23

iOS內存管理

2009-03-30 09:39:04

觀察者思想換位設計模式

2010-03-24 08:34:44

OSGiJava模塊化

2012-03-09 10:02:29

Java

2009-10-23 17:10:27

試用達人

2015-09-25 10:58:20

2020-03-10 18:53:16

移動支付另類支付APP

2012-06-15 17:50:26

2024-03-07 13:30:44

Java對象true

2009-09-07 10:37:32

C#執行Finaliz

2009-03-09 13:59:22

IDC行業

2009-09-09 16:06:08

對象

2009-12-25 09:54:56

linuxfdisk

2009-06-18 10:07:03

CriteriaHibernate

2009-06-26 16:15:04

Criteria的用法Hibernate

2023-05-11 16:47:21

playwright用法程序

2011-12-01 10:55:34

2010-05-21 13:34:53

MySQL數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线日韩不卡 | 精品视频久久久 | 国产午夜精品一区二区三区嫩草 | 精品久久久久一区 | 日日骑| 久久高潮 | 国产在线观看一区二区 | 欧美亚洲一区二区三区 | 亚洲91 | 亚洲精品电影在线观看 | 国产精品美女一区二区三区 | 国产亚洲精品久久19p | 日韩精品一区二区三区四区 | 欧美福利影院 | 中文字幕免费中文 | 日韩有码在线观看 | 国产精品久久久久久久粉嫩 | 午夜天堂精品久久久久 | 日韩av免费在线电影 | 精品久久久久久 | 成人免费共享视频 | 亚洲欧美在线观看 | 91视频在线观看 | 日本a v在线播放 | 欧美亚洲视频在线观看 | 国产欧美日韩一区二区三区在线 | 国产一区二区在线播放视频 | www.国产精| 国产美女自拍视频 | 久久免费精彩视频 | 国产精品视频不卡 | 国产在线精品一区二区三区 | 国产伦精品一区二区三区高清 | 99精品一区二区 | 污视频免费在线观看 | 久久久精品黄色 | 日韩精品免费 | 国产九九九九 | 日韩精品1区2区3区 成人黄页在线观看 | 欧美精品第一区 | 亚洲精品在线视频 |