struts和struts2的区别

 我来答
育知同创教育
2016-03-06 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
Struts2与Struts的区别
从Struts2的发展过程来看,Struts2继承了Struts与WebWork的血脉,Struts2取两者之精华,形成新德框架,但是struts2还是更多的继承了struts的设计思想,并加入了WebWork的优点。在了解Struts2体系之前,让我们先看看struts2对struts做了哪些修改。
Struts2与struts的不同主要体现在以下几个方面。
(1) Action类

1》在struts中都是使用抽象类编程而不是接口,因此他要求开发Action类继承一个抽象的基类,如DispatchAction等。

2》Struts2则基于接口编程,我们的Action类可以实现一个Action接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。更加强大的是,在struts2中Action接口不是必需的,任何有execute()函数的pojo对象都可以用作struts2的Action类来使用。

(2) 线程模式

1》 struts的Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单列策略限制了struts Action能做的事,并且要在开发时特别小心,Action资源必须是线程安全的或同步的;

2》 struts2的Action对象为每一个请求产生一个实例,因此没有线程安全问题。

(3) Servlet依赖

1》 struts的Action依赖于Servlet API,当一个Action被调用时,HttpServletRequest和HttpServletResponse被传递给执行方法,例如:

publicActionForward execute(Actionmapping mapping,ActionForm Form,HttpServletRequestrequest,HttpServletResponse response){

}

2》 struts2的Action不依赖与容器,允许Action脱离容器单独被测试。如果需要,Struts2的Action任然可以访问初始的request和response。例如下面的这个类MyAction.Java,他可以通过ActionContext对象取得Session值,也可以通过ServletActionContext对象取得request对象。

Publicclass MyAction{
protected Object getSession(String key){
return ActionContext.getContext().getSession(key);
}
protectedHttpServletRequest getRequest(){
return(String)ServletActionContext.getRequest();
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式