Spring MVC原理

2020-03-05  本文已影响0人  拼搏男孩

1、Spring MVC与Structs2的区别

2、Spring MVC原理

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传给ViewResolver视图解析器。
9.ViewReslover解析后返回具体View.
10.DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11.DispatcherServlet响应用户。


Spring MVC原理 (2).png

3、结合用户的登录请求解释Spring MVC原理

用户在前端页面填写好账号与密码后发送请求(/login)到前端控制器DispatcherServlet,DispatcherServlet收到请求后根据url调用HandlerMapping处理器映射器,处理器映射器根据xml配置或者注解查找到具体的处理器,比如login方法,然后生成这个类的对象一并返回给前端控制器,前端控制器拿到这个处理器对象后调用HandlerAdapter处理器适配器,由它去调用具体的处理器(Controller),在Controller中的login方法中拿到当前用户的账号密码,调用service方法,service层中又调用dao层,dao层根据账号密码在数据库中进行查询,并返回是否查找到的结果,一层一层返回给Controller,控制器根据查询结果返回不同的ModelAndView,存放的是虚拟的View,查询成功返回主页虚拟视图,查询失败返回当前页面的虚拟视图和错误信息,处理器适配器再将ModelAndView返回给前端控制器,前端控制器将ModelAndView传给ViewResolver视图解析器,两种不同的ModelAndView经过视图解析器解析后返回具体的View。前端控制器再根据具体的View进行视图渲染最后将渲染后的视图返回给用户。

4、文件上传

第一个属性指定的默认编码是UTF-8,第二个属性指定了最大上传文件的大小,单位是byte,第三个指定了上传文件的缓存路径。

PostMapping("/uploadFile")
public String uploadFile(@RequestParam("userName") String userName, @RequestParam("password") String password, @RequestParam("file")MultipartFile file) throws IOException {
    System.out.println("userName = "+userName);
    System.out.println("password = "+password);

    if(!file.isEmpty()){
        System.out.println("original fileName"+file.getOriginalFilename());
        File dest = new File("d:\\ceshi\\"+file.getOriginalFilename());
        file.transferTo(dest);
        BufferedReader br = new BufferedReader(new FileReader(dest));
        String str;
        while((str=br.readLine())!=null){
            System.out.println(str);
        }
        br.close();
    }
    return "redirect:/main/employees";
}

Spring MVC上传文件特别简单,最重要的一步是file.transferTo(dest)。

上一篇 下一篇

猜你喜欢

热点阅读