service method invocation

Hi,

Extended HttpServlet to one of my servlet class and implemented following both methods,

.... service(ServletRequest,ServletResponse) throws ........

.... service(HttpServletRequest,HttpServletResponse) throws ........

What method will get invoked if a request comes to the servlet and why

Thanks

Badri

[349 byte] By [pnatha] at [2007-10-2 21:33:50]
# 1

are u sure that u can use both

.... service(ServletRequest,ServletResponse) throws ........

.... service(HttpServletRequest,HttpServletResponse) throws ........

i think since u have extended HttpServlet so, only u can use service(HttpServletRequest,HttpServletResponse) throws ........ method only..when u r going to try with others should give u error.

dipak66a at 2007-7-14 0:47:35 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 2

if any request comes the execution will start from

service(ServletRequest,ServletResponse) throws

This is because when ever a request come to the container it creates two object first one request which implements javax.servlet.ServletRequest interface and second response object which implements javax.servlet.ServletResponse interface.

According to servlet lifecycle also it will call the service method signature defined in javax.servlet.Servlet interface which due to polymorfism call

service(ServletRequest,ServletResponse) throws

mothod of the chid class

verma_salila at 2007-7-14 0:47:35 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 3

[nobr]you can test , what i said by executing the following section of code

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.Servlet;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class Test123 extends HttpServlet implements Servlet {

public Test123() {

super();

}

protected void doGet(HttpServletRequest arg0, HttpServletResponse response) throws ServletException, IOException {

PrintWriter out= response.getWriter();

out.println("<br>HttpServletRequest in doget()");

}

public void service(ServletRequest request, ServletResponse response)throws IOException, ServletException

{

response.setContentType("Text/Html");

PrintWriter out= response.getWriter();

out.println("<br>ServletRequest");

super.service(request,response);

}

public void service(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException

{

PrintWriter out= response.getWriter();

out.println("<br>HttpServletRequest");

super.service(request,response);

}

}

The out put is -

ServletRequest

HttpServletRequest

HttpServletRequest in doget()

as i explained[/nobr]

verma_salila at 2007-7-14 0:47:35 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 4

Hi,

In that case it is not necessary that i need to extend HttpServlet.

If we leave apart from Session tracking, there is no use of the HttpServlet.

Instead of HttpServlet then we can always use GenericServlet and implement the service method.

Correct me if iam wrong.

badrinathpa at 2007-7-14 0:47:35 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...