在对Struts2应用之前,先了解一下Struts2。在此我给出Struts1与Struts2的区别,通过它们之间的区别来了解Struts2。
1、Action类的区别
Struts1要求Action类继承一个抽象类(Action或ActionSuport),Struts1使用抽象类编程而不是接口;
Struts2可以实现Action接口,也可以不实现,Struts2提供一个ActionSuport基类去实现常用接口。
2、线程模式的区别
Struts1的Action是单例模式并且是线程安全的([url=http://hi.baidu.com/java%BD%F8%D0%D0%C7%FA/blog/item/de35d9d3c7711e83a0ec9cf1.html]当然单例也是有它的好处[/url]),开发时要注意Action资源必须是线程安全且同步;
Struts2的Action对象为每个请求产生一个实例,因此没有线程安全问题。
3、Servlet依赖与否
Struts1中的Action依赖于Servlet API;
Struts2中的Action不依赖容器,允许Action脱离容器被单独测试。
4、对象的捕获输入区别
Struts1使用ActionForm对象捕获输入,所有的ActionForm必须继承一个基类。最糟糕的是开发时经常创建多余的基类,最后造成冗余;
Struts2直接使用Action属性作为输入属性,简化多了。
5、表达式语言的区别
Struts1使用JSTL、EL表达式,但对集合和索引属性的支持非常脆弱;
Struts2可以使用JSTL,但也支持一个较强大的表达式语言——OGNL,我个人觉得它是Struts2的一个亮点。
总结了这5点,还有其它的我就不多说了。
1、Action类的区别
Struts1要求Action类继承一个抽象类(Action或ActionSuport),Struts1使用抽象类编程而不是接口;
Struts2可以实现Action接口,也可以不实现,Struts2提供一个ActionSuport基类去实现常用接口。
2、线程模式的区别
Struts1的Action是单例模式并且是线程安全的([url=http://hi.baidu.com/java%BD%F8%D0%D0%C7%FA/blog/item/de35d9d3c7711e83a0ec9cf1.html]当然单例也是有它的好处[/url]),开发时要注意Action资源必须是线程安全且同步;
Struts2的Action对象为每个请求产生一个实例,因此没有线程安全问题。
3、Servlet依赖与否
Struts1中的Action依赖于Servlet API;
Struts2中的Action不依赖容器,允许Action脱离容器被单独测试。
4、对象的捕获输入区别
Struts1使用ActionForm对象捕获输入,所有的ActionForm必须继承一个基类。最糟糕的是开发时经常创建多余的基类,最后造成冗余;
Struts2直接使用Action属性作为输入属性,简化多了。
5、表达式语言的区别
Struts1使用JSTL、EL表达式,但对集合和索引属性的支持非常脆弱;
Struts2可以使用JSTL,但也支持一个较强大的表达式语言——OGNL,我个人觉得它是Struts2的一个亮点。
总结了这5点,还有其它的我就不多说了。