嵌入式 Tomcat,可以在 Java 启动

    应用实现 Servlet 接口

    image.pngDispatcherServlet:service() 方法与 Tomcat 交互
    doDispatcher

    视图解析器:
    抽象类:ViewResolver
    实现类:Xml、Script

    Controller:与 DispatcherServlet 交互

    1. @Controller
    2. // RESTful 类型的 Controller,不返回视图,只返回数据
    3. @RestController
    4. // url 路径
    5. @RequestMapping
    6. // 返回 json 或者 text,而不是 ModelAndView
    7. @ResponseBody
    package cn.demojie;
    
    import cn.demojie.servlet1.MyServlet1;
    import java.io.File;
    import org.apache.catalina.Context;
    import org.apache.catalina.connector.Connector;
    import org.apache.catalina.startup.Tomcat;
    
    public class App {
      public static void main(String[] args) throws Exception {
        Tomcat tomcat = new Tomcat();
        Connector connector = new Connector();
        connector.setPort(8080);
        tomcat.setConnector(connector);
    
        // contextPath 表示 URL 中的根路径
        // 每个 contextPath 会对应一个静态资源路径
        Context context = tomcat.addContext("/demojie", new File(".").getAbsolutePath());
    
        // 把 Servlet 实例加入对应的 contextPath 中
        tomcat.addServlet("/demojie", "servlet", new MyServlet());
        tomcat.addServlet("/demojie", "servlet1", new MyServlet1());
    
        // 对于某个 context,将路径规则和 servlet 进行关联
        // 需要在 tomcat.addServlet 后面
        context.addServletMappingDecoded("/test/*", "servlet1");
        context.addServletMappingDecoded("/*", "servlet");
    
        tomcat.start();
    //    tomcat.getServer().await();
      }
    }
    

    Java 文件中除了 public 的其他类,默认的构造器不是 public 的,则反射可能获取不到其构造器
    试试 spring 的 @Controller 的非 public 类能不能被 spring 扫描初始化

    getFields() 只能获取到 public 的
    getDeclareFields() 才能获取到私有属性