springmvc与struts2的区别
1,springmvc的入口时一个servlet,DispatcherServlet称为前端控制器,尔struts2入口是一个filter过滤器,struts2处理请求就是经过一系列的过滤器
2,struts2是多例的,基于类的开发,每次请求都会产生一个新的实例,不涉及线程安全,传递参数是通过类的属性,比如模型驱动,属性驱动
而springmvc和传统servlet开发一样,我们通常都是使用单例的(好像也可以设置成多例的,但是应该没人这么做吧),只实例化一次,这就涉及到线程安全,所以我们通常使用springmvc时是基于方法开发的,即一个URL对应一个方法,请求参数传递到方法形参,
补充:
单例以方法为单位,每一个请求就是调用一次方法,
多例以类为单位,每一次请求都会重新创建一个类,再具体到调用类里的某个方法
3,struts2采用值栈存储请求和响应数据,页面通过OGNL表达式获取数据
springmvc通过参数解析器将request请求内容解析,然后给方法形参赋值,把数据和视图封装到ModelAndView对象中
最后把ModelAndView模型数据返回给前端控制器,前端控制器请求视图解析器,返回视图对象,底层就是使用原始servlet通过request域把数据传输到页面
页面通过jstl,el什么的..把数据进行展示
总结: 就是一个单例,一个多例,一个有值栈,一个没有值栈,一个入口时Servlet,一个是Filter

浙公网安备 33010602011771号