一、servlet,servlet容器
Servlet 是一种基于 Java 技术的 Web 组件,用于生成动态内容,由容器管理。类似于其他 Java 技术组件,Servlet 是平台无关的 Java 类组成,并且由 Java Web 服务器加载执行。在以前的servlet规范中,必须放在相应的目录中才可以执行,比如web-inf,而SpringBoot就非常简单,不需要复杂的步骤。
Servlet容器,有时也称为Servlet引擎,作为Web服务器或应用服务器的一部分,通过请求和响应对话,提供Web客户端与Servlet交互的能力。容器管理Servlet实例以及他们的生命周期。
Servlet3.0以后,也就是tomcat8.0以后采用注解驱动。用注解或API的方式代替了XML,不需要XML就可以启动容器了。也就是说用jar包的方式就可以启动,不 需要用war包去启动了。SpringBoot用了嵌入式引擎,嵌入式引擎必须由嵌入式容器启动,tomcat之所以能做到嵌入式容器,是因为servlet做了改革。SpringBoot除了自动装配以外,还有一个最大的亮点是异步IO,异步上下文。Servlet3.1和websocket有紧密的关联。
二、servlet组件
1997年六月,Servlet 1.0 版本发行,当时还不属于J2EE规范,最新版本 Servlet 4.0 处于研发状态。下面说的都是servlet3.1规范,支持Tomcat8。Servlet 3.0 前时代,几乎都是注解驱动或API编程的方式。Annotation用于申明,真正的注册在于调用它 的API,通过API的方式动态的进行注册,之前只能通过XML配置,比较固态化。
常见服务组件
javax.servlet.Servlet
public interface Servlet {
void init(ServletConfig var1) throws ServletException;
ServletConfig getServletConfig();
void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
String getServletInfo();
void destroy();
}
javax.servlet.Filter(since Servlet 2.3)
Filter是在servlet之前执行的。
public interface Filter {
void init(FilterConfig var1) throws ServletException;
void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
void destroy();
}
上下文组件
javax.servlet.ServletContext
一个servlet容器是允许多个应用上下文的,SpringBoot里面至少有一个,实际上可以有两个应用上下文,一个是服务端,一个是管理端,一个应用上下文就是一个应用,一个Web容器里面可以支持多个应用的部署。
javax.servlet.http.HttpSession,