关于javaweb网站并发安全性的一些小问题,求前辈戳入指点~

关于javaweb网站并发安全性的一些小问题,求前辈戳入指点~

偏爱自由 发布于 2021-11-24 字数 909 浏览 769 回复 3

有人说大网站不适合用SSH框架来做,我总结了一下无非就是说框架运行效率慢(毕竟底层封装了太多东西),但是没有人说是因为它安全性不够,我理解是这样的:
我们在开发的时候都会有用来存放原始类的model层,会有与数据库打交道的dao层,会有专注于业务的service层,还有负责前后台交互的action层,SSH中,struts2因为有自己的成员变量(用来接收参数信息),所以如果是单例模式是线程不安全的,struts1和springmvc由于没有成员变量,靠方法接收,所以采用单例模式是线程安全的,因此,spring在管理action层的时候是每一个线程(相当于客户端的一次请求)都会new一个新的action对象,service层和dao层由于没有成员变量因此用单例,即运行起来只实例化一次,至于数据库并发我们就交给spring和数据库的事务管理了,因此SSH一套设计流程下来只要我们不使用公共静态变量(共享变量
)是不会出现任何线程并发所带来的困扰的(当然是在理想化状态下),那么是不是说我们在用SSH开发中小型项目的时候可以不用考虑并发所带来的烦恼呢?还有就是大型项目一般用什么来开发?webservice吗?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苍暮颜 2021-12-01 3 楼

我在action的构造器里打印一句话,经过测试发现不用配置scope的时候我每次的请求也会new一次,但是service和dao层都是单例,是在tomcat启动的时候就实例化了的。。

醉酒的小男人 2021-11-24 2 楼

我感觉在项目中只要出现了共享资源就要考虑线程安全性,比如静态变量,比如数据库(数据库是典型的共享资源),所以针对数据库有了事务并发处理,现在大部分的高并发大概都是在和事务并发作斗争吧?我猜的,具体没接触过,所以才会这样问的,您能解释一下吗?

线程安不安全和框架有那么一点关系,但最主要还是取决于你的代码

>struts1和springmvc由于没有成员变量,靠方法接收,所以采用单例模式是线程安全的

struct1不清楚,springMVC有没有成员变量,还不是看你怎么写的。

#FFFFFF;">>E53333;font-family:'Microsoft YaHei', Verdana, sans-serif, 宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">spring在管理action层的时候是每一个线程(相当于客户端的一次请求)都会new一个新的action对象

#FFFFFF;">Spring的bean默认是单例,而不是每回都new,E53333;font-family:'Microsoft YaHei', Verdana, sans-serif, 宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">每回都new需要修改scope。