SpringMVC底层执行的原理与流程

这篇文章主要讲解了SpringMVC底层执行的原理与流程,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

10年积累的成都网站设计、成都做网站、外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有武陵源免费网站建设让你可以放心的选择与我们合作。

一个简单的HelloSpringMVC程序

先在web,xml中注册一个前端控制器(DispatcherServlet)

 <?xml version="1.0" encoding="UTF-8"?>
 
     
     
      springmvc
       org.springframework.web.servlet.DispatcherServlet
       
       
         contextConfigLocation
         classpath:springmvc-servlet.xml
       
       
       1
     
   
     springmvc
     /
   
 

配置文件(springmvc-servlet.xml)

HandlerMapper是处理器映射器-->根据请求的地址去找处理器(如案例中的"/hello")

HandlerAdapter是处理器适配器-->找到处理器后根据id去适配对应的controller(如适配到案例中的HelloController),controller会返回ModelAndView及其前端数据

ViewResolver是视图解析器,其作用为:

1.获取到ModelAndView中的数据

2.解析视图名称

3.拼接视图名称

4.数据渲染

 <?xml version="1.0" encoding="UTF-8"?>
  
   
    
   
     
     
   
 
    
 

controller层:

实现Controller接口,重写内部方法(一般不会使用,这是底层原理)

ModelAndView是模型、视图

 public class HelloController implements Controller {
   @Override
   public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
     ModelAndView mv = new ModelAndView();
     mv.addObject("msg","HelloSpringMVC!");
     mv.setViewName("test");
     return mv;
   }
 }

底层流程图

实线是SpringMVC已经帮你实现好了,虚线是需要自己手动

SpringMVC底层执行的原理与流程

以上仅是说明底层执行原理,实际开发并不会这样去使用!

在实际开发中SpringMVC推荐使用注解的方式

在注解开发中,不需要我们去配置处理器适配器和处理器映射器。

web.xml中只需配置DispatcherServlet前端控制器

 <?xml version="1.0" encoding="UTF-8"?>
 
   
   
     SpringMVC
     org.springframework.web.servlet.DispatcherServlet     
      contextConfigLocation
       classpath:springmvc-servlet.xml
     
     1
   
   
     SpringMVC
     /
   
 

在springmvc-servlet.xml中配置视图解析器等

  /*组件扫描,用于扫描controller下的包*/
                  /*静态资源过滤*/
                     /*这个就帮助我们配置了映射器以及适配器*/
 <?xml version="1.0" encoding="UTF-8"?>
 
     
     
      
     
       
       
     
 

contorller

 @Controller    //说明这类被Spring托管了
 @RequestMapping("/hello")
 public class HelloController {
   @RequestMapping("/h2")   //这个注解会执行视图解析器
   public String hello(Model model){
     model.addAttribute("msg","helloSpringMVCAnnotation");
     return "hello";
   }
 }

看完上述内容,是不是对SpringMVC底层执行的原理与流程有进一步的了解,如果还想学习更多内容,欢迎关注创新互联行业资讯频道。


标题名称:SpringMVC底层执行的原理与流程
文章URL:http://myzitong.com/article/ijdggs.html