乐趣区

SpringMVC-介绍

一、了解 SpringMVC

       大部分 java 应用都是 web 应用,展现层是 web 应用最为重要的部分,Spring 为展现层提供了一个优秀的 web 框架—SpringMVC。和众多其他 web 框架一样,它基于 MVC 的设计理念,此外,它采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。

       SpringMVC 通过一套 MVC 注解,让 POJO 成为处理的处理器,无需实现任何接口,同事,SpringMVC 还支持 REST 风格的 URL 请求。

       此外,SpringMVC 在数据绑定、试图解析、本地化处理及静态资源处理上都有许多不俗的表现。它在框架设计、扩展性、灵活性等方面全面超越了 Struts、WebWork 等 MVC 框架,从原来的追赶着一跃成为 MVC 的领跑者。

       SpringMVC 框架围绕 DispatcherServlet 这个核心展开,DispatcherServlet 是 SpringMVC 框架的总导演、总策划,它负责截获请求并将其分派给相应的处理器处 理。

二、了解 MVC

        1、模型(Model):负责封装应用的状态,并实现应用的功能。通常分为数据模型和业务逻辑模型,数据模型用来存放业务数据,比如订单信息、用户信息等;而 业务逻辑模型包含应用的业务操作,比如订单的添加或者修改等。通常由 java 开发人员编写程序完成,代码量最多

2、视图(View):视图通过控制器从模型获得要展示的数据,然后用自己的方式展现给用户,相当于提供界面来与用户进行人机交互。通常由前端和 java 开发人员成,代码量较多。

3、控制器(Controller):用来控制应用程序的流程和处理用户所发出的请求。当控制器接收到用户的请求后,会将用户的数据和模型的更新相映射,也就是调用模型   来实现用户请求的功能;然后控制器会选择用于响应的视图,把模型更新后的数据展示给用户。起到总调度的作用,Controller 通常由框架实现,使用时基本不需要编写代码

三、Springmvc 架构

       1. 用户发送请求到 DispatcherServlet 控制器

       2. DispatcherServlet 控制器根据请求路径到 HandlerMapping 映射器查询具体的 handler 处理器

       3. HandlerMapping 映射器根据用户请求查找与之对应的 HandlerExecutionChain 执行链再回传给 DispatcherServlet 控制器

       4. DispatcherServlet 控制器根据 handler 具体的实现方式调用 HandlerAdapter 适配器

       5.HandlerAdapter 适配器调用具体的 handler 处理器处理业务并返回 ModelAndView 到 DispatcherServlet 控制器

       6. DispatcherServlet 控制器将 ModelAndView 专递到 ViewResolver 视图解析器

       7.ViewResolver 视图解析器返回具体的视图到 DispatcherServlet 控制器

       8. DispatcherServlet 控制器渲染视图后响应给用户

四、Springmvc 常用注解:

        @Controller

       负责注册一个 bean 到 spring 上下文中
       @RequestMapping

       注解为控制器指定可以处理哪些 URL 请求
       @RequestBody

       该注解用于读取 Request 请求的 body 部分数据,使用系统默认配置的 HttpMessageConverter 进行解析,然后把相应的数据绑定到要返回的对象上 , 再把 HttpMessageConverter 返回的对象数据绑定到 controller 中方法的参数上

       @ResponseBody

       该注解用于将 Controller 的方法返回的对象,通过适当的 HttpMessageConverter 转换为指定格式后,写入到 Response 对象的 body 数据区

        @ModelAttribute

       在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了 @ModelAttribute 的方法

       在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方 法 入参对象添    加到模型中

       @RequestParam

       在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法

       @PathVariable

       绑定 URL 占位符到入参
       @ExceptionHandler

       注解到方法上,出现异常时会执行该方法
        @ControllerAdvice

       使一个 Contoller 成为全局的异常处理类,类中用 @ExceptionHandler 方法注解的方法可以处理所有 Controller 发生的异常

五、Springmvc 与 Struts2 的区别

       1、springmvc 基于方法开发的,struts2 基于类开发的。springmvc 将 url 和 controller 里的方法映射。映射成功后 springmvc 生成一个 Handler 对象,对像中只包括了一个 method。方法执行结束,形参数据销毁。springmvc 的 controller 开发类似 web service 开发。
       2、springmvc 可以进行单例开发,并且建议使用单例开发,struts2 通过类的成员变量接收参数,无法使用单例,只能使用多例。
       3、经过实际测试,struts2 速度慢,在于使用 struts 标签,如果使用 struts 建议使用 jstl。

退出移动版