spring mvc与struts2区别

spring mvc  DispatherServlet

struts2       strutsPrepareAndExecuteFilter    

struts1  ActionServlet

其中struts2 是通过过滤器实现 ,struts1 跟spring mvc都是经过servlet匹配方式

spring mvc

struts2 区别  主要是spring mvc接受参数来自参数列表,局部变量 ,而且是单列

                              struts2 接受页面传值通过成员变量,原型,每次请求都会实列化一个action,因为线程安全问题。主要原因就是成员变量跟局部变量。这样的话strus2跟耗资源了

还有其他主要就是配置的区别了。

多线程访问成员变量与局部变量 转 

http://blog.csdn.net/gaogaoshan/article/details/23910355

如果一个变量是成员变量,那么多个线程对同一个对象的成员变量进行操作时,它们对该成员变量是彼此影响的,也就是说一个线程对成员变量的改变会影响到另一个线程。

如果一个变量是局部变量,那么每个线程都会有一个该局部变量的拷贝(即便是同一个对象中的方法的局部变量,也会对每一个线程有一个拷贝),一个线程对该局部变量的改变不会影响到其他线程。

 

成员变量多线程访问安全

ThreadLocal是JDK引入的一种机制,它用于解决线程间共享变量,使用ThreadLocal声明的变量,即使在线程中属于全局变量,针对每个线程来讲,这个变量也是独立的。 它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。在很多情况下,ThreadLocal比直接使用synchronized同步机制解决线程安全问题更简单,更方便,且结果程序拥有更高的并发性。 

详解:http://blog.csdn.net/gaogaoshan/article/details/9312703

猜你喜欢

转载自zhizhi555555.iteye.com/blog/2124305