当前位置: 技术问答>java相关
在servlet中如何实现多线程或同步的问题!!!(java高手请进)
来源: 互联网 发布时间:2017-03-14
本文导语: 1、我编写了一个jsp程序,此程序主要是调用一个servlet程序,通过servlet显示一个页面。 2、servlet与后台的数据库连接并从数据库中读取数据。 3、在servlet中的doget方法中定义了一个局部变量,用来存储页面(此变量为S...
1、我编写了一个jsp程序,此程序主要是调用一个servlet程序,通过servlet显示一个页面。
2、servlet与后台的数据库连接并从数据库中读取数据。
3、在servlet中的doget方法中定义了一个局部变量,用来存储页面(此变量为StringBuffert型)
4、因为从数据库中查询的记录可能是多条,所以在设计的过程中增加了分页显示的功能。
每次点击”下一页“时都要从数据库中读取数据,然后将数据和网页程序加到StringBuffer中,最后在显示。
5、当我连续点击下一页时,最后显示的页面可能出现两个页面显示在一起的情况。即上一页与本页的内容都显示在一屏。
请各位高手帮忙
2、servlet与后台的数据库连接并从数据库中读取数据。
3、在servlet中的doget方法中定义了一个局部变量,用来存储页面(此变量为StringBuffert型)
4、因为从数据库中查询的记录可能是多条,所以在设计的过程中增加了分页显示的功能。
每次点击”下一页“时都要从数据库中读取数据,然后将数据和网页程序加到StringBuffer中,最后在显示。
5、当我连续点击下一页时,最后显示的页面可能出现两个页面显示在一起的情况。即上一页与本页的内容都显示在一屏。
请各位高手帮忙
|
我觉得不是数据库的问题,也不是线程的问题,synchronized我认为没有必要
,你可以试一下response 的这几个方法setBufferSize(int),reset(),getBufferSize(), flushBuffer(), isCommitted()。在最后加上flushBuffer()或在前面加上reset()。
,你可以试一下response 的这几个方法setBufferSize(int),reset(),getBufferSize(), flushBuffer(), isCommitted()。在最后加上flushBuffer()或在前面加上reset()。
|
你可以用数据库的事务来解决,把事务隔离级设为不允许幻影读取。
|
jsp代码呢?贴点看看
|
把你的Servlet贴出来看看!这好像更数据库的事务没什么联系!!呵呵,或许我太菜了,不知道吧!
|
不允许幻影读取就是在访问数据库的时候,如果其他用户正在插入一个新的数据正好与你的查询条件相同,这样你再次查询,新的数据就出现了。
你在分页程序在下一页时又执行了一次查询,这时要有新数据出现就会也查询出来,这样的隔离级的效率很低。如果你是这个意思,可以试试。
事务隔离级设为
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE)
你在分页程序在下一页时又执行了一次查询,这时要有新数据出现就会也查询出来,这样的隔离级的效率很低。如果你是这个意思,可以试试。
事务隔离级设为
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE)