Servlet中重要的接口和常用实现类

ServletConfig接口:

ServletConfig中封装的servlet的配置信息

      PS:每一个Servlet都有唯一对应的ServletConfig对象,代表当前servlet的配置信息。

               这个servlet对象又容器创建,并传入init方法中

Servlet中重要的接口和常用实现类

Servlet中重要的接口和常用实现类

 

ServletConfig对象的主要功能:

  • 获取Servlet名称:getServletName()

  • 获取全局上下文ServletContext对象:getServletContext()

  • 获取Servlet初始化参数:getInitParameter(String) / getInitParameterNames()。

ServletContext接口:

  • Web容器在启动时,它会为每个Web应用程序都创建一个唯一对应的ServletContext对象,意思是Servlet上下文,代表当前Web应用。

  • 由于一个Web应用程序中的所有Servlet都共享同一个ServletContext对象,所以ServletContext对象也被称为 application 对象(Web应用程序对象)。

  • 对象由Servlet容器在项目启动时创建,通过ServletConfig对象的getServletContext()方法获取。在项目卸载时销毁。

常用功能:

Servlet中重要的接口和常用实现类

获取虚拟路径所映射的本地真实路径:getRealPath(String path)

  • 虚拟路径:浏览器访问Web应用中资源时所使用的路径。

  • 本地路径:资源在文件系统中的实际保存路径。

  • 作用:将用户上传的文件通过流写入到服务器硬盘中。

获取初始化参数:跟上面一样。

 

Servlet常用实现类:

           GenericServlet 抽象类

      GenericServlet 实现了Servlet接口

Servlet中重要的接口和常用实现类

  • GenericServlet对Servlet功能进行了封装和完善,重写了init(ServletConfig config)方法,用来获取ServletConfig对象。此时如果GenericServlet的子类(通常是自定义Servlet)又重写了init(ServletConfig config)方法有可能导致ServletConfig对象获取不到,所以子类不应该重写带参数的这个init()方法。

  • 如果想要进行初始化操作,可以重写GenericServlet提供的无参的init()方法,这样就不会影响ServletConfig对象的获取。

  • 将service(ServletRequest req,ServletResponse res)保留为抽象方法,让使用者仅关心业务实现即可。

            HttpServlet抽象类

HttpServlet继承了GenericServlet       PS:最终自定义的servlet实现类是继承了HttpServlet抽象类,除特定的情况,其他都是这么用。

    Servlet中重要的接口和常用实现类

  • 专门用来处理Http请求的Servlet。

  • 对GenericServlet进行进一步的封装和扩展,在service(ServletRequest req, ServletResponse res)方法中,将ServletRequest和ServletResponse转换为HttpServletRequest和HttpServletResponse,根据不同HTTP请求类型调用专门的方法进行处理。