Servlet 运行在服务端,用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API 动态的向客户端输出内容
- Servlet有狭义和广义的定义:
狭义的servlet:指的就是servlet接口规范
广义的servlet:指的是实现了Sevlet接口的所有的实现类
实现步骤:
- 创建类实现Servlet接口
- 覆盖尚未实现的方法(着重关注service方法)
- 在web.xml进行servlet的配置(web.xml就相当于web工程清单)
public class Demo1Servlet implements Servlet{
/**
* 这是servlet的销毁方法,服务器停止或者将项目从tomcat移除的时候,销毁servlet。
*/
public void destroy() {
System.out.println("servlet被销毁了。");
}
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
/**
* servlet的初始化方法,默认情况下,servlet在第一次被访问的时候创建,调用init方法。
* ServletConfig:代表了当前servlet的配置信息对象。
*/
public void init(ServletConfig arg0) throws ServletException {
System.out.println("servlet的初始化方法");
/**
* 第一个功能:获取当前servlet的名称
*/
// String servletName = arg0.getServletName();
// System.out.println(servletName);
/**
* 第二个功能,获取当前servlet的初始化配置参数
*/
String initParameter = arg0.getInitParameter("name");
System.out.println(initParameter);
Enumeration<String> initParameterNames = arg0.getInitParameterNames();
while(initParameterNames.hasMoreElements()){
String name = initParameterNames.nextElement();
String value = arg0.getInitParameter(name);
System.out.println(name+":"+value);
}
/**
* 第三个功能:用来获取servletContext对象
*/
ServletContext servletContext = arg0.getServletContext();
System.out.println(servletContext);
}
/**
* 这是servlet的服务方法,每当发出请求的时候,都会执行一次这个service方法。
* ServletRequest:这个代表了http的请求,所以这个对象中get方法居多。
* ServletResponse:这个就代表了http的响应,set方法居多。
*/
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("running...");
}
}
web.xml
<servlet>
<servlet-name>Servlet</servlet-name>
<servlet-class>com.itheima.servlet.Demo1Servlet</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>lisi</param-value>
</init-param>
<init-param>
<param-name>age</param-name>
<param-value>18</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
Servlet的生命周期:指的是一个实现Servlet接口的对象从创建到销毁的整个过程。
Servlet接口里面定义servlet的
初始化方法init() 客户端第一次访问的时候默认执行
从服务中移除销毁的方法destroy() 服务器关闭或者将项目从服务器中移除的时候执行销毁方法销毁servlet
提供服务的service()方法 二米次访问都会执行
客户端在第一次访问Servlet的时候执行init()初始化方法,下一步会执行service()方法,再次请求不会在执行init()方法初始化,
会是执行service()方法,每次请求都会执行service()方法,所以servlet是单例模式的!