Servlets 为什么一旦我们覆盖了service(),委托就永远无法到达doGet()?
在我向下面的servlet发出GET请求后,编写了文本“In-service-method”,无法解释它。为什么呢Servlets 为什么一旦我们覆盖了service(),委托就永远无法到达doGet()?,servlets,Servlets,在我向下面的servlet发出GET请求后,编写了文本“In-service-method”,无法解释它。为什么呢 import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class MyServlet extends HttpServlet { public void service(HttpServletRequest req, HttpS
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MyServlet extends HttpServlet {
public void service(HttpServletRequest req,
HttpServletResponse resp) throws IOException {
Writer out = resp.getWriter();
out.write("In Service method");
}
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
Writer out = resp.getWriter();
out.write("In get method");
}
}
阅读(第607行)中的代码将告诉您原因<代码>服务()负责委托给适当的doXXX方法
您可能想阅读关于plain(or)的内容,而不是关于HttpServlet子类的内容。您将在文档中看到,servlet是协议独立的,而HttpServlet肯定是协议依赖的。阅读(第607行)中的代码将告诉您原因<代码>服务()负责委托给适当的doXXX方法
您可能想阅读关于plain(or)的内容,而不是关于HttpServlet子类的内容。您将在文档中看到,servlet是协议独立的,而HttpServlet肯定是协议依赖的。的默认实现完成了这项工作。以下是其javadoc的摘录: 从公共服务方法接收标准HTTP请求,并将其分派到此类中定义的
doXXX
方法。此方法是Servlet.service(javax.Servlet.ServletRequest,javax.Servlet.ServletResponse)
方法的HTTP特定版本。没有必要重写此方法
它根据HTTP方法委托给相应的servlet方法。例如,当request.getMethod()
等于“GET”
时,它将委托给doGet()
。顺便问一下,你也读了最后一句吗
无论如何,你基本上应该自己做同样的工作
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
Writer out = resp.getWriter();
out.write("In Service method");
if ("GET".equalsIgnoreCase(req.getMethod())) {
doGet(req, resp);
}
// Check other methods as well!
}
或者只需调用super
方法即可完成其工作
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
Writer out = resp.getWriter();
out.write("In Service method");
super.service(req, resp);
}
或者根本不重写它。的默认实现完成了该任务。以下是其javadoc的摘录: 从公共服务方法接收标准HTTP请求,并将其分派到此类中定义的
doXXX
方法。此方法是Servlet.service(javax.Servlet.ServletRequest,javax.Servlet.ServletResponse)
方法的HTTP特定版本。没有必要重写此方法
它根据HTTP方法委托给相应的servlet方法。例如,当request.getMethod()
等于“GET”
时,它将委托给doGet()
。顺便问一下,你也读了最后一句吗
无论如何,你基本上应该自己做同样的工作
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
Writer out = resp.getWriter();
out.write("In Service method");
if ("GET".equalsIgnoreCase(req.getMethod())) {
doGet(req, resp);
}
// Check other methods as well!
}
或者只需调用super
方法即可完成其工作
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
Writer out = resp.getWriter();
out.write("In Service method");
super.service(req, resp);
}
或者根本不重写它。HttpServlet的服务方法实际上检查请求是GET还是POST。然后,它根据请求的类型调用适当的方法。HttpServlet的服务方法实际上检查请求是GET还是POST。然后,它会根据请求的类型调用相应的方法。最好的选择是不要覆盖服务方法。是的,HttpServlet中所说的永不覆盖服务()!最好的选择是不要重写服务方法。是的,在HttpServlet中所说的永远不会重写service()!