java - 如何要求 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
实现者不会意外覆盖它,从而绕过您的实现。- 抽象方法必须是
public
orprotected
,但不能是private
(如您的示例)。 - 在 Java 中,通常的做法是让方法名称以小写字符开头。
推荐阅读
- python-3.x - 如何在循环中跳过空数据框并保存组合结果
- django - 基于相关字段的注释,带有过滤器
- javascript - 我可以在 express js 的控制器内使用路由吗?
- flutter - Flutter:保存正确答案的颜色以在应用关闭并再次重新打开时变得持久
- css - Grunt Livereload 仅重新加载样式
- angular - Angular:在运行时向 div 添加工具提示
- java - 为什么 `print(String)` 等到换行后再打印到控制台(Kotlin)?
- python - 从线程导入模块不起作用
- .net - 我无法从字符串中打印字符
- mongodb - 了解 MongoDB Atlas 中的 MongoDB 存储大小、磁盘空间、数据库大小