嵌入式 Tomcat,可以在 Java 启动
应用实现 Servlet 接口
DispatcherServlet:service() 方法与 Tomcat 交互
doDispatcher
视图解析器:
抽象类:ViewResolver
实现类:Xml、Script
Controller:与 DispatcherServlet 交互
@Controller
// RESTful 类型的 Controller,不返回视图,只返回数据
@RestController
// url 路径
@RequestMapping
// 返回 json 或者 text,而不是 ModelAndView
@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() 才能获取到私有属性