SpringMVC与Struts
SpringMVC采用Servlet。而Struts采用filter
Filter在容器启动之后即初始化;服务停止以后销毁,晚于Servlet。Servlet在是在调用时初始化,服务停止后销毁。
Struts2框架是类级别的拦截,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,所以方法直接基本上是独立的。
SpringMVC实现了零配置,由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。
而Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,所以,SpringMVC执行效率和性能高于Struts2,但是开发效率略比Struts2差一些。
Struts2有自己的拦截Interceptor机制,SpringMVC可以采用独立的Aop方式也有自己的拦截器AbstractInterceptor
视图解析器 会 根据 把控制器返回的逻辑视图名 确定 渲染模型的视图文件的物理位置。
SpringMvc原理
根据登录流程解释SpringMvc的原理
用户进入登录页面,输入用户名和密码进行登录请求,将登录请求发给DispatcherServlet,调用handleradapter,根据请求的路径来确定执行哪个控制器,在控制器中处理业务逻辑,从数据库中调出用户名和密码的数据,跟request.parameter获得的数据进行比较,如果用户名密码正确,则将用户放入model中,ModelAndView mv = new ModelAndView(viewname:“detail.jsp”, model:“person”,person),以ModelAndView对象发送给DispatcherServlet,通过视图解析器ViewReolver由detail.jsp得到物理地址/WEB-INF/view/detail.jsp,对mv对象进行视图渲染,即把数据在物理视图上显示,再返回给用户。
一、用户发送请求到dispatcherservlet
二、dispatcherservlet接受到请求,调用HandlerMapping映射处理器
三、HandlerMapping经过处理返回给dispatcherservlet一个handler对象
四、dispatcherserlvet将handler对象发送给HandlerAdaptor适配处理器
五、HandlerAdaptor经过适配调用相应的Controller
六、Controller执行相应的逻辑返回给HandlerAdaptor一个ModelAndView对象
七、HandlerAdaptor将ModelAndView对象返回给dispatcherservlet
八、dispathcerservlet将ModelAndView对象通过视图解析器进行解析,得到一个View对象
九、dispatcherserlvet再根据View对象进行视图的渲染
十、将渲染后的结果返回给用户