(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 {
}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("hello");}@Overridepublic String getServletInfo() {return null;}@Overridepublic 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*/@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("init");}/*** 获取ServletConfig配置对象*/@Overridepublic ServletConfig getServletConfig() {System.out.println("getServletConfig");return null;}/*** 调用的时候,多次调用多次执行*/@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("service");}@Overridepublic String getServletInfo() {System.out.println("getServletInfo");return null;}/*** 销毁的时候,执行1次*/@Overridepublic 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>
```
