JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Servlet/JSP 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 session invalidate問題
gino1203





發文: 35
積分: 0
於 2005-02-01 15:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Dear all:
小弟jsp程式中使用了onunload這個功能,目的是在當user關閉視窗的時候,會將user的一些資料寫入DB並且關閉connection and session
但是因為我的onunload的內容是呼叫一支jsp程式(他會顯示一個警告視窗出來)然後再把資料寫入
因為我有參考過討論區的資料,先前提過,若用onunload,則當按Refresh也會啟動到此功能,結果問題來了
我的jsp程式前面都會判斷session是否存在,如果不存在就會導向到login的畫面
但是現在我按Refresh的時候,jsp判斷session是否存在的動作竟然會比我的onunload中invalidate session還要快,所以我按第一次refresh的時候不會導向到login的畫面,再按第二次的時候才會導向到login的畫面(因為session早在第一次refresh的時候被我幹掉了),所以想請教各位大大,該如何處理呢??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
擷取部分程式內容
 
<%@page import="java.util.*"%>
<%@page contentType="text/html;charset=utf-8"%>
<html>
<head>
<title>ONLINE SYSTEM < Testing1.1 ></title>
<%
    System.out.print("MAIN0....");
    String session_user = (String)session.getAttribute("USER_ID");
    String session_id = (String)session.getAttribute("SESSION_ID");
    if(session_user==null || session_id==null ){
    System.out.print("MAIN1--");%>
       <jsp:forward page="login.jsp" />
    <%}
    else
    {   
       session.setAttribute("PGM_ID","MAIN");  
       long now = (new Date()).getTime();
       long accessed = (new Date(session.getLastAccessedTime())).getTime();
       long checkt = (now - accessed)/1000;
    }      
%>
<script language="JavaScript">
<!--
function clearSession(){
window.open("closesession.jsp", "OpenClose", "height=150, width=300, top=250, left=250, toolbar=no, menubar=no, scrollbars=no,resizable=no,location=no, status=no");
}
-->
</script>
</head>
pacing="0"  frameborder="no" onunload="javascript:clearSession();">-->
<frameset id="frameset01" rows="66,*,0" cols="*" border="0" framespacing="0"  frameborder="no" onunload="javascript:clearSession();">
 

.
close session的jsp程式如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<%@page contentType="text/html;charset=utf-8"%>
<%@ page import="javax.naming.*,javax.sql.*,java.sql.*,java.util.Date, oracle.jdbc.*" %>
<html>
<head>
</head>
<%
    String session_user = (String)session.getAttribute("USER_ID");
    String pgm_id = (String)session.getAttribute("PGM_ID");
    long now = (new Date()).getTime();
    long accessed = (new Date(session.getLastAccessedTime())).getTime();
    long checkt = (now - accessed)/1000;
    System.out.print("CLOSE1");
    session.invalidate();
    try{
       Context ctx = new InitialContext();
       if(ctx == null )
           throw new Exception("Oh!NO! 沒有連上去!");
 
       DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/myoracle");
       if (ds != null) {
           Connection conn = ds.getConnection(); 
           if(conn != null && session_user != null)  {  
              
              String sql="INSERT INTO USERLOG VALUES('" + session_user + "','" + pgm_id + "'," + checkt +")";
              Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
              try{
                ResultSet rs=stmt.executeQuery(sql);
                System.out.print("CLOSE2");
              }catch(SQLException e)
                   {
                     System.out.println("insert error"+e.toString());
                   }
     }
     System.out.print("CLOSE3");
     conn.close();
       }         
     }catch (Exception e) {      
         e.printStackTrace(); 
         System.out.println("EXCEPTION!");
     }   
%>


我的環境
jdk1.4
tomcat5
xp
oracle


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
2915 session invalidate問題 gino1203 3350 2005-02-01 15:57
1979 Re:session invalidate問題 koji 37 2005-02-02 11:19
2180 Re:session invalidate問題 gino1203 587 2005-02-02 11:29
1970 Re:session invalidate問題 koji 133 2005-02-02 12:02
2136 Re:session invalidate問題 gino1203 38 2005-02-02 12:03
1816 Re:session invalidate問題 koji 32 2005-02-02 14:13
1937 Re:session invalidate問題 hkdennis2k 253 2005-02-02 14:19
1940 Re:session invalidate問題 gino1203 55 2005-02-02 14:23
1981 Re:session invalidate問題 hkdennis2k 97 2005-02-02 14:39
» JWorld@TW »  Servlet/JSP 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8