SpringMVC是基于spring的一个框架,实际上就是spring的一个模块,专门做web开发的。理解是servlet的一个升级。web的开发底层是servlet,框架是在servlet基础上加入了一些功能,让你做web开发更加方便。
SpringMVC就是一个Spring。Spring是容器,ioc能够管理对象,使用<bean>,@Component,@Repository,@Service创建业务对象,@Controller创建处理器对象。SpringMVC能够创建对象,放入到容器中(SpringMVC容器),SpringMVC容器中放的是控制器对象,我们要做的是使用@Controller创建控制器对象,把对象放入到SpringMVC容器中,把创建的对象作为控制器使用,这个控制器对象应该能接受用户的情求,显示处理结果,就当是一个servlet使用。使用@Controller注解创建的是一个普通类的对象,不是Servlet。SpringMVC赋予了控制器对象一些额外的功能。
web开发底层是servlet,SpringMVC中有一个对象是servlet:DispatherServlet(中央调度器)。DispatherServlet:负责接受用户的请求,用户把请求给了DispatherServlet,之后DispatherServlet把请求转发给我们的Controller对象,最后是Controller对象处理请求。
index.jsp--------DispatherServlet(Servlet)---------转发,分配给-----Controller对象(@Controller注解创建对象)
springmvc处理请求流程
1、发起some.do
2、tomcat(web.xml---url-pattern知道 *.do的请求给DispatcherServlet)
3、DispatcherServlet(根据springmvc.xml配置知道some.do---doSome())
4、DispatcherServlet把some.do转发给MvController.doSome()方法
5、框架执行doSome()把得到ModelAndView进行处理,转发到show.jsp
上面的过程简化方式:
Some.do----DispatcherServlet----MyController
Springmvc执行过程源代码分析:
1、Tomcat启动,创建容器的过程。通过load-on-start标签指定的1,创建DisapatcherServlet对象,DisapatcherServle它的父类是继承HttpServletd的,它是一个servlet,在被创建时,会执行init()方法。在init()方法中,
//创建容器,读取配置文件
WebApplicationContext ctx = new ClassPathXmlApplicationContext(“springmvc.xml”);
//把容器对象放入到ServletContext中
getServletContext().setAttribute(key, ctx);
上面创建容器的作用:创建@Controller解析所在的类的对象,创建MyController对象。
这个对象放入到springmvc容器中,容器是map,类似map.put(“myController”,MyController对象)
2、请求处理过程
使用servlet方法
3、
springmvc处理请求流程
1、发起some.do
2、tomcat(web.xml---url-pattern知道 *.do的请求给DispatcherServlet)
3、DispatcherServlet(根据springmvc.xml配置知道some.do---doSome())
4、DispatcherServlet把some.do转发给MvController.doSome()方法
5、框架执行doSome()把得到ModelAndView进行处理,转发到show.jsp
上面的过程简化方式:
Some.do----DispatcherServlet----MyController
Springmvc执行过程源代码分析:
1、Tomcat启动,创建容器的过程。通过load-on-start标签指定的1,创建DisapatcherServlet对象,DisapatcherServle它的父类是继承HttpServletd的,它是一个servlet,在被创建时,会执行init()方法。在init()方法中,
//创建容器,读取配置文件
WebApplicationContext ctx = new ClassPathXmlApplicationContext(“springmvc.xml”);
//把容器对象放入到ServletContext中
getServletContext().setAttribute(key, ctx);
上面创建容器的作用:创建@Controller解析所在的类的对象,创建MyController对象。
这个对象放入到springmvc容器中,容器是map,类似map.put(“myController”,MyController对象)
2、请求处理过程
使用servlet方法