Java Web之SpringMVC框架

                 Java Web之SpringMVC框架

 

1. SpringMVC的简介:(为表现层提供了更好的解决方案)

  1. 可以插入的MVC结构(内置的SpringWeb框架、Struts Web框架)
  2. Spring.xml可以通过策略接口来实现框架高度的配置,即可以配置多种视图技术
  3. SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色

            SpringMVC代替Struts框架!!(Struts反射调用Action)

 

2. SpringMVC的组成:

DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。

 

3. SpringMVC的原理图:

 

Java Web之SpringMVC框架_第1张图片

 

 (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运行原理:

  1. 客户端请求提交到DispatcherServlet
  2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
  3. DispatcherServlet将请求提交到Controller
  4. Controller调用业务逻辑处理后,返回ModelAndView
  5. DispatcherServlet将查询一个或多个ViewResolver视图解析器,找到ModelAndView指定的视图
  6. 视图负责将结果显示给客户端

 

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,流程更容易理解。

你可能感兴趣的:(Java,Web开发框架)