我一直在使用struts 2,但由于一些原因,我正在转移(返回)Struts 1。我想知道它们之间的主要差异,如编程可用性和一般流程。
答案 0 :(得分:12)
让我们看一下struts 1.x和struts 2.x
之间的组件和功能差异 In struts 1.x front controller is ActionServlet
In 2.x front controller is FilterDispatcher
In struts 1.x we have RequestProcessor class
In 2.x we have Interceptors instead RequestProcessor will see about this concept later just remember as of now
In struts 1.x we have multiple tag libraries like, html, logic, bean..etc
In 2.x we do not have multiple libraries, instead we have single library which includes all tags
In struts 1.x the configuration fine name can be [any name].xml and we used to place in web-inf folder
In 2.x the configuration file must be struts.xml only and this must be in classes folder
In struts 1.x we have form beans and Action classes separately
In 2.x form bean, Action classes are combinedly given as Action class only, of course we can take separately if we want ;)
In struts 1.x properties file must be configured in struts-config.xml
But in 2.x we need to configure our resource bundle(s) in struts.properties file
In struts 1.x we have programmatic and declarative validations only
In 2.x we have annotations support too along with programmatic and declarative validations
功能差异
In struts 1.x declarative validations are done by using validation frame work
In 2.x, declarative validations are done by using xwork2 frame work by webwork the reason being, its support valuations through Annotations
In struts 1.x an Action class is a single ton class, so Action class object is not a thread safe, as a programmer we need to make it as thread safe by applying synchronization
In 2.x an Action class object will be created for each request, so it is by default thread safe, so we no need to take care about safety issues here
In struts 1.x we have only jsp as a view technology
In 2.x we have support of multiple view technologies like velocity, Freemarker, jasper reports, jsp bla bla
In struts 1.x Action class is having servlet dependency, because in execute() method accepts req, res parameter right ! so.
In 2.x Action class doesn’t have any servlet dependency, because its execute() method doesn’t accepts any parameters, however we can access all servlet objects with dependency injection
答案 1 :(得分:4)
In http://www.java-samples.com您可以找到快速完整的答案。换句话说,如果可以,请忘记Struts并仅使用Struts2 ...
生命终结Struts 1版本于2008年12月推出,版本为1.3.10。您仍然可以获得它并且仍然可以工作,但是没有支持或进一步开发。你在那里自己。
答案 2 :(得分:3)
Struts的创建者(Apache软件基础)对Struts 1和2的比较
Comparing Struts 1 and Struts 2
以下是上述链接中提供的内容,如果他们决定在未来更改链接或删除该页面,则可以使用。
行动类
线程模型
Servlet依赖
<强>可测强>
收集输入
答案 3 :(得分:1)
迫使你回到struts1的原因是什么?这不再是积极的开发?
可能有些人可以帮助您解决有关差异的原因,请通过以下主题 Struts2 Vs Struts1
我还建议您搜索SO以获取更多详细信息。我所知道的Struts2设计和工作流程与struts1完全不同,它的开发考虑了struts1的局限性。