1.DispatcherServlet
    按照上面的分析,有了web框架后,浏览器给服务器的请求,服务器会交给框架。从语法来讲,可以接收服务器请求的组件有Servlet、Filter,总的来说,框架需要一个请求入口
    image.png


    2.请求映射的配置
    暂时有两种规范:
    ①在xml文件中配置映射关系
    在web.xml中配置DispatcherServlet时,通过设置Servlet的参数指定框架的配置文件名称(默认要求配置文件必须放在src目录下)
    image.png
    我们规定xml中的映射关系配置如下(举例)
    image.png
    ②在注解中配置映射关系
    框架自定义@RequestMapping
    该注解作用在controller的方法上,表示请求与方法的映射关系
    例如
    image.pngimage.png是等同的

    1. package web.annotation;
    2. import java.lang.annotation.ElementType;
    3. import java.lang.annotation.Retention;
    4. import java.lang.annotation.RetentionPolicy;
    5. import java.lang.annotation.Target;
    6. //配置请求映射关系,指定哪个请求对应哪个controller的方法,作用在哪个方法上,就表示映射哪个方法
    7. @Target(ElementType.METHOD)
    8. @Retention(RetentionPolicy.RUNTIME)
    9. public @interface RequestMapping {
    10. public String value();
    11. }

    之前可以从xml文件中获得请求映射关系,现在需要从注解中获得映射关系,要想找到注解,就需要找到方法,需要找到controller类。
    为了更方便地找到controller类
    ①在web.xml文件中,指定寻找controller的基本包位置
    image.png
    ②找到的controller(包中)或许有一些类不做请求响应工作,为了更好地找到我们需要的类,框架自定义一个@Controller,该注解作用于controller类上,具有该注解的controller类才会通过反射寻找RequestMapping。

    1. package web.annotation;
    2. import java.lang.annotation.ElementType;
    3. import java.lang.annotation.Retention;
    4. import java.lang.annotation.RetentionPolicy;
    5. import java.lang.annotation.Target;
    6. /**
    7. * 作用在controller类上,表示这个类中有方法可以实现请求,可以扫描
    8. */
    9. @Target(ElementType.TYPE)
    10. @Retention(RetentionPolicy.RUNTIME)
    11. public @interface Controller {
    12. }

    **