美文网首页Java速记手册
Spring04——Spring MVC 全解析

Spring04——Spring MVC 全解析

作者: Java面典 | 来源:发表于2020-03-29 18:41 被阅读0次

    前文分别介绍了 Spring IOC 与 Spring AOP 的相关知识,本文将为各位大概带来 Spring MVC 的知识点。关注我的公众号「Java面典」,每天 10:24 和你一起了解更多 Java 相关知识点。

    处理流程

    SpringMVC 处理流程.PNG
    1. 用户发送请求至前端控制器 DispatcherServlet;
    2. DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器;
    3. 处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet;
    4. DispatcherServlet 调用 HandlerAdapter 处理器适配器;
    5. HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器);
    6. Controller 执行完成返回 ModelAndView;
    7. HandlerAdapter 将 Controller 执行结果 ModelAndView 返回给 DispatcherServlet;
    8. DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器;
    9. ViewReslover 解析后返回具体 View;
    10. DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中);
    11. DispatcherServlet 响应用户。

    常用注解

    基本注解

    @RequestMapping:给控制器方法绑定一个 uri;
    @ResponseBody:将 Java 对象转成 json,并且发送给客户端;
    @RequestBody:将客户端请求过来的 json 转成 Java 对象;
    @RequestParam:当表单参数和方法形参名字不一致时,做一个名字映射;
    @PathVarible:用于获取 uri 中的参数,比如 user/1 中 1 的值。

    Rest风格的新api

    @RestController:相当于 @Controlle r+ @ResponseBody;
    @GetMapping:还包括 @DeleteMapping、@PostMapping、@PutMapping 等相当于 @RequestMapping 加对应的 http 请求方法;

    其他注解

    @SessionAttribute:声明将什么模型数据存入session;
    @CookieValue:获取 cookie 值;
    @ModelAttribute:将方法返回值存入 model 中;
    @HeaderValue:获取请求头中的值。

    使用技巧

    中文乱码

    通过配置 Spring MVC 字符编码过滤器来解决Post 请求中文乱码的问题,在 web.xml 中添加:

    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <!-- 设置编码格式 -->
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    文件上传

    1. 引入jar包: commons-io-1.3.2.jar 和 commons-fileupload-1.2.1.jar;
    2. 配置xml:
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
    
    1. 控制器兼容:
    @RequestMapping("/upload")
    public void upload(@RequestParam("file") MultipartFile file) throws Exception {
        System.out.println(file.getOriginalFilename());
    }
    

    Spring 系列推荐

    Spring03——有关于 Spring AOP 的总结

    Spring02——Spring 中 Bean 的生命周期及其作用域

    Spring01——你应该了解的,有关 IOC 容器的一切

    相关文章

      网友评论

        本文标题:Spring04——Spring MVC 全解析

        本文链接:https://www.haomeiwen.com/subject/mmnglhtx.html