springmvc是单例,非线程安全前端
Struts2是线程安全的对每一个请求都产生一个实例spring
springmvc的入口是Servlet,而Struts2的filterjson
spring的前段控制器是DispatcherServlet安全
Struts2的前端的核心控制器是FilterDispatcher并发
struts2框架是类级别的拦截,每次来了请求就建立一个Action,而后调用setter getter方法把request中的数据注入
struts2其实是经过setter getter方法与request打交道的
struts2中,一个Action对象对应一个request上下文
spring3 mvc不一样,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去
在spring3mvc中,一个方法对应一个request上下文
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,参数的传递是直接注入到方法中的,是该方法独有的。
struts2是类级别的拦截, 一个类对应一个request上下文, struts是在接受参数的时候,能够用属性来接受参数, 这就说明参数是让多个方法共享的,这也就没法用注解或其余方式标识其所属方法了
intercepter的实现机制。struts有以本身的interceptor机制,spring mvc 用的是独立的AOP方式。这样致使struts的配置文件量仍是比spring mvc大,虽然struts的配置能继承,spring mvc使用更加简洁。
- 他们都是控制层框架,都是用来跳转页面和接受参数的;
- springmvc和spring是兄弟级别的关系,可是做用不同;
- 区别
- springmvc是单例的,struts2是多例的;由于struts2中存在全局变量,若是是单利模式,遇到并发状况会发生冲突;
- springmvc的前段控制器是dispatcherServlet,而Struts2的前段控制器是filterDispatcher;
- struts的注解是@action,经过value和result来定义访问路径和返回的结果集;
- springmvc的注解是@controller,经过@RequestMapping("")来定义访问路径,经过return返回字符串跳转页面;
- 普通参数的传递;Struts2传参时经过私有属性,提供get,set方法来传递参数;springmvc是经过方法括号中定义变量来接受参数的,经过ModelMap来传参;
- 日期类型的传递;Struts2直接传递字符串,后台Date就能够接受到,springmvc传参时须要定义一个注解@DateTimeFormat(pattern="yyyy-MM-dd")
- 文件格式的传递;struts2是私有化的文件和文件名,提供get set方法来获取到文件
- springmvc是经过注解@RequestParam('文件名')
- json传参,struts2一般是经过提供的beasAction工具类来传递;springmvc是经过@responseBody注解来定义传递
- request和response的获取,struts是经过beasAction提供的;springmvc是在方法后括号中定义来获取到的;HttpServletResponse ;HttpServletRequest