我几乎没有问题。
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FormServlet extends HttpServlet {
protected void doService (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
答案 0 :(得分:4)
GET
,POST
,DELETE
,{{1 (更多请参阅specification section 5.1.1)。PUT
方法。如果你的意思是doService
那么我建议你不要弄乱它,除非你真的知道你在做什么。
如果你只需要void service()
使用doService
,doGet
(就像有人建议的那样)来调用它。好的,例子:
doPost
答案 1 :(得分:4)
不,这不是强制性的。由于HttpServlet
是一个抽象类,因此所有doXXX
方法都有抽象实现,如果您不想这样做,则不必实现它们。
答案 2 :(得分:1)
提供要进行子类化的抽象类,以创建适用于Web站点的HTTP Servlet。 HttpServlet的子类必须至少覆盖一个方法,通常是以下方法之一:
- doGet,如果servlet支持HTTP GET请求
- doPost,用于HTTP POST请求
- doPut,用于HTTP PUT请求
- doDelete,用于HTTP DELETE请求
- 初始化和销毁,以管理为servlet生命周期而持有的资源
- getServletInfo,servlet用来提供有关自身的信息
如果您愿意,可以从doGet和doPost方法调用doService(..,..)方法。
答案 3 :(得分:0)
您会注意到service()
方法来自javax.servlet.GenericServlet
而不是javax.servlet.http.HttpServlet
。
如果你想对一个不涉及 http协议的servlet做点什么,我会说继续。
在Head First Servlets和JSP中,他们详细解释了这一点。 99%您将使用HttpServlet
。
通过扩展GenericServlet
,无论提交的内容如何,servlet都会运行。只要触发了URL,就会执行service()
方法。
答案 4 :(得分:0)
我的理解是,如果我说得对,你想要你的HTTP GET,POST,(PUT,DELETE)来调用你的doService
方法。如果是这种情况,你可以这样做。
protected doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doService(request,response)
}
protected doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doService(request,response)
}
如果您延长HttpServlet
,则不必覆盖doGet
和doPost
,因为它已由HttpServlet
实施。 Servlet请求由service()
方法处理,然后(基于HTTP请求方法)调用其相关的doXXX
方法。
我不会弄乱service()
方法,除非你知道你在做什么。