springmvc理解01

今天突然想整理下这段时间使用spring时的理解,以前学习和使用的spring是通过大量的配置文件来整合和启动的,现在来理顺一下这些配置文件之间的关系和应用

首先时web.xml几乎之前所用的所有的web项目都有这个配置文件那么他是干嘛的?
1.这个web.xml文件,是交给tomcat服务器来使用的,它存在的意义就是在tomcat启动时扫描web.xm配置文件,因为tomcat作为一个服务器那么她一定会对其他的东西进行整合,但是又不能在Tomcat中引入jar包那么就要有一个渠道来让外部的东西可以被tomcat所拿到,这个web.xml就是这个渠道。
2.我们看一下在spring使用中在web.xml中我们首先注册了个org.springframework.web.context.ContextLoaderListener对象,我们通过spring源码进入这个类中去看一下,里面是这样的

public class ContextLoaderListener extends ContextLoader implements ServletContextListener {
    public ContextLoaderListener() {
    }

    public ContextLoaderListener(WebApplicationContext context) {
        super(context);
    }

    public void contextInitialized(ServletContextEvent event) {
        this.initWebApplicationContext(event.getServletContext());
    }

    public void contextDestroyed(ServletContextEvent event) {
        this.closeWebApplicationContext(event.getServletContext());
        ContextCleanupListener.cleanupAttributes(event.getServletContext());
    }
}

在这个类中引入了import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;这两个很明显这两个是在tomcat的jar包中的而这个类的父类也是tomcat提供的。所以这个web.xml就是tomcat在启动时用来整合外部组件的入口。同理在web.xml中的前端控制器也是这样。
3.那么在web.xml中spring都配置了什么信息呢?分别是ContextLoaderListener(继承了ServletContextListener)和DispatcherServlet(继承了HTTPservlet),这两个对象中分别储存了springmvc和applicationContext的配置信息也就是这两部分的xml文件。通过这些的形式就可以把我们程序员所配置和整合的使用spring是所需要的信息放入tomcat和spring中来交给spring管理。
4.在ContextLoaderListener中调用了ContextLoader类中的initWebApplicationContext方法点进去看他会加载一个ServletContext对象ServletContext官方叫servlet上下文。服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象。这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。所以叫全局应用程序共享对象。这是交给tomcat的我们不管,
5.通过网上学习和阅读源码我了解了一下前端控制器这个类,我们在web.xml中创建了这个servlet并且配置他的拦截路径,他会对所有的请求进行拦截,然后通过我们在xml文件中配置的信息对请求进行处理,这个步骤基本上是将请求解析通过反射找到他的controller也就是所谓的handler(这块是处理器映射器来完成的)之后在来执行相应的逻辑方法代码然后返回一个视图对象(字符串或者是modelandview对象,这块是处理器适配器来调用方法完成的)最后将视图交给视图解析器按照配置好的信息处理视图并返回视图就完事了

原创文章 65 获赞 11 访问量 2068

猜你喜欢

转载自blog.csdn.net/qq_43147121/article/details/104232776