struts2学习笔记之一_struts1和struts2的区别

1.struts2是struts1和webwork的合体

2.struts1:基于servlet

  1)ActionServlet作用:

  (1)接受请求->寻找frombean>实例化formbean>实例化后组装进来>判断是否需要校验>如果需要校验再调用ActionForm的校验方法,返回值是AcctionErrors类型,返回给ActionServlet>判断返回的AcctionErrors有效性,如果有效存到request域中>再跳转到input页面(/xxx.jsp)

  (2)到Action页面>负责Action实例化>再把Action返回>在调用他的execute(ActionMapping am,ActionForm af,request,reponse)方法,返回ActionForward对象>对返回的对象进行解析>解析完再跳转到相应的jsp页面>

  缺陷:ActionServlet的任务过于集中,不容易维护,不容易扩展

  2)action是单例的(有同一个action实例处理所有的到达该action请求),所以不要再action中声明实例变量.(共享)

  3)actionForm:造成类的爆炸,

    4)耦合性搞,action类中需要引入struts1的api(ActionMapping ActionForm)同时还有元素的httpServlet(request,response)

3.struts2:基于Filter

  1)分离关注(来源于webwork,类似于spring aop),

     分离关注:将web开发中的常规任务剥离开来,分别交给不同组件(拦截器),处理.eg:参数传         递,类型的数据转换,国际化,文件上传,处理表单的重复提交

  2)action是原型(独占的,不共享,可以存放客户端的状态),

  3)没有actionForm,用pojo(action,javabean)接收数据,极大的减少了类的数量

  4)action:就是pojo,和struts2中的api和原生的servlet api松耦合,测试性,一致性,移植性和可维护性很高.

4.spring

  spring中出现了aop:不改变源代码,增加新的功能,通过代理实现.把功能定义到通知里面,

            把那些任务单独脱离出来,形成独立的一块,叫做切面

  

原文地址:https://www.cnblogs.com/avrilliu/p/3237998.html