簡體   English   中英

一個類中有多個servlet

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM