Servlet实现的几种形式

简介: Servlet实现的几种形式

先看示意图:


1.继承GenericServlet

public class TestServlet extends GenericServlet {
    private static final long serialVersionUID = 1L;
    @Override
    public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException {
    }
}
--------------------------------------------------------
GenericServlet--抽象类,实现了Servlet接口
public abstract class GenericServlet 
    implements Servlet, ServletConfig, java.io.Serializable
{
    private transient ServletConfig config;
    .........
    .........
 }


2.继承HttpServlet

好爽,request,response,config,都是现成的,service方法已经被重写,只需要根据需求调用 doGet() 或者doPost() 方法即可!!!

public class TestServlet2 extends HttpServlet {
    public TestServlet2() {
        super();
    }
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
    }
    public void doDelete(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }
    public void doPut(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }
    public void init() throws ServletException {
    }
}


HttpServlet


这个类继承GenericServlet类,实现了java.io.Serializable的接口,它是个抽象类,给其子类创建一个Http Servlet去适应一个网站。


而HttpServlet的子类必须重写至少一个方法,其中较为经常修改的方法如下:


1、如果你希望servlet支持HTTP的Get请求,重写doGet方法


2、如果你希望servlet支持HTTP的Post请求,重写doPost方法


3、如果你希望servlet不但可以处理数据,还可以处理文件,重写doPut方法。Put的调用和Post相似,它允许客户端把真正的文件存放在服务器上,而不仅仅是传送数据


4、如果你希望servlet允许客户端删除服务器端的文件或者Web页面,重写doDelete方法,它与Put相似。


5、如果你希望控制servlet生命周期所产生的资源,可以重写init和destroy方法


6、如果你希望servlet提供关自身的相关信息,可以调用或重写javax.servlet.http.HttpServlet类继承javax.servlet.GenericServlet类的getServletInfo方法。

public abstract class HttpServlet extends GenericServlet
    implements java.io.Serializable {
    }

3.实现Servlet接口

public class TestServlet implements Servlet {
    private static final long serialVersionUID = 1L;
    public void destroy() {
    }
    public ServletConfig getServletConfig() {
        return null;
    }
    public String getServletInfo() {
        return null;
    }
    public void init(ServletConfig config) throws ServletException {
    }
    public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException {
    }
}



是不是很不爽,需要重写这么多方法!!!


目录
相关文章
|
应用服务中间件 nginx Windows
nginx反向代理wss websocket
本文是博主学习nginx的记录,希望对大家有所帮助。
1938 0
nginx反向代理wss websocket
|
5月前
|
缓存 Android开发 iOS开发
Kotlin跨平台Compose Multiplatform实战指南
Kotlin Multiplatform (KMP) 结合 Compose Multiplatform,助力开发者用一套代码构建跨平台应用(Android、iOS、桌面和 Web)。本文提供实战指南,涵盖环境搭建、项目结构、共享 UI 编写、平台适配、状态管理及资源处理等内容。通过 expect/actual 处理差异,借助官方文档与示例项目学习,减少重复代码,优化多平台开发体验。
1124 18
|
7月前
|
Kubernetes 网络协议 API
OpenAI 全球宕机思考:谈谈可观测采集稳定性建设
OpenAI 全球宕机思考:谈谈可观测采集稳定性建设
101 0
|
12月前
|
API
开发指南052-文本编辑组件
平台的文本编辑组件是基于wangedit做的二次封装
|
存储 机器学习/深度学习 弹性计算
什么是阿里云服务器?云服务器的优缺点
什么是阿里云服务器?云服务器的优缺点,阿里云服务器全方位介绍包括云服务器ECS优势、云服务器租用价格、云服务器使用场景及限制说明,阿里云服务器网分享云服务器ECS介绍、个人和企业免费试用、云服务器活动、云服务器ECS规格、优势、功能及应用场景详细
199 0
什么是阿里云服务器?云服务器的优缺点
|
SQL 关系型数据库 MySQL
mysql的group by与order by同时使用导致排序
mysql的group by与order by同时使用导致排序
314 0
|
存储 网络协议 容灾
linux-iscsi服务的搭建
linux-iscsi服务的搭建
281 0
|
机器学习/深度学习 人工智能 文件存储
AAAI 2023 | 打破NAS瓶颈,新方法AIO-P跨任务预测架构性能
AAAI 2023 | 打破NAS瓶颈,新方法AIO-P跨任务预测架构性能
319 0
Python3学习笔记
Python3学习笔记
|
关系型数据库 MySQL 数据安全/隐私保护