servlet是运行在服务器的java代码,用于处理响应请求。
servlet在web.xml文件中进行配置,<servlet><servlet-name>servlet名字</servlet-name>
<servlet-class>全类名</servlet-class>
</servlet>,
<servlet-mapping>
<servlet-name>servlet名字</servlet-name>
<url-pattern>处理的url地址</url-pattern>
</servlet-mapping>
servlet使用注解进行配置:@WebServlet(name="servlet", urlPatterns={"/*"})
servlet接口存在以下几个方法:
init();service();destory();getServletInfo();getServletConfig();
servlet生命周期:在默认情况下当第一次接受请求时,servlet实例化调用init方法,在调用service方法,以后的请求只调用service方法;当web容器终止时,servlet实例被销毁,并且调用destory方法。如何在<servlet></servlet>配置了<load-on-startup>大于0的数字</load-on-startup>则servlet在容器初始化的时候加载。
常用的实现servlet的子类HttpServlet,GenericServlet:GenericServlet是servlet的通用的简单实现,不依赖于具体的协议;HttpServlet是基于Http协议的对servlet接口实现的类,也是我们在开发中经常使用到的类,常用的方法有service,doget,dopost方法,除此之外还有doHead
,doDelete
,doOptions
,doTrace
方法。
servlet是单例的,可以从init方法只调用一次看出来,但是不是线程安全的,当多个请求调用同一个servlet时,是进行并发操作的,如果数据是实例变量或者静态变量就会导致线程不安全问题。