使用jndi技术在jsp中打印Connection对象

坚强是说给别人听的谎言 提交于 2019-11-30 16:10:12

 

1、修改tomcat/conf目录下的context.xml,将以下信息复制进去

<Resource name="jdbc/shop"                
    <!--名字可随意取,该name值为通过上下文获取数据源的name参数后缀-->
              auth="Container"
              type="javax.sql.DataSource"
              maxActive="100"
              maxIdle="30"
              maxWait="10000"
              username="root"    <!--mysql 用户名-->
              password="123456"    <!--mysql 密码-->
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/shop?useUnicode=true&amp;characterEncoding=utf8"/>
              <!--localhost:3306/shop 表示本机中库名为shop的数据库-->

  将以上文本信息加到</Context> 标签上面 

     

 

 2、创建BaseDao类通过上下文获取数据源,以下的获取连接的方法

public Connection getConnection() {
        try {
            // 初始化上下文
            Context context = new InitialContext();
            //获取数据源
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/shop");
            // 获取连接
            connection = dataSource.getConnection();
        } catch (NamingException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }    return connection;
    }

    

 

 3、检查tomcat/lib目录中是否有包含mysql连接驱动Driver的jar包,没有百度下一个放进去,如果你的jar包是8以上的版本,context.xml中的driverClassName值改成"com.mysql.cj.jdbc.Driver",

       

 

 最后运行并在网页中打印Connection对象,且每次刷新,前面9位数字都会发生改变

 

 因为每次返回的对象都不一样,且如果你一直刷新页面,Connection对象还一直不关闭,再次刷新或重新打开网页时将发现浏览器一直在尝试打开状况

 

即使重新打开网页也是如此,除非你重新启动Tomcat服务才能打开网页      

        

 

 我觉得原因的Connection每次刷新页面都创建了一个对象,占用了很多资源,导致网页打不开;

  即使将Connection改成单例模式,也没有解决这个问题,暂没有想到解决办法

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!