LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: 正中下怀

关于jsp中的session问题

[复制链接]
发表于 2004-11-1 13:49:41 | 显示全部楼层
你要给出你bean的代码啊, 没有代码怎么修改?
 楼主| 发表于 2004-11-1 21:16:24 | 显示全部楼层
package com.javaLee.jsp.beans.counter;

import java.io.*;
import java.util.*;
import javax.servlet.http.*;
// import javax.servlet.jsp.*;

public class CounterBean implements Serializable {
        private Map counters = new HashMap();
       
        public int getCurrentValue(String uri) {
                int value = -1;
                int[] counter = (int[]) counters.get(uri);
                if (counter != null) {
                        value=counter[0];
                }
                return value;
        }

        public int getNextValue(String uri) {
                incrementValue(uri);
                return getCurrentValue(uri);
        }
       
        public void incrementValue(String uri) {
                synchronized (counters) {
                        int[] counter = (int[]) counters.get(uri);
                        if (counter == null) {
                                counter = new int[1];
                                counter[0] = 0;
                        }
                        counter[0]++;
                        counters.put(uri, counter);
                }
        }
}
发表于 2004-11-5 13:26:21 | 显示全部楼层
javabean 在jsp中有三种scope可选: page, session 和 application.  在bean的声明中 scope="session" 就是指session的作用域。
对于session的作用域,bean的instance在同一个用户的浏览下只初始化一个实例,在timeout之前都可使用这个bean。所以一楼需要做的就是在各page中设置同一个名字的bean instance, 并设置其scope为session,则多个page就共享这个session了。

application scope在所有用户中只初始化一个instance, 而page scope则每次都初始化。
在session的实现中(这是由app server自动实现的), server为每个用户的session分配一个uid,并记录到用户的cookie中。根据uid,server从他的map中得到已初始化的bean instance。如果没有,则新初始化这个bean的实例,并放入map中。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表