org.springframework.web.servlet

## Class HttpServletBean

- java.lang.Object
- - javax.servlet.GenericServlet
  - - javax.servlet.http.HttpServlet
    - - org.springframework.web.servlet.HttpServletBean

- All Implemented Interfaces:
    Serializable, Servlet, ServletConfig, Aware, EnvironmentAware, EnvironmentCapable
  Direct Known Subclasses:
    FrameworkServlet, ResourceServlet

      public abstract class HttpServletBean
      extends HttpServlet
      implements EnvironmentCapable, EnvironmentAware

  Simple extension of `HttpServlet` which treats its config parameters (`init-param` entries within the `servlet` tag in `web.xml`) as bean properties.

  A handy superclass for any type of servlet. Type conversion of config parameters is automatic, with the corresponding setter method getting invoked with the converted value. It is also possible for subclasses to specify required properties. Parameters without matching bean property setter will simply be ignored.

  This servlet leaves request handling to subclasses, inheriting the default behavior of HttpServlet (`doGet`, `doPost`, etc).

  This generic servlet base class has no dependency on the Spring `ApplicationContext` concept. Simple servlets usually don't load their own context but rather access service beans from the Spring root application context, accessible via the filter's `ServletContext` (see `WebApplicationContextUtils`).

  The `FrameworkServlet` class is a more specific servlet base class which loads its own application context. FrameworkServlet serves as direct base class of Spring's full-fledged `DispatcherServlet`.

  Author:
    Rod Johnson, Juergen Hoeller
  See Also:
    `addRequiredProperty(java.lang.String)`, `initServletBean()`, `HttpServlet.doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)`, `HttpServlet.doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)`, Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Log` | `logger` Logger available to subclasses

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HttpServletBean()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addRequiredProperty(String property)` Subclasses can invoke this method to specify that this property (which must match a JavaBean property they expose) is mandatory, and must be supplied as a config parameter.
    `protected ConfigurableEnvironment` | `createEnvironment()` Create and return a new `StandardServletEnvironment`.
    `ConfigurableEnvironment` | `getEnvironment()` Return the Environment for this object
    `ServletContext` | `getServletContext()` Overridden method that simply returns `null` when no ServletConfig set yet.
    `String` | `getServletName()` Overridden method that simply returns `null` when no ServletConfig set yet.
    `void` | `init()` Map config parameters onto bean properties of this servlet, and invoke subclass initialization.
    `protected void` | `initBeanWrapper(BeanWrapper bw)` Initialize the BeanWrapper for this HttpServletBean, possibly with custom editors.
    `protected void` | `initServletBean()` Subclasses may override this to perform custom initialization.
    `void` | `setEnvironment(Environment environment)` Set the `Environment` that this object runs in.

    - ### Methods inherited from class javax.servlet.http.HttpServlet

      `doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service, service`

    - ### Methods inherited from class javax.servlet.GenericServlet

      `destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletInfo, init, log, log`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### logger

          protected final Log logger

      Logger available to subclasses

  - ### Constructor Detail

    - #### HttpServletBean

          public HttpServletBean()

  - ### Method Detail

    - #### addRequiredProperty

          protected final void addRequiredProperty(String property)

      Subclasses can invoke this method to specify that this property (which must match a JavaBean property they expose) is mandatory, and must be supplied as a config parameter. This should be called from the constructor of a subclass.

      This method is only relevant in case of traditional initialization driven by a ServletConfig instance.

      Parameters:
        `property` - name of the required property

    - #### init

          public final void init()
                          throws ServletException

      Map config parameters onto bean properties of this servlet, and invoke subclass initialization.
      Overrides:
        `init` in class `GenericServlet`
      Throws:
        `ServletException` - if bean properties are invalid (or required properties are missing), or if subclass initialization fails.

    - #### initBeanWrapper

          protected void initBeanWrapper(BeanWrapper bw)
                                  throws BeansException

      Initialize the BeanWrapper for this HttpServletBean, possibly with custom editors.

      This default implementation is empty.

      Parameters:
        `bw` - the BeanWrapper to initialize
      Throws:
        `BeansException` - if thrown by BeanWrapper methods
      See Also:
        `PropertyEditorRegistry.registerCustomEditor(java.lang.Class<?>, java.beans.PropertyEditor)`

    - #### getServletName

          public final String getServletName()

      Overridden method that simply returns `null` when no ServletConfig set yet.
      Specified by:
        `getServletName` in interface `ServletConfig`
      Overrides:
        `getServletName` in class `GenericServlet`
      See Also:
        `GenericServlet.getServletConfig()`

    - #### getServletContext

          public final ServletContext getServletContext()

      Overridden method that simply returns `null` when no ServletConfig set yet.
      Specified by:
        `getServletContext` in interface `ServletConfig`
      Overrides:
        `getServletContext` in class `GenericServlet`
      See Also:
        `GenericServlet.getServletConfig()`

    - #### initServletBean

          protected void initServletBean()
                                  throws ServletException

      Subclasses may override this to perform custom initialization. All bean properties of this servlet will have been set before this method is invoked.

      This default implementation is empty.

      Throws:
        `ServletException` - if subclass initialization fails

    - #### setEnvironment

          public void setEnvironment(Environment environment)

      Set the `Environment` that this object runs in.
      Specified by:
        `setEnvironment` in interface `EnvironmentAware`
      Throws:
        `IllegalArgumentException` - if environment is not assignable to `ConfigurableEnvironment`.

    - #### getEnvironment

          public ConfigurableEnvironment getEnvironment()

      Return the Environment for this object

      If `null`, a new environment will be initialized via `createEnvironment()`.

      Specified by:
        `getEnvironment` in interface `EnvironmentCapable`

    - #### createEnvironment

          protected ConfigurableEnvironment createEnvironment()

      Create and return a new `StandardServletEnvironment`. Subclasses may override in order to configure the environment or specialize the environment type returned.