day12-Servlet02( 三 )

  1. Servlet是一个供其他 Java程序(Servlet引擎)调用的Java类,不能独立运行
  2. 针对浏览器的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其他请求服务,直至web容器退出,或者redeploy该web应用,Servlet实例对象才会销毁
    day12-Servlet02

    文章插图
  3. 在Servlet的整个生命周期内,init方法只被调用一次 。而对每次请求都导致Servlet引擎调用一次Servlet的service()方法
  4. 对于每次请求访问,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service()方法再根据请求方式分别调用doXxx()方法
    详见7.1
  5. 如果在<servlet>元素中配置了一个<load-on-startup>元素,那么WEB应用程序在启动时,就会装载并创建Servlet的实例对象,以及调用Servlet实例对象的init()方法
    <load-on-startup>的应用场景:比如服务器定时发送邮件的服务:自动启动-->完成任务
10.Servlet注解方式之前演示的Servlet例子都是使用web.xml文件来配置的,现在来看看使用注解方式配置Servlet
10.1快速入门具体步骤:
  1. 编写类OkServlet去继承HttpServlet
  2. 注解方式配置OkServlet,一个Servlet支持配置多个urlPattern(即通过不同的urlPattern可以访问同一个Servlet)

day12-Servlet02

文章插图
package com.li.servlet.annotation;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;/** * 注解的方式来配置: * * 1.@WebServlet 是一个注解 * 2.@WebServlet 源码: *@Target({ElementType.TYPE}) =>用于指定 被修饰的Annotation可以用于修饰 哪些程序元素 * @Retention(RetentionPolicy.RUNTIME) =>用于指定该Annotation可以保留多长时间 * @Documented =>在Javadoc工具生成文档时,可以看到该注解 。* public @interface WebServlet { * String name() default ""; * * String[] value() default {}; * * String[] urlPatterns() default {}; * * int loadOnStartup() default -1; * } * 3. urlPatterns对应 web.xml的 <url-pattern></url-pattern> * 4. {"/ok1","/ok2"} 表示可以给OKServlet配置多个url-pattern * 5. 相当于这个@WebServlet(urlPatterns = {"/ok1","/ok2"}) 代替了web.xml的配置 *底层使用了反射+注解+IO+集合 来完成一个支撑 * 6. 浏览器访问OkServlet时,可以输入 http://localhost:8080/web应用名/ok1 * 或者http://localhost:8080/web应用名/ok2 * 7. */@WebServlet(urlPatterns = {"/ok1", "/ok2"})public class OkServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("注解方式 OkServlet doGet()");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("注解方式 OkServlet doPost()");}}在浏览器中输入:http://localhost:8080/servlet_demo/ok1或者http://localhost:8080/servlet_demo/ok2
day12-Servlet02

文章插图
day12-Servlet02

文章插图
后台的显示如下:说明两次都能正常地访问OkServlet
day12-Servlet02

文章插图

经验总结扩展阅读