01 servlet 是 service applet 的缩写,翻译为中文是服务器小程序. 他是用来处理客户端的请求的
02 servlet是一个接口,并不是一个类,这也是面向接口的一种实现,一个类只要实现了该接口,就可以被Tomcat服务器调用
03 该接口的具体代码
public interface Servlet {
01
void init(ServletConfig var1) throws ServletException;
02
ServletConfig getServletConfig();
03
void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
04
String getServletInfo();
05
void destroy();
}
第一个方法是void init(ServletConfig var1) throws ServletException;
该方法是第一次初始servlet是调用,是被Tomcat服务器调用的,参数是ServletConfig ,这是一个这样的类型
```
public interface ServletConfig {
String getServletName();
ServletContext getServletContext();
String getInitParameter(String var1);
Enumeration<String> getInitParameterNames();
}
```
这也是一个接口,但是呢?这个实现对象是Tomcat读取了这一段信息后产生的
<servlet>
<servlet-name>dispatcher</servlet-name>
<!--全局的sevelet-->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--配置加载时初始化 默认的配置名字 XXX+-servlet.xml-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
这段配置文件就是config
那么,怎么得到他呢?
看02 方法
ServletConfig getServletConfig();
就可以得到,并且在servlet中存储
//该方法有tomcat服务器调用
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("初始化Serv");
this.servletConfig=servletConfig;
}
//ServletConfig是当前Servlet容器向Servlet传递信息用的
@Override
public ServletConfig getServletConfig() {
return servletConfig;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
String servletName = servletConfig.getServletName();
// 一个应用就一个应用上下文
ServletContext servletContext = servletConfig.getServletContext();
System.out.println("servletContext:"+servletContext);
// 获取所有初始化参数
Enumeration<String> initParameterNames = servletConfig.getInitParameterNames();
// 遍历枚举
while (initParameterNames.hasMoreElements()){
String name =initParameterNames.nextElement();
String initParameter = servletConfig.getInitParameter(name);
System.out.println(initParameter);
}
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("销毁");
}
}
04 第三个方法
就是public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
这个方法获取请求的信息,返回发出的信息
很简单
05 servletContext
context就是语境,在程序里就是上下文,就是代码执行的环境
这个context是所有serclet共享的