1 servlet是什么2 servlet职责3 servlet的生命周期(LF)
3.1 创建
3.1.1 三种创建方式3.1.2 servlet对象
3.1.2.1 验证在第一次请求时创建一次servlet3.1.2.2 验证在容器(tomcat)启动时创建servlet对象 3.2 初始化
3.2.1 验证 3.3 service()方法
3.3.1 验证 3.4 选择doGet()/ doPost()方法3.5 销毁 4 补充:ServletConfig配置servlet的对象
1 servlet是什么servlet是server(服务器)+applet(程序)的缩写,是服务器端运行的java程序
2 servlet职责servlet对象的职责有两个:
和前端(html/jsp)交互,和后台(java)交互,并在其中起着控制的作用控制页面的跳转 3 servlet的生命周期(LF) 3.1 创建 3.1.1 三种创建方式
有三种创建servlet的方式,第三种是最常用的方法:
implements Servletextends abstract GenericServlet类:覆盖service()方法extends HttpServlet:覆盖doGet() / doPost()方法
对象创建过程:代码块–>构造方法–>对象
3.1.2 servlet对象类HttpServlet继承于类GenericServlet,类GenericServlet实现了Servlet接口
servlet对象只创建一次,有两个地方会创建
在第一次请求时创建容器(tomcat)启动时创建
< load-on-startup >1< /load-on-startup > : 配置这个则会在容器启动创建
附带创建的对象ServletConfig:配置servlet的对象
在多次请求时,用多线程的方法,servlet请求是线程不安全的
3.1.2.1 验证在第一次请求时创建一次servlet这里创建方法用的是继承HttpServlet在构造方法里的两行打印,来验证只创建一次servlet
public class LFServlet extends HttpServlet { public LFServlet() { System.out.println("验证多次请求时,servlet的创建次数:创建servlet"); System.out.println(this.hashCode()); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
打开一个网页来发起请求
在多次刷新页面后,也只创建一次servlet对象
1.要使得在tomcat启动时就能创建servlet对象,先要在web.xml中servlet下加上:< load-on-startup >1< /load-on-startup >
2.在构造方法打印两行用于验证
public class LFServlet extends HttpServlet { public LFServlet() { System.out.println("验证在容器启动时创建servlet"); System.out.println(this.hashCode()); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
3.重启tomcat,发现在启动时就创建了servlet对象,无需等待网页的请求
注:还有另一种情况,如果是用注解的方式创建的servlet对象,则如下修改
初始化指的是调用构造方法之后(servlet对象创建后),第一个调用的方法(init方法),servlet自动调用。
3.2.1 验证
这里使用的是容器启动时创建servlet,可以看到在创建servlet对象后,立刻调用了init()方法,这就是初始化
每次前端的向servlet的请求,实际上是servlet对象调用service()方法。
3.3.1 验证
请求一次网页,则调用一次service方法
在service方法中,通过判断method,调用doGet()/doPost()
销毁时会自动调用destroy()方法
destroy()—>容器(java)–>JVM
servlet被容器(一个java程序)销毁。容器是被JVM销毁的。在JVM上跑着一个容器,容器里装的是servlet
在创建Servlet对象时,会自动创建一个ServletConfig对象,可以配置servlet对象
可以用于传入一些值,比如是key:123
通过ServletConfig对象可以拿到这个值
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)