我有个web工程,具体操作就是每次请求过来就做几次数据库的读写操作,做几次文件的读写操作。
1.web工程用到一个过滤器filter,一个请求过来先由这个过滤器处理一次然后在进行后面的操作,现在担心如果并发大的话filter会不会有问题?
2.在filter和servlet之间传递值的时候是用request.setattribute还是session.setattribute比较好?
3.工程里用到了数据库连接池(最多100个链接),一次请求过来后处理这个请求我要去操作数据库4次,现在我想是每次操作数据库时去链接池拿一条连接还是一直用一个链接(每次需要操作数据库时只是传递这个链接的对象过去)?
我有个web工程,具体操作就是每次请求过来就做几次数据库的读写操作,做几次文件的读写操作。
我的filter是这么写的:
request--->filter(befor方法)--(修改后的数据)-->servlet
servlet(执行完后)--(修改后的数据)-->filter(after方法)
(工程里有多个servlet,都共用这一个filter,servlet和filter之间有数据交互)
这样会不会对多并发或线程同步用影响?
我的数据库链接池是这么用的,就是在每个请求来了都拿一条链接,filter,servlet里的链接都是用的这一条,因为请求先到的filter,就先在filter里创建这个链接,用完就把这个链接用request.setAttribute("dp",dp)的对象传给servlet,servlet取到这条链接,在servlet里不管是select,还是insert都是用的这条链接,用的时候只是把这条链接的对象传过去。
最后执行完servlet后经过filter(after方法里还要用这链接)里用完在关掉。
大家说说这样的用法可以吗?
小弟才疏学浅,麻烦解释一下,谢谢各位
1.web工程用到一个过滤器filter,一个请求过来先由这个过滤器处理一次然后在进行后面的操作,现在担心如果并发大的话filter会不会有问题?
2.在filter和servlet之间传递值的时候是用request.setattribute还是session.setattribute比较好?
3.工程里用到了数据库连接池(最多100个链接),一次请求过来后处理这个请求我要去操作数据库4次,现在我想是每次操作数据库时去链接池拿一条连接还是一直用一个链接(每次需要操作数据库时只是传递这个链接的对象过去)?
我有个web工程,具体操作就是每次请求过来就做几次数据库的读写操作,做几次文件的读写操作。
我的filter是这么写的:
request--->filter(befor方法)--(修改后的数据)-->servlet
servlet(执行完后)--(修改后的数据)-->filter(after方法)
(工程里有多个servlet,都共用这一个filter,servlet和filter之间有数据交互)
这样会不会对多并发或线程同步用影响?
我的数据库链接池是这么用的,就是在每个请求来了都拿一条链接,filter,servlet里的链接都是用的这一条,因为请求先到的filter,就先在filter里创建这个链接,用完就把这个链接用request.setAttribute("dp",dp)的对象传给servlet,servlet取到这条链接,在servlet里不管是select,还是insert都是用的这条链接,用的时候只是把这条链接的对象传过去。
最后执行完servlet后经过filter(after方法里还要用这链接)里用完在关掉。
大家说说这样的用法可以吗?
小弟才疏学浅,麻烦解释一下,谢谢各位
解决方案 »
- 连接SVN时报错:文件夹“”已不存在是什么问题,如何解决
- IBatic中报:org.xml.sax.SAXParseException: Attribute "name" is required and must be specified for element type "property".
- 在MyEclipse 7.5中使用JSP调用Servlet该如何运行呢?
- 请问数据库持久层到底有什么作用和意义呀?
- 请教大虾个问题,小女我遇到的这个项目大吗?
- ★★★新手求助啊!怎么找工作啊!★★★
- 急!修改Tomcat默认目录和放置JavaBean的目录?(在线等待)
- 做个类似网络考试一样的东西,要老师出了题目,50个学生同时答题.而数据库要用小型的,不能用sqlserver,比如:dbase,跟数据库支持并发访问有
- 一个感觉很简单的提交问题,就是不行!!!!!!!!!
- spring cloud zuul如何高可用
- 请问 Jsp中Attribute和parameter的区别在哪里?
- myeclipse中的webroot目录
可以,如果并发量不大。
用ThreadLocal代替request.setAttribute存储数据库连接会更好些,不单单是servlet中能用到数据库连接。
我在filter创建了一个链接池对象,那么这个链接池是这个web工程里所有的servlet共用吗?
既然你已经用到了连接池,我想从池里面重新去拿连接与你将连接放入ThreadLocal中再去拿,开销是差不多的,连接池实际上就是一个大的map或table,ThreadLocal本质上也就是一个map,没必要想这么多。
个人认为,filter中用一个连接,用完还给连接池,到了servlet中重新从池中去拿。
实际想想,如果并发量真大的话,你老把连接占用着,反而不利。
另外,你说“我在filter创建了一个链接池对象”,这句话有问题,实际情况是,你应该用JNDI方式,让服务器为你建一个链接池对象(推荐),你只负责去取这个对象就是了,而且注意,整个过程中有且只有这么一个连接池对象,因为刚才说了,他是单例模式的。
那个JNDI方式没接触过,回去看看,谢谢,希望您多给点意见。