12. Servlet入门 – Servlet体系结构
前言
前面的章节中,我们基本认识了 Servlet 程序的实现方法,就是实现 Servlet 接口。
下面我们来看看 Servlet 的体系结构,然后再来看看如何更加方便实现 Servlet 程序的方法。
使用 Idea 中查看 Servlet 的体系结构
1.进入 Servlet 接口的源码,右键 Servlet,打开 Servlet 接口的体系结构图
2.继续查看实现 Servlet 接口的方法
好了,到这里我们也大概知道 Servlet 接口实现的体系结构,下面我们再基于 API 文档来深入认识一下,然后再用代码实现一下。
在 API 文档查看 Servlet 的体系结构
查阅API查看Servlet接口的体系结构如下:
由API文档来看,我们可以使用继承 GenericServlet 或者HttpServlet来实现接口,我们下面我们分别看看这两个类,并且分别实现 Servlet。
1. GenericServlet 类
1.2 使用GenericServlet 创建servlet:
-
创建一个类 -
继承GenericServlet -
重写service方法
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:
-
创建一个类 -
继承HttpServlet -
重写doGet方法和doPost方法
@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
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程序。
原文始发于微信公众号(海洋的渔夫):12. Servlet入门 – Servlet体系结构
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/34658.html