在servlet中有三个子接口FacesServlet, GenericServlet, HttpServlet;最常用的当然是HttpServlet.
现在我们看看servlet的生命周期,在执行时,首先加载ClassLoader,然后对其进行实例化,在到servlet中初始化
init(
ServletConfig config),方法中的参数config是servlet的配置信息,初始化时查看API文档可以看到在
GenericServlet中有两个初始化方法,分别是void init() 和 void init(ServletConfig config)查看源码时知道,在 void init(ServletConfig config) 中有this.config=config这句话,它是对config进行了除了初始化,所以我们在重写init方法时,如果重写void init(ServletConfig config)这个方法,就会将this.config=config覆盖掉,这样在执行时由于config没有初始化为null,就会抛出NullPointerException,所以我们要初始化一些信息时最好是重写void init() 这个方法。ok,在初始化之后呢,就是以多线程的方式处理客户端的请求,首先执行service()方法——>doGet() or doPost(),调通doGet()还是doPost()处决于form表单的提交方式,最后在退出的时候就会执行destroy()方法,当tomcat重启或者重载时会退出。在执行过程中只有一个对象以多线程的方式处理客户端发出的请求,而且init()方法只执行一次,只在第一次初始化的时候。
之后在编译之后将.class文件放在webapp中,然后web.xml配置servlet:
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/helloServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello.asp</url-pattern>
</servlet-mapping>
在<servlet-name>hello</servlet-name>是给你的servlet命名,在这个标签对中可以随便写,只要在 <servlet-mapping> 中的<servlet-name>hello</servlet-name> 与servlet标签中的名字配对就行,在<servlet-class>HelloServlet</servlet-class>中的内容是你编译之后的.class文件的名字,在<url-pattern>/helloServlet</url-pattern>中内容是你要访问的路径,这里面内容也是可以随意写的,在这里我配置了两个路径/helloServlet和/hello.asp,但是一定要加上/,配置好xml后,启动tomcat就能访问了。