servlet:运行在服务器端的小程序
- servlet是一个接口,定义了Java类被tomcat接口访问的规则
快速入门
- 创建Javaee项目
- 定义一个实现servlet接口的类
public class Servlet implements javax.servlet.Servlet {
...
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("haha servlet");
}
...
}
- 配置servlet。在web.xml
<!--配置xervlet-->
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>javaweb.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
执行原理
- 服务器收到客户端请求后,解析URL,获取访问的Servlet资源路径
- 查找web.xml,是否有对应的,找到
- tomcat将字节码文件加载进内存,创建其对象,调用方法
servlet生命周期
-
public void init(ServletConfig servletConfig) servlet创建时执行
-
默认,第一次被访问时servlet被创建
<load-on-startup>-1</load-on-startup>
-
服务器启动时创建
<load-on-startup>1</load-on-startup>
-
-
public void service(ServletRequest servletRequest, ServletResponse servletResponse) servlet被访问时执行
-
public void destroy() 服务器正常关闭时执行
-
public ServletConfig getServletConfig() 获取servlet配置对象
-
public String getServletInfo() 获取servlet信息
由于servlet是单例,多用户访问有线程安全问题,不要在servlet定义成员变量
Servlet3.0支持注解配置,再也不用web.xml
- 创建JavaEE项目,选择Servlet3,不用web.xml
- 定义类实现Servlet
- 类前
@WebServlet(urlPatterns = "资源路径")