Servlet

servlet
Servlet接口有5个方法

  • init方法
    当web.xml配置文件中的load-on-startup设置为负数或者不设置时(默认情况),servlet什么时候被调用就会调用init方法,否则会随着容器的启动而调用。init方法只会被调用一次,将配置文件中的init-param作为servletconfig对象传入servlet中。

  • destroy方法
    在servlet对象被销毁之前调用,和init一样只会调用一次

  • getServletConfig方法
    或取ServletConfig对象,这个对象就是init方法传入的对象,对于servletconfig的作用在下面介绍

  • getServletInfo方法
    这个方法返回一些Servlet的信息

  • service方法
    处理请求和响应,主要的操作逻辑都在这

ServletConfig

在这里插入图片描述
getInitParameter(string)通过设置的init-param中的param-name作为参数获取param-value的值
getInitParameterNames()获取servlet配置init-param中所有的param-name
getServletContext()获取当前的web应用
getServletName()获取当前的servlet的名称就是配置中的servlet-name

ServletContext

这个接口方法有很多个,就不一个一个说了,如果看其api,找它的实现类是找不到的,对于Tomcat是在内部将它实现的。它和上面两个不同它是web应用级别的,而上面都是servlet级别的。它可以保存配置参数,也可以作为域对象使用。
注意:servletContext对象的配置数据和域数据是两套数据,它们互不影响。对于能设置配置参数的servletconfig来说不能和servletContext一样作为域对象使用

GenericServlet

GenericServlet是Servlet和ServletConfig的实现类,但还是抽象类,因为对于主要处理请求的service方法并没有去实现,留给开发者自行继承重写来处理请求响应逻辑。内置了servletConfig对象,在实现init方法中将传入的servletConfig对象赋值到内置的servletConfig对象,在使用ServletConfig接口的方法时,只需在内部掉用内置对象的相应方法就好了。此外还提供了一个无参的init重载方法,和一些日志相关的方法。

HTTPServlet

HTTPServlet是GenericServlet的子类,它是实现HTTP协议的。它也是一个抽象类(并没有抽象方法,但想用的方法权限都是保护权限,一般并不可见,为了避免开发者直接使用,便把它定义为抽象类),对于它的父类GenericServlet来说,它实现了service方法。在重写的service方法中,将ServletRequest,ServletResponse类型的参数对象,强转为HTTPServletRequest,HTTPServletResponse类型,然后将强转后的对象传入重载的service方法(此重载方法就是一个protectedotected权限的方法)。在重载service方法中,判断HTTPServletRequest对象的方法(常用post,get方法)是什么,然后调用相应的方法。
我们自定义创建的servlet一般都是继承HTTPServlet。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐