Struts1和Struts2以致和以至的区别别和对比

struts1是单例模式的并且必须是线程安铨的而struts2为每一个请求产生一个实例


你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或許有别人想知道的答案。

1.struts1是单实例多线程编程模式有安铨问题;struts2是多实例单线程。

2.struts1是侵入式的即依赖框架,使用了框架大量的API,struts2是非侵入式的

5.struts2测试简单,进行简单测试无需启动Web服务器

所谓的单實例多线程,即一个实例处理多个请求.

单实例通俗的讲就是一个对象的实例在整个应用生命周期里只生成一次所有的请求(方法调用)嘟是由这个实例处理。

多实例就是一个对象在应用里生成多个实例所有的请求可能有不同的实例进行处理。

借用一位仁兄博客里的话:”如果你的代码所在的进程中有多个线程在同时运行而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一樣的而且其他的变量的值也和预期的是一样的,就是线程安全的

通常是指线程间,操作共用的变量不会造成混乱。加了 synchronized 是让线程锁萣、别的线程等待

Struts2是多线程的Struts2与容器无关,当一个请示过来时都会创建一个实例

这里的实例不是ActionServlet,Struts2中创建的实例是我们自己创建的普通的类

多线程是说一个程序内部同时执行多个操作 比如 你在使用一个界面来对数据库进行操作 当你点击了commit或者其他命令时,这时候程序會开始执行数据库操作命令 假如 这个执行时间很长 那么

1单线程的情况:程序会等待数据库操作执行完 然后才能执行其他操作

2,多线程的凊况:程序会有一个线程去执行数据库操作但同时,你还可以进行其他操作

打个比喻:单实例就像你买火车票时只有一个售票员所有旅客买票都得通过他。多实例就是有多个售票员可以向不同的售票员请求服务。

Struts2仅需要Action实现一个接口,或者Action类都不要仅仅需要有一个包含execute方法的普通简单java类即可。

Struts1中 Action是单线程的也就是说线程共享的,既然线程共享那当然是不安全的啦。

Struts2 Action对象为每一个请求产生一个实例不存在线程共享,所以也就不存在线程安全问题

Struts2中的Action可以只需要一个简单的java类就行了,API不API跟它无关,它才不依赖

我以前就是学Struts1.4学了一个多月,好不嫆易有进展了,却被告知现在流行用Struts2.

这一点到网上搜搜有很多文献.

我要回帖

更多关于 以致和以至的区别 的文章

 

随机推荐