Java 是否必须使用doGet或doPost方法?
我有几个问题Java 是否必须使用doGet或doPost方法?,java,servlets,Java,Servlets,我有几个问题 我可以拥有一个没有这两个方法的Servlet吗 我可以直接调用我的表单到服务方法。。。像 是的,您可以拥有一个不使用这两种方法的servlet(它们没有实现)。仍然使用HttpServlet而不使用doGet/doPost似乎有点毫无意义,因为servlet只能和有限数量的请求方法进行通信,例如GET,POST,DELETE,PUT(有关更多信息,请参阅) HttpServlet没有doService方法。如果你的意思是void service(),那么我建议你不要搞砸它,除非你
GET
,POST
,DELETE
,PUT
(有关更多信息,请参阅)doService
方法。如果你的意思是void service()
,那么我建议你不要搞砸它,除非你真的知道自己在做什么。
如果您只需要使用doService
从doGet
调用它,doPost
(正如有人建议的那样)public class DoesNothingServlet extends HttpServlet {} //does what the name implies
public class FormServlet extends HttpServlet { //what you want to do
protected doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doService(request,response)
}
protected void doService (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Do something
}
}
阅读
提供要子类化的抽象类,以创建适用于网站的HTTP servlet。HttpServlet的子类必须重写至少一个方法,通常是以下方法之一:
- doGet,如果servlet支持HTTP GET请求
- doPost,用于HTTP POST请求
- doPut,用于HTTP PUT请求
- doDelete,用于HTTP删除请求
- init和destroy,以管理在servlet生命周期内保留的资源
- getServletInfo,servlet使用它来提供关于自身的信息
如果愿意,可以通过doGet和doPost方法调用doService(..,..)方法。不,这不是强制性的。由于
HttpServlet
是一个抽象类,因此所有doXXX
方法都有抽象实现,如果不想实现,您不必实现它们。您会注意到服务()
方法起源于javax.servlet.GenericServlet
而不是javax.servlet.http.HttpServlet
如果你想用一个不涉及http协议的servlet做一些事情,我会说继续
在Head First servlet和JSP中,它们详细解释了这一点。99%您将使用HttpServlet
通过扩展
GenericServlet
,servlet将运行,而不考虑提交的内容。只要URL被激活,service()
方法就会执行。我的理解是,如果我没有弄错的话,您希望您的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()
方法。为什么您想要一个任何人都不能使用的servlet?客户端联系servlet的唯一方式是通过GET、POST、PUT或DELETE。依我拙见
protected doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doService(request,response)
}
protected doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doService(request,response)
}