1.init()接口
在Servlet实例化后,Servlet容器会调用init()方法来初始化该对象,主要是为了是Servelt对象在处理客户请求前可以完成一些初始化工作。如:建立数据库的连接,获取配置信息等。
init()方法在第一次创建的servlet时被调用,在后续每次用户请求时不在被调用。
2.Servlet()接口方法
Service()方法是执行实际任务的主要方法,Servlet容器(如:Tomcat)调用service()方法处理来自service()客户端的请求,并将格式化的响应协会到客户端,每次服务器接收到一个servlet请求时,服务器会生成一个新线程并调用服务。
一般service方法无需重写,其在HttpServlet中已经实现,根据请求方法名GET/POST调用doGet,doPos以及其他方法,也就是说service是用来转向的,故一般写servlet时只需要重写doget或dopost即可。
3.doGet和doPost()接口
根据HTTP的不同请求调用不同方法,如果HTTP得到一个来自URL的get请求,就会调用doGet()方法;如果得到的是一个POST请求,就会调用doPost()方法。
注意:在servlet中默认情况下,无论是get还是post提交都会经过service()方法来处理,然后转向到doGet或doPost方法。
4.destory()接口
当servlet容器检测到一个servlet对象应该从服务器中被移除时,会调用该对象的destroy()方法,以便Servlet对象释放它所使用的资源,保存数据到持久存储设备中,如将内存中的数据保存到数据库中、关闭数据库连接,停止后台线程等类似的清理功能。destory()方法,只会被调用一次。
5.getServletConfig()接口
getServletConfig()方法返回Servlet容器调用init()方法时传递给Servlet对象的ServletConfig对象,ServletConfig对象包含Servlet的初始化参数,研发人员可在Servlet配置文件web.xml中,使用<init-param>标签为servlet配置一些初始化参数。
6、getServletInfo()接口
getServletInfo()方法会返回一个Sring类型字符串,包括关于Servlet的信息。如:作者、版权等。
7、HttpRequestServlet()接口
在servlet API中,定义了一个HttpServletRequest类,它继承自ServletRequest类,HttpServletRequest对象专门用于封装HTTP请求信息,简称request对象。
8、HttpResponseServlet()接口
在Servlet API中,定义了一个HttpServletResponse类,继承SercletResponse类,HttpServletResponse对象专门用来封装HTTP响应信息,简称response对象。
Servlet容器会针对每次请求创建一个response对象,并把它作为参数传递给Servlet的service方法,Servlet处理请求后,会将响应信息封装到response对象中,并由容器解析后返回给客户端。
一个具体的Servlet项目中的实例代码如下:
package com.web.servlet; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; import java.io.PrintWriter; import java.rmi.server.ServerCloneException; @WebServlet("/miracle") public class IndexServlet implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException{ } //当Tomcat容器启动的时候,会自动进行初始化 @Overridepublic ServletConfig getServletConfig() {return null;} @Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { //throws ServletException表示抛出异常//这个方法用于处理用户请求String userName=servletRequest.getParameter("userName"); //获取浏览器用户输入的参数值servletResponse.setContentType("text/html;charset=utf-8"); //设置Servlet的编码类型是html,编码格式为utf-8,避免出现乱码PrintWriter writer =servletResponse.getWriter(); //获取io写入的方法if ("xt".equals((userName))){writer.println("可以访问");}else{writer.println("不可以访问");}writer.close();} @Overridepublic String getServletInfo() {return null;} @Overridepublic void destroy() { } }
只要当我们看到这其中各种方法对应的功能是什么,即这篇文章的介绍效果达到。
如:看到 public void service()这个方法,我们知道这个方法是执行实际任务的,这个实例代码中service方法获取用户请求输入参数与xt比较,输出对应文字。
补充:Servlet处理HTTP请求流程
1、Servlet容器接收到来自客户端的HTTP请求后,容器会针对该请求分别创建一个HttpServletResquest对象和HttpServletReponse对象。
2、容器将HttpServletRequest对象和HttpServletReponse对象以参数的形式传入service()方法内,并调用方法。
3、在service()方法中Servlet通过HttpServletRequest对象获取客户端信息以及信息请求的相关信息。
4、对HTTP请求处理
5、请求处理完成后,将响应信息封装到HttpServletReponse对象。
6、Servlet容器将响应信息返回给客户端。
7、当Servlet容器将响应信息返回给客户端后,HttpServletRequest对象和HttpServletReponse对象被销毁。