前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >12. Servlet入门 - Servlet体系结构

12. Servlet入门 - Servlet体系结构

作者头像
Devops海洋的渔夫
发布2022-01-14 17:42:43
2620
发布2022-01-14 17:42:43
举报
文章被收录于专栏:Devops专栏

12. Servlet入门 - Servlet体系结构

前言

前面的章节中,我们基本认识了 Servlet 程序的实现方法,就是实现 Servlet 接口。

下面我们来看看 Servlet 的体系结构,然后再来看看如何更加方便实现 Servlet 程序的方法。

使用 Idea 中查看 Servlet 的体系结构

1.进入 Servlet 接口的源码,右键 Servlet,打开 Servlet 接口的体系结构图

image-20201224000346839

image-20201224001447987

2.继续查看实现 Servlet 接口的方法

image-20201224001544039

image-20201224001622841

image-20201224001707643

好了,到这里我们也大概知道 Servlet 接口实现的体系结构,下面我们再基于 API 文档来深入认识一下,然后再用代码实现一下。

在 API 文档查看 Servlet 的体系结构

查阅API查看Servlet接口的体系结构如下:

由API文档来看,我们可以使用继承 GenericServlet 或者HttpServlet来实现接口,我们下面我们分别看看这两个类,并且分别实现 Servlet。

1. GenericServlet 类

1.2 使用GenericServlet 创建servlet:
  1. 创建一个类
  2. 继承GenericServlet
  3. 重写service方法

image-20201224224238008

代码语言:javascript
复制
package com.web;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

/**
 * @author Aron.li
 * @date 2020/12/24 22:37
 */
@WebServlet(name = "GenericDemoServlet",urlPatterns = "/generic")
public class GenericDemoServlet extends GenericServlet {

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("GenericDemoServlet执行.......");
    }

}

虽然,GenericServlet已经简化了servlet开发,但是我们平时开发程序需要按照一种互联网传输数据的协议来开发程序——http协议,因此,sun公司又专门提供了HttpServlet,来适配这种协议下的开发。

2. HttpServlet 类

阅读上图的API可知,继承HttpServlet,我们需要重写doGet、doPost等方法中一个即可,根据Http不同的请求,我们需要实现相应的方法。

2.1 使用HttpServlet创建servlet:
  1. 创建一个类
  2. 继承HttpServlet
  3. 重写doGet方法和doPost方法

image-20201224224630000

image-20201224225127562

代码语言:javascript
复制
@WebServlet("/httpServlet")
public class HttpDemoServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("GET 方法。。。。");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("POST 方法。。。。");
    }

}

通过重写不同的方法,可以分别执行 GET 或者 POST 请求的业务。

2.2 在GET请求与POST请求处理相同业务的情况下,我们会选择在doGet中调用doPost

image-20201224225420739

代码语言:javascript
复制
package com.web;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Servlet的常用的编写方法:
 * 1. 写一个类继承HttpServlet,重写doGet和doPost方法
 *    1.1 doGet()方法,是处理来自客户端的get请求
 *    1.2 doPost()方法,是处理来自客户端的post请求
 *
 *    通常情况下:服务器端针对同一个请求(不同的请求方式)不会做不同的处理,所以我们会选择在doGet中调用doPost
 * 2. 配置servlet的映射路径
 *
 * @author Aron.li
 * @date 2020/12/24 22:45
 */
@WebServlet("/httpServlet")
public class HttpDemoServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp); // 在doGet方法中调用doPost方法
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("POST 方法。。。。");
    }

}

总结

通过以上两个API阅读,我们注意一个细节HttpServlet是GenericServlet的子类,它增强了GenericServlet一些功能,因此,在后期使用的时候,我们都是选择继承HttpServlet来开发servlet程序。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 12. Servlet入门 - Servlet体系结构
    • 前言
      • 使用 Idea 中查看 Servlet 的体系结构
        • 1.进入 Servlet 接口的源码,右键 Servlet,打开 Servlet 接口的体系结构图
        • 2.继续查看实现 Servlet 接口的方法
      • 在 API 文档查看 Servlet 的体系结构
        • 1. GenericServlet 类
        • 2. HttpServlet 类
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档