关于sqlSession被关闭的问题

关于sqlSession被关闭的问题

根据UserFindByIdServlet的编码,每次访问该servlet时都要创建一个新的的userDao,即使每次查询后关闭了sqlSession,应该不会对后续的查询有影响,因为每次都重新创建了一个userDao,都会产生一个新sqlSession,每次查询用到的sqlSession都不一样的,为什么出现后续查询sqlSession被关闭的情况,请老师详细解释一下,谢谢!

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好!

  1. Servlet在运行中只会初始化一次,每次请求只是不断的访问doGet或者是doPost方法

  2. Servlet的生命周期:

    1)Servlet 通过调用 init () 方法进行初始化:init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。说明:Servlet只会初始化一次

    2)Servlet 调用 service() 方法来处理客户端的请求。每次请求都会调用的doGet或者是doPost方法

    3)Servlet 通过调用 destroy() 方法终止(结束)。

    4)最后Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 慕沐8221787 提问者 #1
    好的,谢谢!
    2019-12-25 16:51:14
好帮手慕柯南 2019-12-25 15:17:06

同学你好!

很抱歉,老师这里笔误,还望见谅,老师是想说它是成员变量。UserDao是一个类,但同时它也是Servlet的成员变量、

http://img1.sycdn.imooc.com//climg/5e030c2b09682c3e06460169.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


  • 提问者 慕沐8221787 #1
    servlet在程序运行过程中只加载一次吗?不是请求一次加载一次?servlet的生命周期和运行机制是什么样的?请老师解释一下,谢谢!
    2019-12-25 15:41:31
好帮手慕柯南 2019-12-25 14:14:38

同学你好!

UserDao是Servlet的成员变量,在初始化Servlet时就会进行创建,并没有每次访问都重新new,除非Servlet被销毁。重新创建,可以在控制台打印输出

http://img1.sycdn.imooc.com/climg/5e02fe12096cd64905950501.jpg

使用的始终是一个对象,因此sqlSession也是同一个

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 慕沐8221787 #1
    UserDao是Servlet的成员方法?不是一个类吗?
    2019-12-25 14:40:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师