Servlet小知识点

1. Sevlet是一个java类,供以其他程序调用,不能独立运行,需要Servlet引擎(Servlet容器)来管理和调度。

2. 服务器启动后,一般只会创建一个Servlet实例对象,init方法只会调用一次,也就是说Servlet对象创建后就会放在内存中,供以后的请求响应,直至web容器退出。

3. 每次请求都会导致servlet容器调用Servlet的service方法,并创建新的ServletRequest和ServletResponse对象传给service方法,然后service方法再根据请求的方法类型调用不同的处理(doGet, doPost, doPut等)

4. 如果在<servlet>配置中配置了<load-on-startup>,web容器在启动时就会创建并实例化Servlet对象,并调用init方法初始化。

<span style="font-size:14px;"><servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet></span>

5. Servlet容器负责实例化和加载Servlet,这个过程可能发生在Servlet加载过程中,也可能发生在首次响应请求,或者在二者中间的任何时候。

6. 如果某个servlet的映射路径<url-pattern>只配置了一个“/”,则该servlet为当前web程序的缺省servlet,当有url找不到相应的servlet来处理,则都交由缺省servlet来处理。

7. 如果多个客户端同时访问servlet,web容器会为每个请求创建一个线程,由于servlet只有一个,当调用service()访问同一个资源时,就有可能造成线程安全问题。

8. servelt可配置<init-parm>参数,web容器启动后会自动将这些参数封装近ServletConfig对象,然后该对象传给Servlet的init方法,进行初始化。而程序中也可以通过该对象获取配置的参数。

9. web容器启动时,会为web应用程序创建一个servletContext对象,代表了当前的web应用程序。可通过ServletConfig.getServletContext获取该对象。由于多个Servlet对象共享同一个ServletContext对象,故可以用该对象实现servlet间的通信。

未完。。。

原文地址:https://www.cnblogs.com/marcotan/p/4256915.html