2012-06-26 75 views
1

如果我在servlet的主體內寫入自己的方法會發生什麼? servlet容器是否負責照顧它?如果是,如何?如果不是,爲什麼?如果我在Servlet中編寫自己的方法,會發生什麼?

+0

你是什麼意思?你可以發佈代碼示例嗎?或者說明你想達到什麼目的? –

+0

@ JB Niaet:這個問題在接受採訪時問道。我回答說我們可以編寫,但容器不按照servlet的生命週期來處理該方法。我想檢查這個答案是否正確 – Raj

回答

1

是Servlet容器支持自定義Http方法。當任何方法被調用時,容器將調用service()方法。並且它爲HttpServlet.service()方法返回HttpServletResponse.SC_NOT_IMPLEMENTED狀態碼,用於除GET,POST等標準Http方法以外的http方法。

如果您想要定製http方法。覆蓋service()方法,使用HttpServletRequest.getMethod()獲取方法,並調用您的自定義方法。

對於防爆,

public class CustomMethodServlet extends HttpServlet{ 


public void service(HttpServletRequest req, HttpServletResponse res) {\ 
    if(request.getMethod().equals("foo")){ 
    //invoke your custom method 
    doFoo(request,response); 
    }else { 
     super.service(request, response); 
    } 

} 
public void doFoo(HttpServletRequest req, HttpServletResponse res) { 
    //implement your custom method 
} 

}

在Servlet的上述方法可使用foo HTTP方法被調用。

+0

什麼是廢話。 – BalusC

+0

對不起,我錯了。我想默認情況下,Servlet容器調用自定義http方法。但可以編寫自定義http方法,覆蓋service()方法並使用HttpServletRequest.getMethod()使用反射調用自定義方法。 –

0

聽起來像是你指的是JSP頁面,而不是一個servlet。一個servlet是一個Java類並且沒有主體。一個servlet有一個服務方法和一些方法。 Java不支持你在另一箇中寫入一個方法。

+0

OP似乎更多地談論[HTTP方法](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html),而不是Java方法。 – BalusC

相關問題