1. SpringMVC的简介:(为表现层提供了更好的解决方案)
2. SpringMVC的组成:
DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。
3. SpringMVC的原理图:
(1)DispatcherServlet
Spring提供的前端控制器,所有请求都要经过它来统一分发,在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位具体的Controller。
(2)HandlerMapping
能够完成客户请求到Controller映射。
(3)Controller
需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。
Controller将处理用户请求,这和Struts Action扮演的角色是一致的,一旦Controller处理完用户请求,则返回ModelAndView对象给DiSpatcherServlet前端控制器,ModelAndView中包含了模型(Model)和视图(View)。
(4)viewResolver
Spring提供的视图解析器(viewResolver)在Web应用中查找对象,从而将相应结果渲染给客户。
4. SpringMVC运行原理:
5. SpringMVC的管理方式:
SpringMVC是Spring中的一个模块,所以Spring对于SpringMVC的控制器管理更加简单方便,而且提供了全注解方式进行管理,使用简单,而Struts2需要采用很多的XML配置参数来管理。
6. SpingMVC的性能
1.SpringMVC比Struts2稍快,SpringMVC是基于方法的设计,Struts2是基于类。
2. SpringMVC开发效率高。
3. SpringMVC是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去。
4. Struts2是类级别的拦截,每次来了请求就创建一个Action,然后调用setter、getter方法把request中的数据注入; Struts2是通过setter、getter方法与request打交道,一个Action对象对应一个上下文。
7. SpringMVC的参数传递:
SpringMVC是通过方法的参数进行接收
Struts2是通过ValueStack进行传递和赋值
8. SpringMVC的验证:
SpringMVC支持JSR303、处理ajax的请求更方便
9. SpringMVC的注释@Controller:
在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。为了先对Controller 有一个初步的印象,以下先定义一个简单的Controller :
@Controller
public class MyController {
@RequestMapping ( "/showView" )
public ModelAndView showView() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName( "viewName" );
modelAndView.addObject( " 需要放到 model 中的属性名称 " , " 对应的属性值,它是一个对象 " );
return modelAndView;
}
}
在上面的示例中,@Controller 是标记在类MyController 上面的,所以类MyController 就是一个SpringMVC Controller 对象了,然后使用@RequestMapping(“/showView”) 标记在Controller 方法上,表示当请求/showView.do 的时候访问的是MyController 的showView 方法,该方法返回了一个包括Model 和View 的ModelAndView 对象。
(以前我们在用Struts2时,需要配置文件定义action的名字,在浏览器中写XXX.action才能访问action的方法,使用了SpringMVC就不需要配置action了)。
10 . SpringMVC的执行流程:
系统启动的时候,根据配置文件创建Spring容器,首先是发送Http请求到核心控制器DispatcherServlet,Spring容器通过映射器去寻找业务控制器。
使用适配器找到相应的业务类,在业务类时进行数据封装,在封装前可能涉及到类型转换,执行完业务类后使用ModelAndView进行视图转发,数据放在Model中,用map传递数据进行页面显示。
Spring注解将给我们的工作带来轻松,利用反射机制的原理实现的注解就是为解决大量的配置问题。
⑤SpringMVC与Struts比较的优点:
1. 核心控制器:SpringMVC的是Servlet,Struts的是Filter。
2. SpringMVC比Struts2更简单易学。
3. Struts是一个请求,一个Action,SpringMVC是单例模式的。
4. SpringMVC可以解决Struts需要进行大量的配置问题。
5. SpringMVC的开发速度和性能优于Struts,流程更容易理解。