1.jsp
________
<%@ page import=" pack1.class1.Bean1"%> 
<% 
Bean1 b = new Bean1; 
...
%> 当在2:00有用户请求该页面,并顺利完成响应,2:05又有第二个用户请求该页面,这时此前创建的b对象实例还在吗?JSP页面会不会重新利用先前的b对象,还是重新创建一个实例? Bean1类中含有静态属性或者静态方法,跟不含有静态属性或者静态方法.结果是不是一样?

解决方案 »

  1.   

    有篇文章说,JSP中用到的out,request,response,session,config,page,pageContext是线程安全的,application在整个系统内被使用,所以不是线程安全的. 并说下面的例子存在的多线程问题,
    <%@ page import=" 
    javax.naming.*, 
    java.util.*, 
    java.sql.*, 
    weblogic.common.* 
    " %> 
    <% 
    String name 
    String product; 
    long  quantity; 
    name=request.getParameter("name"); 
    product=request.getParameter("product"); 
    quantity=request.getParameter("quantity"); /*(1)*/ 
    savebuy(); 
    %> 
    <%! 
    public void  savebuy() 

       /*进行数据库操作,把数据保存到表中*/ 
        try { 
          Properties props = new Properties();  
          props.put("user","scott"); 
          props.put("password","tiger"); 
          props.put("server","DEMO");   
          Driver myDriver = (Driver) iver").newInstance(); 
          conn = myDriver.connect("jdbc:weblogic:oracle", props); 
          stmt = conn.createStatement(); 
          String inssql = "insert into buy(empid, name, dept) values (?, ?, ?,?)"; 
          stmt = conn.prepareStatement(inssql);  
          stmt.setString(1, name); 
          stmt.setString(2, procuct);    
          stmt.setInt(3, quantity); 
          stmt.execute(); 
        } 
        catch (Exception e)  
        { 
            System.out.println("SQLException was thrown: " + e.getMessage()); 
        }  
        finally //close connections and     {  
            try { 
              if(stmt != null) 
                stmt.close(); 
              if(conn != null) 
                conn.close(); 
            } catch (SQLException sqle) { 
                System.out.println("SQLException was thrown: " + sqle.getMessage()); 
            } 
        } 

    %>
    怎么解释这两个问题?
      

  2.   

    重新建一个,你去new多少个对象就有多少个实例,
    至于bean类里的静态属性和方法,和不是静态属性和方法里,不是一样,在tomcat中一个servlet容器对同一个servlet只实例一次,所以只存在一个进程生命里,所以在bean类里,静态类的属性和方法在整个bean类里只能是唯一,为所有这个bean类共享.