系统XP,tomcat5.5,jdk1.5.0.javabean中用的都是基本是这样的

public class SearchBean{

  public ing sortFlag;

  public void setSortFlag(int sortFlag){

      this.sortFlag=sortFlag;

  }

  public int getSortFlag(){

     return this.sortFlag;

  }

}

在网页中是这样使用的

<jsp:useBean scope="session"/>

<%myBean.setSortFlag(一个int类型的变量);%>

<%=myBean.getSortFlag();%>

整个结构大体是这样的

问题:单个用户访问的时候都没问题,当有两个以上用户同时访问的时候返回来的值有时候就乱了(比如用户A,setSortFlag(2);用户BsetSortFlag(3),正常情况用户A应该得到2,用户B应该得到3,当同时访问的时候出现的结果是不可预料的用户A有时候得到的值是3,用户B情况类似).

问题解决中......

-------------------------------------------------------------------------------------------------

终于明白是怎么回事了:servlet线程安全问题.jsp的核心是servlet,所以也会出现这个问题.

引起servlet线程安全问题的原因:实例变量,类变量(static定义的)都会引起线程安全问题,本地变量则总是线程安全的.

解决方法1:jsp默认isThreadSafe是true,这样就允许多个客户访问,将它改为false就不会出现这个问题了,不过降低了效率(只有当一个客户线程访问完后才能执行另一个客户线程).

解决方法2:将涉及到线程安全的方法加上同步(synchronized),效果与法1类似,降低了效率.

解决方法3:将实例变,类变量该为本地变量.