(1)概述
- Server applet:运行在服务端的小程序
- Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则
- 将来我们自定义一个类,实现servlet的接口,复写方法
(2)基本使用
- src下面新建HelloServlet.java ``` package com.code.web;
import javax.servlet.*; import java.io.IOException;
public class HelloServlet implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("hello");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
- web.xml设置虚拟路径
- servlet-class
- servlet-name
- url-pattern
<?xml version=”1.0” encoding=”UTF-8”?>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.code.web.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<a name="es6oB"></a>
### (3)Servlet生命周期
- 调用顺序
- init()
- 默认第一次访问的时候,执行一次
- Servlet是单例,多个用户访问存在线程安全问题
- 尽量不要在Servlet中成员变量,即使有也不要赋值
- service()
- 服务被调用时执行,可被多次调用
- destroy()
- Tomcat服务正常关闭时才会关闭
package com.code.web;
import javax.servlet.*; import java.io.IOException;
public class HelloServlet implements Servlet {
/**
* 被创建的时候,调用1次
* @param servletConfig
* @throws ServletException
*/
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init");
}
/**
* 获取ServletConfig配置对象
*/
@Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig");
return null;
}
/**
* 调用的时候,多次调用多次执行
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service");
}
@Override
public String getServletInfo() {
System.out.println("getServletInfo");
return null;
}
/**
* 销毁的时候,执行1次
*/
@Override
public void destroy() {
System.out.println("destroy");
}
}
<a name="tOFc2"></a>
#### load-on-startup
- 修改init()是否在Tomcat服务启动时调用,正数代表Tomcat服务启动时启动,负数代表Tomcat服务启动时不启动
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.code.web.HelloServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
```