Servlet
init(ServletConfig config)
service(ServletRequest req, ServletResponse resp)
destroy()
ServletConfig
容器读取web.xml 生成Servlet的配置。可以获取init parameters (在<init-params></init-params> 中定义的参数)
String getServletName()
String getInitParameter(String var1)
Enumeration getInitParameterNames()
ServletContext getServletContext()
同时包含一个 ServletContext, 提供一个管理Application 级别的配置的界面
ServletContext
- setAttribute/getAttribute 设置获取应用级别的属性
- addFilter
- addListener
需要注意的是,根据标准ServletContext 在同一个应用的不同servlet 之间是共享的。实际tomcat 中也是这样实现的。
Filter
由Filter
init(FilterConfig filterConfig)
doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
destroy()
及FilterChain 共同构成
doFilter(ServletRequest request, ServletResponse response)
filterChain 调用相应的 filter, 将idx + 1, 将自己传入 filter.doFilter 中。filter.doFilter 中决定是否需要调用 filterChain.doFilter 继续将req, resp 传递下去。
FilterChain 维护了filter 的执行顺序,及最终filter 终点的servlet 调用。
Filter 则实现具体fitler 逻辑,可以在任意地方调用filterChain 将控制传递下去。
ServletRequest, ServletResponse
提供了一些获取request,response 的属性的方法。
提供了ServletInputStream,ServletOutputStream 令servlet 的实现者可以读取写入最下面的网络连接。
Servlet小结
提供了一系列的接口使得容器环境可以向servlet 传入配置,控制servlet的生命周期。
通过ServletRequest 和 ServletResponse 提供了ServletInputStream,ServletOutputStream 让servlet 来读入写出数据,封装了底层的网络实现。