广义:JAVA EE规范
狭义:Servlet接口
实现动态页面
管理和维护servlet对象的容器
管理和维护servlet对象
配置:
1)@WebServlet()注解
2)web.xml文件
1)init:实例化
2)service:工作
3)destroy:销毁
1)init:生成servlet对象实例,初始化需要的资源
2)service:实现业务逻辑
3)destroy:关闭servlet,释放资源
public class MyClass implements Servlet {}
例如:Servlet --> GenericServlet --> HttpServlet
常用的servlet类如下:
说明:图片来源
问题:怎么知道什么时候用哪个类?
通过HttpServletRequest和HttpServletResponse对象
把一个请求指定给对应的Servlet
通过@WebServlet或web.xml配置
可以通过不同的匹配规则来控制,在servlet中有4个规则:精准匹配、目录匹配、扩展名匹配、任意匹配。
使用注解配置示例如下:
//精准匹配
@WebServlet("/my/test")
//目录匹配
@WebServlet("/my/*")
//扩展名匹配
@WebServlet("/my/.txt")
//任意匹配1
@WebServlet("/*")
//任意匹配2,tomcat默认为这个
@WebServlet("/")
HttpServletRequest:处理http请求的对象
HttpServletResponse:处理http响应的对象
1)获取请求参数
HttpServletRequest request = 接收到的HttpServletRequest或ServletRequest;
request.getParamter("paramName");
request.getParamterValues("paramName");
request.getParamterNames();
request.getParameterMap();
//上面的paramName就是http请求中的各种参数名称
2)获取请求头
HttpServletRequest request = 接收到的HttpServletRequest或ServletRequest;
request.getHeader("headName");
request.getDateHeader("headName");
request.getHeaderNames("headName");
request.getIntHeader("headName");
//上面的headName就是http请求中的各种请求头名称
使用PrintWriter或者ServletOutputStream把响应数据放到http响应中
在加载或启动servlet时,初始化一些用于servlet自身的参数,比如说关于数据库连接、日志配置等的参数。这些参数在整个生命周期中只执行一次,并在整个生命周期的任意一个周期都可以获取到。
1)在web.xml中配置
<servlet>
<servlet-name> myServlet servlet-name>
<servlet-class> com.example.myServlet servlet-name>
<init-param> paramName1 <init-param>
<ini-param> paramValue1 <init-param>
<init-param> paramName2 <init-param>
<ini-param> paramValue2 <init-param>
servlet>
2)通过@WebServlet中配置
@WebServlet(urlPatterns = "/my", initParams = {
@WebInitParam=(name = "paraName1", value = "paramValue1"),
@WebInitParam=(name = "paraName2", value = "paramValue2")
})
直接在对应的myServlet 类中使用getInitParameter(“paraName1”)来获取对应的初始化参数
关联知识:面试中喜欢和JSP对比提问