Java 一个类中有多个servlet
在过去的一周里,我不得不为面试做一个servlet和jsp的速成课程。无论如何,我的面试完全失败了。然而真正让我感到不快的是在一个类中有多个servlet的想法。我所练习的每件事都只有一个servlet执行一个函数。例如: 产品类别Java 一个类中有多个servlet,java,jsp,servlets,Java,Jsp,Servlets,在过去的一周里,我不得不为面试做一个servlet和jsp的速成课程。无论如何,我的面试完全失败了。然而真正让我感到不快的是在一个类中有多个servlet的想法。我所练习的每件事都只有一个servlet执行一个函数。例如: 产品类别 protected void doSearch(HttpServletRequest request, HttpServletResponse response) //Complete method protected void doNew(HttpServletR
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?有人知道在哪里可以找到这种方法的示例吗?Java支持内部类。内部类可以扩展
HttpServlet
,因此可以在web.xml中作为servlet编写
然而,在没有真正原因的情况下创建内部类(将servlet作为内部类)是非常糟糕的做法
另一个想法是在同一web.xml中多次部署同一个servlet,并使用不同的init参数来影响其行为。这是有助于重用现有代码的适用且良好的实践 我想你有些困惑
doDelete()
是HttpServlet
类的可重写方法,就像doPut()
和doGet()
一样。所有这些都由service()
方法(它是Servlet
接口的一部分,也是Servlet容器直接调用的唯一方法)调用,以处理不同的请求,即doGet()
处理GET请求,dodelite()
处理删除请求等,但它仍然是一个Servlet。您可能只熟悉doGet()
和doPost()
,因为其他的都很少使用,但随着应用程序的日益普及,情况正在发生变化
但是HttpServlet
中不存在doSearch()
和doNew()
,并且没有具有这些名称的HTTP方法。如果您真的在代码中看到了这样的方法,那么它们只是用于将代码划分为更易于管理的部分的常规方法——或者您可能是基于您所看到的错误概括而编写示例代码的吗?“如何注册这些servlet?”
那些不是小仆。这些是方法(可能是Servlet的一部分)
您可以从doGet()
和/或doPost()
轻松调用doSearch()
或doNew()
例如,可以使用参数指定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);
}
}
http://mysite.com/MyServletUrl?action=search
执行GET
时,可以在URL中指定如下参数:
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);
}
}
http://mysite.com/MyServletUrl?action=search
如果您正在执行POST
,通常会使用表单指定请求参数
例如,您可以使用下拉菜单或隐藏字段
dodelite()
方法实际上已经是类的一部分(正如其他人所指出的) 我想你误解了“servlet”这个词。它实际上意味着一门课。多个servlet意味着可以实现不同功能的多个类 在一个类中使用多个servlet是什么意思<代码>Servlet是一个接口。你是说许多内部类实现了这个接口吗?请原谅我不是那么了解这个接口,它可能是内部类实现了这个接口。你需要紧急阅读你包含的代码,看起来它更像是属于一个Servlet,可以执行多个不同的功能。我没有看到任何暗示多个servlet在一个类中的内容。我对这些方法的解释是:将一个参数传递给servlet,该servlet指定所需的行为。基于参数的值,Servlet调用其中一个方法(通过传递请求和响应对象)。@jahroy其中doDelete()
继承自HttpServlet
,其余的是自定义的。这是很有可能的。那么在index.jsp中,表单是否会这样?与\product.doSearch相反。doGet/doPost方法是否包含在每个方法中,反之亦然?@Calgar99在
中,您可以设置method=“GET”
和method=“POST”
来触发执行doGet
或doPost
方法。默认情况下,HTML使用
,除非您更改它。我理解这一点,但在“doSearch”方法中包含“protected void doPost(HttpServletRequest,HttpServletResponse)”或其他方法?。您是通过JSTL发送“doSearch”参数,还是有更直接的执行“doSearch”的方法?doPost()
mehod将调用doSearch()
。有许多方法可以将参数传递给servlet。这完全取决于前端的外观。对于GET
请求,可以在URL中传递如下参数:http://mysite.com/MyServletUrl?action=search
。然后Servlet将检查名为action
(在其doGet()
方法中)的参数值,并根据该值决定调用哪个方法。我将在我的答案中添加一些基本的示例代码。。。