This can be achieved in 3 simple steps:
1. Implement HttpRequestHandler
First of all, your servlet class must implement the
org.springframework.web.HttpRequestHandler
interface and provide an implementation for the
handleRequest()
method just like you would override
doPost()
.
2. Declare the servlet as a Spring Bean
You can do this by either adding the
@Component("myServlet")
annotation to the class, or declaring a bean with a name
myServlet
in
applicationContext.xml.
@Component("myServlet")
public class MyServlet implements HttpRequestHandler {
...
3. Declare in web.xml a servlet named exactly as the Spring Bean
The last step is to declare a new servlet in
web.xml that will have the same name as the previously declared Spring bean, in our case
myServlet
. The servlet class must be
org.springframework.web.context.support.HttpRequestHandlerServlet
.
<servlet>
<display-name>MyServlet</display-name>
<servlet-name>myServlet</servlet-name>
<servlet-class>
org.springframework.web.context.support.HttpRequestHandlerServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/myurl</url-pattern>
</servlet-mapping>
Now you are ready to inject any spring bean in your servlet class.
@Component("myServlet")
public class MyServlet implements HttpRequestHandler {
@Autowired
private MyService myService;