servlet 基础学习一

Servlet 是个特殊的 java 类,这个java类必须 继承 HttpServlet;每个Servlet可以响应客户端的请求。

》 doGet:用于响应客户端的GET请求;

》 doPost:用于响应客户端的POST请求;

Servlet为了响应这2种请求,必须重写doGet()和doPost两个方法。大部分的时候,Servlet对于所有的请求的响应都是完全一样的。因此,可以采用重写一个方法来替代上面的几个方法:只需要重写service()方法即可响应客户端的所有请求。

另外,HttpServlet 还包含

      init(ServletConfig config):创建Servlet实例时,调用该方法初始化servlet资源。

      destory():销毁servlet实例时,自动调用该方法回收资源。

      通常无须重写 init() 和 destory() 两个方法,除非需要在初始化Servlet时,完成某些资源初始化的方法,才考虑重写init方法。如果需要在销毁servlet之前,先完成某些资源的回收,如关闭数据库连接等,才需要重写destory()方法。

      注意:不用为servlet类编写构造器,如果需要对servlet进行初始化操作,应将初始化操作放在Servlet的init()方法中定义。如果重写了init(ServletConfig config)方法,则应在该方法的第一行调用 super.init(config); 该方法将调用HttpServlet的init方法。

      Servlet 和 JSP 的 区别在于:

      1、Servlet 中没有内置对象,原来JSP中的内置对象都必须有程序显式创建。

      2、对于静态的html标签,Servlet都必须使用页面输出流逐行输出。

      JSP/Servlet 的生命周期

      jsp的本质就是servlet,开发者编写的jsp页面将由web容器编译成对应的Servlet,当Servlet在容器中运行时,其实例的创建及销毁等都不是由程序员决定的,而是由web容器进行控制的。

      创建Servlet实例有2个时机:

      1、客户端第一次请求某个Servlet时,系统创建该Servlet的实例:大部分的Servlet都是这种Servlet。

      2、web应用启动时立即创建Servlet实例,即load-on-startup Servlet。(注意:应用启动之时就创建Servlet,通常是用于某些后台服务的Servlet,或者需要拦截很多请求的Servlet;这种Servlet通常作为应用的基础Servlet使用,提供重要的后台服务。)

      load-on-startup Servlet 的配置:

      1、在web.xml 文件中通过<servlet.../>元素的<load-on-startup.../>子元素进行配置(eg1);

      2、通过@WebServlet Annotation 的 loadOnStartup 属性指定(eg2)。

      eg1:

     

      eg2:

     

      Servlet生命周期:

      1、创建Servlet实例;

      2、web容器调用Servlet的init方法,对Servlet进行初始化;

      3、Servlet 初始化后,将一直存在于容器中,用于响应客户端请求;如果客户端发送get请求,容器调用servlet的doGet方法处理并响应请求;如果客户端发送POST请求,容器调用Servlet的doPost方法处理并响应请求;或者统一使用service()方法来响应用户请求;

      4、web容器决定销毁Servlet时,先调用Servlet的destory方法,通常在关闭web应用之前销毁Servlet。        

      Servlet 参数配置与获取:

      eg:

      web.xml 文件

            

     TwoServlet.java文件

            

     注意:ServletConfig 获取配置参数的方法和ServletContext 获取配置参数的方法完全一样,只是ServletConfig是取得当前Servlet 的配置参数,而 ServletContext 是获取整个web应用的配置参数。            

     

原文地址:https://www.cnblogs.com/pan1308/p/4371337.html