springMVC入门指南:DispatcherServlet详解


先来看代码:
你需要知道的知识
1.部署描述符=web.xml
2.<load-on-startup>表示的意思是:程序启动时就初始化DispatcherServlet
  startup表示应用程序启动
  load-on表示加载=初始化DispatcherServlet
  如果不存在这个标签表示,有请求时,才初始化
3.初始化DispatcherServlet时,该类会寻找应用程序中WEB-INF中的名为servletname-servlet.xml配置文件
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
//第一个问题:这个标签执行后会怎样?
//首先会初始化一个类org.springframework.web.servlet.DispatcherServlet(完全限定名)
//类名就是DispatcherServlet
//得到的实例命名为springmvc
//不晓得这样的实例会不会被注册到spring中呢?
//还以一个问题:它具体又是怎么初始化的呢?
//这两个问题的答案在后面
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <!--map all requests to the DispatcherServlet-->
    <url-pattern>/</url-pattern>
</servlet-mapping>
//这个标签就不分解了
//如果这一堆标签执行了会怎样:形成一种功能机制:
//到服务器的任何请求都将交由springmvc处理
//而这里的springmvc就是DispatcherServlet的实例
//意思就是任何请求都交给DispatcherServlet

再来看一段代码:
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/config/simple-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
这段代码比上段代码多了下面的这几行代码:
 <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/config/simple-config.xml</param-value>
 </init-param>
这是怎么回事?
为什么这里多这些代码?
原因是:
   在初始化DispatcherServlet类就必须加载一个配置文件
默认情况下,该文件名只要位于WEB-INF下,且名为springmvc-config.xml
自动就可以找到
   但是,这里文件名不是,路径也不是,所以要手动配置一下,
   告诉初始化的DispatcherServlet类,到哪里加载哪个而已啊

补充几个Controller的知识:
看一行代码:
ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response);
//这貌似是一个方法,返回值是一个ModelAndView
//接受的参数是HttpServletRequest request,HttpServletResponse response
//这方法能干嘛?
//是哪个类的方法?
//该方法是org.springframework.web.servlet.mvc.Controller接口的方法
//既然是接口,必然存在一个实现类
//实现类中必然会重写这个方法
//为了理解的方便,我们通常把该实现类视为Controler类
//当请求交给Servlet的时候,就会初始化request和response,并将请求映射到request中,
//controller作为处理请求的action,无非是获取请求参数
//将请求的数据放入response中
//将数据和视图放入ModelAndView中
//视图完全是用来展示数据的
//这并不是一个方法调用因为没有这样事情
//这实际上是接口中第一个方法定义
//接口中的方法定义与类中的方法定义不同,没有方法体
//这种没有方法体的在接口中定义的方法称为方法签名
ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response);
//问题是这种很少见到
//因为:spring2.5之前是这么做的,后来就不这么做了,都是注解的Controler类了,没有借口,而且可以处理多个请求

猜你喜欢

转载自blog.csdn.net/weixin_42204641/article/details/81563839
今日推荐