生命周期的3个方法:
1.init 2.service 3.destroy
package com.Servlet;
import javax.servlet.*;
import java.io.IOException;
public class ServletDemo2 implements Servlet {
@Override
//1. 被创建:执行init方法,只执行一次
//init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init......");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
/*2. 提供服务:执行service方法,执行多次
* 每次访问Servlet时,Service方法都会被调用一次*/
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service.....");
}
@Override
public String getServletInfo() {
return null;
}
@Override
/*3. 被销毁:执行destroy方法,只执行一次
* Servlet被销毁时执行。服务器关闭时,Servlet被销毁
* 只有服务器正常关闭时,才会执行destroy方法。
* destroy方法在Servlet被销毁之前执行,一般用于释放资源*/
public void destroy() {
System.out.println("destroy.....");
}
}
urlpartten:Servlet访问路径
1. 一个Servlet可以定义多个访问路径 : @WebServlet({"/d4","/dd4","/ddd4"})
2. 路径定义规则:
1. /xxx:路径匹配
2. /xxx/xxx:多层路径,目录结构
3. *.do:扩展名匹配
package com.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//@WebServlet({"/demo4","/demo44"})
//@WebServlet({"/user/demo4","/user/*"})
//@WebServlet("/*")
@WebServlet("*.do")
/**
*Servlet的体系结构
* Servlet -- 接口
* |
* GenericServlet -- 抽象类
* |
* HttpServlet -- 抽象类
*
* * GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象
* * 将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可
*
* * HttpServlet:对http协议的一种封装,简化操作
* 1. 定义类继承HttpServlet
* 2. 复写doGet/doPost方法
* */
public class ServletDemo5 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("demo5....");
System.out.println(req);//org.apache.catalina.connector.RequestFacade@5cf4f82
}
}