首页 > 解决方案 > 如何要求 servlet 提供方法 java 的实现

问题描述

这里是这个行业的新手,我目前正在尝试开发一个处理不同类型表单的 Web 应用程序。在我开发 Web 应用程序的过程中,我注意到我正在向不同的 servlet 添加一个方法来处理类似但不同的功能,现在知道在某些时候其他人可能正在查看/对系统进行更改,我想通过抽象类为这些servlet创建一个模板,这样系统代码在添加新表单时保持一致

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    SampleMethodName(request,response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    SampleMethodName(request,response);
}

private void SampleMethodName(HttpServletRequest request, HttpServletResponse response) throws IOException {/* do stuff */}

我想创建一个抽象类作为这些 servlet 的模板,但我不能,因为 java servlet 已经扩展了一个抽象类

public class SampleClassName extends HttpServlet {
private static final long serialVersionUID = 1L;

我觉得我需要改变方法,但我还是想问

标签: java

解决方案


让一个抽象类扩展另一个抽象类没有问题。因此,您的特殊课程可能如下所示:

public abstract class AbstractSampleServlet extends HttpServlet {

  protected final void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    sampleMethodName(request, response);
  }

  protected abstract void sampleMethodName(HttpServletRequest request, HttpServletResponse response) throws IOException;

}

而已。现在让所有实现者扩展您的新基类,而不是HttpServlet直接扩展。这里的一些附加说明:

  • doGet应该标记为,因此final实现者不会意外覆盖它,从而绕过您的实现。
  • 抽象方法必须是publicor protected,但不能是private(如您的示例)。
  • 在 Java 中,通常的做法是让方法名称以小写字符开头。

推荐阅读