![](/img/trans.png)
[英]How to declare multiple servlets from one class definition using annotation
[英]Multiple servlets in a class
在過去的一周中,我不得不在servlet和jsp中進行速成課程以進行采訪。 無論如何,我完全不接受面試。 真正使我失望的是一個類中有多個servlet的想法。 我練習過的一切只有一個servlet執行一項功能。 例如:
產品類別
protected void doSearch(HttpServletRequest request, HttpServletResponse response)
//Complete method
protected void doNew(HttpServletRequest request, HttpServletResponse response)
//Complete method
protected void doDelete(HttpServletRequest request, HttpServletResponse response)
//Complete method
如何在web.xml中注冊這些servlet並執行doGet / doPost? 有誰知道在哪里可以找到這種方法的示例?
我覺得你有些困惑。 doDelete()
是HttpServlet
類的可重寫方法,就像doPut()
和doGet()
。 所有這些都由service()
方法(它是Servlet
接口的一部分,並且是唯一由Servlet容器直接調用的方法)調用以處理HTTP協議的不同方法 ,即doGet()
處理GET請求, doDelete()
處理DELETE請求等。但它仍然是單個Servlet。 您可能只熟悉doGet()
和doPost()
因為其他的很少使用,但是由於REST概念的日益普及,這種情況正在改變。
但是doSearch()
和doNew()
在HttpServlet
不存在,並且沒有使用這些名稱的HTTP方法。 如果您確實在代碼中看到過這樣的方法,那么它們只是用於將代碼分成更易管理的部分的常規方法-或者您是否基於對所看到內容的不正確概括而組成了示例代碼?
“ 如何注冊這些servlet ?”
這些不是servlet。 這些是方法(可能是Servlet的一部分 )。
您可以輕松地從doGet()
和/或doPost()
調用doSearch()
或doNew()
doPost()
。
例如,可以使用參數指定Servlet調用哪種方法。
以最簡單的形式,您的Servlet的doPost()
方法可能如下所示:
protected void doPost(HttpServletRequest req, HttpServletResponse res) {
String actionValue = req.getParameter("action");
if ("search".equals(actionValue)) {
doSearch(req, res);
}
else if ("new".equals(actionValue)) {
doNew(req, res);
}
}
執行GET
,可以在URL中指定一個參數,如下所示:
http://mysite.com/MyServletUrl?action=search
如果您要進行POST
,則通常使用表單指定請求參數。
例如,您可以使用下拉菜單或隱藏字段。
doDelete()
方法實際上已經是HttpServlet類的一部分(其他人指出)。
Java支持內部類。 內部類可以擴展HttpServlet
,因此可以將它作為servlet寫入web.xml中。
但是,創建沒有真正原因的內部類(將servlet作為內部類)是非常糟糕的做法。
還有一個想法是,使用影響其行為的不同初始化參數,在同一web.xml中多次部署同一servlet。 這是適用的良好做法,有助於重用現有代碼。
我認為您誤解了“ servlet”一詞。 這實際上意味着一堂課。 多個servlet意味着可以實現不同功能的多個類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.