Package org.springframework.mock.web

# Class MockServletContext

java.lang.Object
org.springframework.mock.web.MockServletContext

All Implemented Interfaces:
  `ServletContext`

public class MockServletContext extends Object implements ServletContext
Mock implementation of the `ServletContext` interface.

As of Spring 6.0, this set of mocks is designed on a Servlet 6.0 baseline.

Compatible with Servlet 6.0 but can be configured to expose a specific version through `setMajorVersion(int)`/`setMinorVersion(int)`; default is 6.0. Note that some Servlet SPI support is limited: servlet, filter and listener registration methods are not supported; neither is JSP configuration. We generally do not recommend to unit test your ServletContainerInitializers and WebApplicationInitializers which is where those registration methods would be used.

For setting up a full `WebApplicationContext` in a test environment, you can use `AnnotationConfigWebApplicationContext`, `XmlWebApplicationContext`, or `GenericWebApplicationContext`, passing in a corresponding `MockServletContext` instance. Consider configuring your `MockServletContext` with a `FileSystemResourceLoader` in order to interpret resource paths as relative filesystem locations.

Since:
  1.0.2
Author:
  Rod Johnson, Juergen Hoeller, Sam Brannen
See Also:
  - `MockServletContext(org.springframework.core.io.ResourceLoader)`
  - `AnnotationConfigWebApplicationContext`
  - `XmlWebApplicationContext`
  - `GenericWebApplicationContext`

## Field Summary

### Fields inherited from interface jakarta.servlet.ServletContext

`ORDERED_LIBS, TEMPDIR`

## Constructor Summary

Constructors
Constructor
Description
`MockServletContext()`
Create a new `MockServletContext`, using no base path and a `DefaultResourceLoader` (i.e.
`MockServletContext(String resourceBasePath)`
Create a new `MockServletContext`, using a `DefaultResourceLoader`.
`MockServletContext(String resourceBasePath, org.springframework.core.io.ResourceLoader resourceLoader)`
Create a new `MockServletContext` using the supplied resource base path and resource loader.
`MockServletContext(org.springframework.core.io.ResourceLoader resourceLoader)`
Create a new `MockServletContext`, using the specified `ResourceLoader` and no base path.

## Method Summary

Modifier and Type
Method
Description
`FilterRegistration.Dynamic`
`addFilter(String filterName, Filter filter)`
`FilterRegistration.Dynamic`
`addFilter(String filterName, Class<? extends Filter> filterClass)`
`FilterRegistration.Dynamic`
`addFilter(String filterName, String className)`
`void`
`addFilterRegistration(FilterRegistration registration)`
Add a `FilterRegistration`.
`void`
`addInitParameter(String name, String value)`
`ServletRegistration.Dynamic`
`addJspFile(String servletName, String jspFile)`
`void`
`addListener(Class<? extends EventListener> listenerClass)`
`void`
`addListener(String className)`
`<T extends EventListener>
void`
`addListener(T t)`
`void`
`addMimeType(String fileExtension, org.springframework.http.MediaType mimeType)`
Adds a mime type mapping for use by `getMimeType(String)`.
`ServletRegistration.Dynamic`
`addServlet(String servletName, Servlet servlet)`
`ServletRegistration.Dynamic`
`addServlet(String servletName, Class<? extends Servlet> servletClass)`
`ServletRegistration.Dynamic`
`addServlet(String servletName, String className)`
`<T extends Filter>
T`
`createFilter(Class<T> c)`
`<T extends EventListener>
T`
`createListener(Class<T> c)`
`<T extends Servlet>
T`
`createServlet(Class<T> c)`
`void`
`declareRoles(String... roleNames)`
`Object`
`getAttribute(String name)`
`Enumeration<String>`
`getAttributeNames()`
`ClassLoader`
`getClassLoader()`
`ServletContext`
`getContext(String contextPath)`
`String`
`getContextPath()`
`Set<String>`
`getDeclaredRoles()`
`String`
`getDefaultServletName()`
Get the name of the default `Servlet`.
`Set<SessionTrackingMode>`
`getDefaultSessionTrackingModes()`
`int`
`getEffectiveMajorVersion()`
`int`
`getEffectiveMinorVersion()`
`Set<SessionTrackingMode>`
`getEffectiveSessionTrackingModes()`
`FilterRegistration`
`getFilterRegistration(String filterName)`
`Map<String,? extends FilterRegistration>`
`getFilterRegistrations()`
`String`
`getInitParameter(String name)`
`Enumeration<String>`
`getInitParameterNames()`
`JspConfigDescriptor`
`getJspConfigDescriptor()`
`int`
`getMajorVersion()`
`String`
`getMimeType(String filePath)`
`int`
`getMinorVersion()`
`RequestDispatcher`
`getNamedDispatcher(String path)`
`String`
`getRealPath(String path)`
`String`
`getRequestCharacterEncoding()`
`RequestDispatcher`
`getRequestDispatcher(String path)`
`URL`
`getResource(String path)`
`InputStream`
`getResourceAsStream(String path)`
`protected String`
`getResourceLocation(String path)`
Build a full resource location for the given path, prepending the resource base path of this `MockServletContext`.
`Set<String>`
`getResourcePaths(String path)`
`String`
`getResponseCharacterEncoding()`
`String`
`getServerInfo()`
`String`
`getServletContextName()`
`ServletRegistration`
`getServletRegistration(String servletName)`
This method always returns `null`.
`Map<String,? extends ServletRegistration>`
`getServletRegistrations()`
This method always returns an empty map.
`SessionCookieConfig`
`getSessionCookieConfig()`
`int`
`getSessionTimeout()`
`String`
`getVirtualServerName()`
`void`
`log(String message)`
`void`
`log(String message, Throwable ex)`
`void`
`registerContext(String contextPath, ServletContext context)`
`void`
`registerNamedDispatcher(String name, RequestDispatcher requestDispatcher)`
Register a `RequestDispatcher` (typically a `MockRequestDispatcher`) that acts as a wrapper for the named Servlet.
`void`
`removeAttribute(String name)`
`void`
`setAttribute(String name, Object value)`
`void`
`setContextPath(String contextPath)`
`void`
`setDefaultServletName(String defaultServletName)`
Set the name of the default `Servlet`.
`void`
`setEffectiveMajorVersion(int effectiveMajorVersion)`
`void`
`setEffectiveMinorVersion(int effectiveMinorVersion)`
`boolean`
`setInitParameter(String name, String value)`
`void`
`setMajorVersion(int majorVersion)`
`void`
`setMinorVersion(int minorVersion)`
`void`
`setRequestCharacterEncoding(String requestCharacterEncoding)`
`void`
`setResponseCharacterEncoding(String responseCharacterEncoding)`
`void`
`setServletContextName(String servletContextName)`
`void`
`setSessionTimeout(int sessionTimeout)`
`void`
`setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes)`
`void`
`unregisterNamedDispatcher(String name)`
Unregister the `RequestDispatcher` with the given name.

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

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

## Constructor Details

### MockServletContext

public MockServletContext()
Create a new `MockServletContext`, using no base path and a `DefaultResourceLoader` (i.e. the classpath root as WAR root).

See Also:
  - `DefaultResourceLoader`

### MockServletContext

public MockServletContext(String resourceBasePath)
Create a new `MockServletContext`, using a `DefaultResourceLoader`.

Parameters:
  `resourceBasePath` - the root directory of the WAR (should not end with a slash)
See Also:
  - `DefaultResourceLoader`

### MockServletContext

public MockServletContext(@Nullable org.springframework.core.io.ResourceLoader resourceLoader)
Create a new `MockServletContext`, using the specified `ResourceLoader` and no base path.

Parameters:
  `resourceLoader` - the ResourceLoader to use (or null for the default)

### MockServletContext

public MockServletContext(String resourceBasePath, @Nullable org.springframework.core.io.ResourceLoader resourceLoader)
Create a new `MockServletContext` using the supplied resource base path and resource loader.

Registers a `MockRequestDispatcher` for the Servlet named 'default'.

Parameters:
  `resourceBasePath` - the root directory of the WAR (should not end with a slash)
  `resourceLoader` - the ResourceLoader to use (or null for the default)
See Also:
  - `registerNamedDispatcher(java.lang.String, jakarta.servlet.RequestDispatcher)`

## Method Details

### getResourceLocation

protected String getResourceLocation(String path)
Build a full resource location for the given path, prepending the resource base path of this `MockServletContext`.

Parameters:
  `path` - the path as specified
Returns:
  the full resource path

### setContextPath

public void setContextPath(String contextPath)

### getContextPath

public String getContextPath()

Specified by:
  `getContextPath` in interface `ServletContext`

### registerContext

public void registerContext(String contextPath, ServletContext context)

### getContext

@Nullable public ServletContext getContext(String contextPath)

Specified by:
  `getContext` in interface `ServletContext`

### setMajorVersion

public void setMajorVersion(int majorVersion)

### getMajorVersion

public int getMajorVersion()

Specified by:
  `getMajorVersion` in interface `ServletContext`

### setMinorVersion

public void setMinorVersion(int minorVersion)

### getMinorVersion

public int getMinorVersion()

Specified by:
  `getMinorVersion` in interface `ServletContext`

### setEffectiveMajorVersion

public void setEffectiveMajorVersion(int effectiveMajorVersion)

### getEffectiveMajorVersion

public int getEffectiveMajorVersion()

Specified by:
  `getEffectiveMajorVersion` in interface `ServletContext`

### setEffectiveMinorVersion

public void setEffectiveMinorVersion(int effectiveMinorVersion)

### getEffectiveMinorVersion

public int getEffectiveMinorVersion()

Specified by:
  `getEffectiveMinorVersion` in interface `ServletContext`

### getMimeType

@Nullable public String getMimeType(String filePath)

Specified by:
  `getMimeType` in interface `ServletContext`

### addMimeType

public void addMimeType(String fileExtension, org.springframework.http.MediaType mimeType)
Adds a mime type mapping for use by `getMimeType(String)`.

Parameters:
  `fileExtension` - a file extension, such as `txt`, `gif`
  `mimeType` - the mime type

### getResourcePaths

@Nullable public Set<String> getResourcePaths(String path)

Specified by:
  `getResourcePaths` in interface `ServletContext`

### getResource

@Nullable public URL getResource(String path) throws MalformedURLException

Specified by:
  `getResource` in interface `ServletContext`
Throws:
  `MalformedURLException`

### getResourceAsStream

@Nullable public InputStream getResourceAsStream(String path)

Specified by:
  `getResourceAsStream` in interface `ServletContext`

### getRequestDispatcher

public RequestDispatcher getRequestDispatcher(String path)

Specified by:
  `getRequestDispatcher` in interface `ServletContext`

### getNamedDispatcher

@Nullable public RequestDispatcher getNamedDispatcher(String path)

Specified by:
  `getNamedDispatcher` in interface `ServletContext`

### registerNamedDispatcher

public void registerNamedDispatcher(String name, RequestDispatcher requestDispatcher)
Register a `RequestDispatcher` (typically a `MockRequestDispatcher`) that acts as a wrapper for the named Servlet.

Parameters:
  `name` - the name of the wrapped Servlet
  `requestDispatcher` - the dispatcher that wraps the named Servlet
See Also:
  - `getNamedDispatcher(java.lang.String)`
  - `unregisterNamedDispatcher(java.lang.String)`

### unregisterNamedDispatcher

public void unregisterNamedDispatcher(String name)
Unregister the `RequestDispatcher` with the given name.

Parameters:
  `name` - the name of the dispatcher to unregister
See Also:
  - `getNamedDispatcher(java.lang.String)`
  - `registerNamedDispatcher(java.lang.String, jakarta.servlet.RequestDispatcher)`

### getDefaultServletName

public String getDefaultServletName()
Get the name of the default `Servlet`.

Defaults to 'default'.

See Also:
  - `setDefaultServletName(java.lang.String)`

### setDefaultServletName

public void setDefaultServletName(String defaultServletName)
Set the name of the default `Servlet`.

Also `unregisters` the current default `RequestDispatcher` and `replaces` it with a `MockRequestDispatcher` for the provided `defaultServletName`.

Parameters:
  `defaultServletName` - the name of the default `Servlet`; never `null` or empty
See Also:
  - `getDefaultServletName()`

### log

public void log(String message)

Specified by:
  `log` in interface `ServletContext`

### log

public void log(String message, Throwable ex)

Specified by:
  `log` in interface `ServletContext`

### getRealPath

@Nullable public String getRealPath(String path)

Specified by:
  `getRealPath` in interface `ServletContext`

### getServerInfo

public String getServerInfo()

Specified by:
  `getServerInfo` in interface `ServletContext`

### getInitParameter

@Nullable public String getInitParameter(String name)

Specified by:
  `getInitParameter` in interface `ServletContext`

### getInitParameterNames

public Enumeration<String> getInitParameterNames()

Specified by:
  `getInitParameterNames` in interface `ServletContext`

### setInitParameter

public boolean setInitParameter(String name, String value)

Specified by:
  `setInitParameter` in interface `ServletContext`

### addInitParameter

public void addInitParameter(String name, String value)

### getAttribute

@Nullable public Object getAttribute(String name)

Specified by:
  `getAttribute` in interface `ServletContext`

### getAttributeNames

public Enumeration<String> getAttributeNames()

Specified by:
  `getAttributeNames` in interface `ServletContext`

### setAttribute

public void setAttribute(String name, @Nullable Object value)

Specified by:
  `setAttribute` in interface `ServletContext`

### removeAttribute

public void removeAttribute(String name)

Specified by:
  `removeAttribute` in interface `ServletContext`

### setServletContextName

public void setServletContextName(String servletContextName)

### getServletContextName

public String getServletContextName()

Specified by:
  `getServletContextName` in interface `ServletContext`

### getClassLoader

@Nullable public ClassLoader getClassLoader()

Specified by:
  `getClassLoader` in interface `ServletContext`

### declareRoles

public void declareRoles(String... roleNames)

Specified by:
  `declareRoles` in interface `ServletContext`

### getDeclaredRoles

public Set<String> getDeclaredRoles()

### setSessionTrackingModes

public void setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes) throws IllegalStateException, IllegalArgumentException

Specified by:
  `setSessionTrackingModes` in interface `ServletContext`
Throws:
  `IllegalStateException`
  `IllegalArgumentException`

### getDefaultSessionTrackingModes

public Set<SessionTrackingMode> getDefaultSessionTrackingModes()

Specified by:
  `getDefaultSessionTrackingModes` in interface `ServletContext`

### getEffectiveSessionTrackingModes

public Set<SessionTrackingMode> getEffectiveSessionTrackingModes()

Specified by:
  `getEffectiveSessionTrackingModes` in interface `ServletContext`

### getSessionCookieConfig

public SessionCookieConfig getSessionCookieConfig()

Specified by:
  `getSessionCookieConfig` in interface `ServletContext`

### setSessionTimeout

public void setSessionTimeout(int sessionTimeout)

Specified by:
  `setSessionTimeout` in interface `ServletContext`

### getSessionTimeout

public int getSessionTimeout()

Specified by:
  `getSessionTimeout` in interface `ServletContext`

### setRequestCharacterEncoding

public void setRequestCharacterEncoding(@Nullable String requestCharacterEncoding)

Specified by:
  `setRequestCharacterEncoding` in interface `ServletContext`

### getRequestCharacterEncoding

@Nullable public String getRequestCharacterEncoding()

Specified by:
  `getRequestCharacterEncoding` in interface `ServletContext`

### setResponseCharacterEncoding

public void setResponseCharacterEncoding(@Nullable String responseCharacterEncoding)

Specified by:
  `setResponseCharacterEncoding` in interface `ServletContext`

### getResponseCharacterEncoding

@Nullable public String getResponseCharacterEncoding()

Specified by:
  `getResponseCharacterEncoding` in interface `ServletContext`

### addFilterRegistration

public void addFilterRegistration(FilterRegistration registration)
Add a `FilterRegistration`.

Since:
  6.2

### getFilterRegistration

@Nullable public FilterRegistration getFilterRegistration(String filterName)

Specified by:
  `getFilterRegistration` in interface `ServletContext`

### getFilterRegistrations

public Map<String,? extends FilterRegistration> getFilterRegistrations()

Specified by:
  `getFilterRegistrations` in interface `ServletContext`

### getJspConfigDescriptor

public JspConfigDescriptor getJspConfigDescriptor()

Specified by:
  `getJspConfigDescriptor` in interface `ServletContext`

### addJspFile

public ServletRegistration.Dynamic addJspFile(String servletName, String jspFile)

Specified by:
  `addJspFile` in interface `ServletContext`

### addServlet

public ServletRegistration.Dynamic addServlet(String servletName, String className)

Specified by:
  `addServlet` in interface `ServletContext`

### addServlet

public ServletRegistration.Dynamic addServlet(String servletName, Servlet servlet)

Specified by:
  `addServlet` in interface `ServletContext`

### addServlet

public ServletRegistration.Dynamic addServlet(String servletName, Class<? extends Servlet> servletClass)

Specified by:
  `addServlet` in interface `ServletContext`

### createServlet

public <T extends Servlet> T createServlet(Class<T> c) throws ServletException

Specified by:
  `createServlet` in interface `ServletContext`
Throws:
  `ServletException`

### getServletRegistration

@Nullable public ServletRegistration getServletRegistration(String servletName)
This method always returns `null`.

Specified by:
  `getServletRegistration` in interface `ServletContext`
See Also:
  - `ServletContext.getServletRegistration(java.lang.String)`

### getServletRegistrations

public Map<String,? extends ServletRegistration> getServletRegistrations()
This method always returns an empty map.

Specified by:
  `getServletRegistrations` in interface `ServletContext`
See Also:
  - `ServletContext.getServletRegistrations()`

### addFilter

public FilterRegistration.Dynamic addFilter(String filterName, String className)

Specified by:
  `addFilter` in interface `ServletContext`

### addFilter

public FilterRegistration.Dynamic addFilter(String filterName, Filter filter)

Specified by:
  `addFilter` in interface `ServletContext`

### addFilter

public FilterRegistration.Dynamic addFilter(String filterName, Class<? extends Filter> filterClass)

Specified by:
  `addFilter` in interface `ServletContext`

### createFilter

public <T extends Filter> T createFilter(Class<T> c) throws ServletException

Specified by:
  `createFilter` in interface `ServletContext`
Throws:
  `ServletException`

### addListener

public void addListener(Class<? extends EventListener> listenerClass)

Specified by:
  `addListener` in interface `ServletContext`

### addListener

public void addListener(String className)

Specified by:
  `addListener` in interface `ServletContext`

### addListener

public <T extends EventListener> void addListener(T t)

Specified by:
  `addListener` in interface `ServletContext`

### createListener

public <T extends EventListener> T createListener(Class<T> c) throws ServletException

Specified by:
  `createListener` in interface `ServletContext`
Throws:
  `ServletException`

### getVirtualServerName

public String getVirtualServerName()

Specified by:
  `getVirtualServerName` in interface `ServletContext`