1.JSP中用到一个数据库连接的javabean,我想在登陆的时候建立一个数据库连接,然后一直保持这个连接,怎么实现?在JSP中调用跟别的JVAVBEAN调用也一样么?
  我的session设置成了永不过期(退出系统时销毁),<jsp:useBean>中的scope设置为session,可是退出再进的时候出错提  示对象已被关闭,俺没学过java,希望前辈指点下!
2.如果刷新页面,算不算一个新的session?这个是我照样子画的:
import java.sql.*;
public class DBbean
{
  private String dbdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
  private String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=roomdb";
  private String user="sa";
  private String password="2150";
  Connection conn=null;
  public DBbean()
{
  try{
      Class.forName(dbdriver);
     }catch(ClassNotFoundException e) 
  {
              System.out.println("DBconn ():"+e.getMessage());
              }
    }
public Connection getConn()//返回类型为Connection类对象
{
     if(conn!=null)
 return conn;
 else
 try{
    conn=DriverManager.getConnection(url,user,password);
    System.out.println("Success!!");
    
    }catch(SQLException e) {
             System.out.println(e.getMessage());
                                 }   return conn;}

解决方案 »

  1.   

    给你一段代码你自己研究研究吧
    package DBProcess;
    import java.sql.*;
    public class DBConn {
        Connection conn;
        Statement stmt;
        ResultSet rs;
        public DBConn() {
        }
        public void getconn()
        {
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                conn = DriverManager.getConnection("jdbc:odbc:NetBar(数据源的名称)");
            } catch (SQLException ex) {
                ex.printStackTrace();
            } catch (ClassNotFoundException ex) {
                ex.printStackTrace();
            }
        }
        public ResultSet execQuery(String SQL)
        {
            try {
                getconn();
                stmt = conn.createStatement();
                rs = stmt.executeQuery(SQL);
                return rs;
            } catch (SQLException ex) {
                ex.printStackTrace();
                return null;
            }    }
        public int execOther(String SQL)
        {
            try {
                getconn();
                stmt = conn.createStatement();
                int count = stmt.executeUpdate(SQL);
                return count;
            } catch (SQLException ex) {
                ex.printStackTrace();
                return 0;
            }
            finally
            {
                try {
                    stmt.close();
                    conn.close();
                } catch (SQLException ex1) {
                    ex1.printStackTrace();
                }
            }
        }    public static void main(String[] args) {
            DBConn dbconn = new DBConn();
        }
    }
      

  2.   

    scope="session"
      你用下scope="application"
      

  3.   

    session会话  刷新是不会关闭会话的 但是关闭浏览器该对象就消失了 
    jsp中可以用application;
    servlet可以用 getServletContext().setAttribute(arg0, arg1)
      

  4.   

    getServletContext().setAttribute("name", value); name是String value是对象
      

  5.   

    支持楼上getServletContext().setAttribute("name", value); name是String value是对象 
      

  6.   


    刷新页面时,session还是原来的么?还是新建了一个session?!
      

  7.   

    刷新页面的时候,session还是原来的~只要他的cookies里的session id 没有变,就是同一个session~
      

  8.   

    "退出再进的时候"
      你的退出是指什么啊?如果是关闭IE,那肯定SESSION就结束了;如果你只是刷新那就是同一SESSION。
      

  9.   

    我记得session的过期时间是服务器里的session设置决定的
    在自己的程序中也可以设置
      <session-config>
       <session-timeout>10</session-timeout>
      </session-config>
     这是设置了10分钟
    我一般的javaBean都是这么写的:
    不知道我理解对不对,见笑!.....import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;public class DB {
    public static ThreadLocal threadLocal = new ThreadLocal();

    public static Connection getConn() {
    Connection conn = (Connection)threadLocal.get();

    if(null == conn) {
    try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bbs", "root" , "root");
    threadLocal.set(conn);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    return conn;
    }

    public static void closeConn() {
    Connection conn = (Connection)threadLocal.get();

    if(conn != null) {
    try {
    conn.close();
    conn = null;
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

    public static void closePrstm(PreparedStatement prstm) {
    if(prstm != null) {
    try {
    prstm.close();
    prstm = null;
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

    public static void closeRs(ResultSet rs) {
    if(rs != null) {
    try {
    rs.close();
    rs = null;
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }