如何要求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;

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

让一个抽象类扩展另一个抽象类是没有问题的。因此,您的特殊课看起来像这样:

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,因此实施者不会偶然地覆盖它,从而绕过您的实现。
  • 抽象方法必须是publicprotected,但不能是private(如您的示例中)。
  • 在Java中,具有方法名称以小写字符开头是常见的做法。

最新更新