• SpringMVC


    SpringMVC概述

    什么是SpringMVC

    • SpringMVC就是一个Spring内置的MVC框架。

    • MVC框架,它解决WEB开发中常见的问题(参数接收、文件上传、表单验证、国际化等等),而且使用简单,与Spring无缝集成。支持 RESTful风格的URL请求。

    • 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。

    SpringMVC作用

    MVC模式(Model-View-Controller):解决页面代码和后台代码的分离。

    SpringMVC原理

    如果使用Servlet开发在接收请求参数,数据共享,页面跳转等操作相对比较复杂。servlet是java进行web开发的标准,既然springMVC是对servlet的封装,那么很显然SpringMVC底层就是Servlet,SpringMVC就是对Servlet进行深层次的封装。

    SpringMVC执行流程和原理

    流程图

    springMVC

    流程描述

    01 用户发送出请求被前端控制器DispatcherServlet拦截进行处理。
    02 DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。
    03 HandlerMapping找到具体的处理器(查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。
    04 DispatcherServlet调用调用具体的处理器(Handler/Controller)。
    05 Controller执行完成返回ModelAndView对象。
    06 HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。
    07 DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。
    08 ViewReslover解析ModelAndView后返回具体View(视图)给DispatcherServlet。
    09 DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
    10 DispatcherServlet响应View给用户。

    涉及组件分析

    1 前端控制器DispatcherServlet(不需要程序员开发)由框架提供,在web.xml中配置。
    作用:接收请求,响应结果,相当于转发器,中央处理器。

    2 处理器映射器HandlerMapping(不需要程序员开发)由框架提供。
    作用:根据请求的url查找Handler(处理器/Controller),可以通过XML和注解方式来映射。

    3 处理器适配器HandlerAdapter(不需要程序员开发)由框架提供。
    作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler中的方法。

    4 处理器Handler(也称之为Controller,需要程序员开发)
    注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler。
    作用:接受用户请求信息,调用业务方法处理请求,也称之为后端控制器。

    5 视图解析器ViewResolver(不需要程序员开发)由框架提供。
    作用:进行视图解析,把逻辑视图解析成真正的物理视图。
    SpringMVC框架支持多种View视图技术,包括:jstlView、freemarkerView、ThymeleafView等。

    6 视图View(需要工程师开发)
    作用:把数据展现给用户的页面
    View是一个接口,实现类支持不同的View技术(jsp、freemarkerf等)

    流程总结

    SpringMVC需要程序员完成的工作有三个:

    1 配置前端控制器DispatcherServlet。

    2 开发后端控制器Handler/Controller。

    3 开发视图View。

    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发生的异常

  • 相关阅读:
    条件类的设计
    条件对象的设计
    又是一个星期天,明天又要开始一周的工作了,想想上周的工作情况,不怎么理想。
    自动设置的类,版本2,在设计上比前一个版本有进步。
    最近写了一个自动保存设置的类。
    关于异常信息"未找到成员"
    表达式类的设计
    IExtenderProvider 接口的应用.实现自定义组件LilyValidateProvider
    IIS404的问题
    程序开发[对象的旅行]
  • 原文地址:https://www.cnblogs.com/hydc/p/13782598.html
Copyright © 2020-2023  润新知