阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

HttpServlet类型介绍

108次阅读
没有评论

共计 1764 个字符,预计需要花费 5 分钟才能阅读完成。

一、HttpServlet 概述

HttpServlet 类是 GenericServlet 的子类,它提供了对 HTTP 请求的特殊支持,所以通常我们都会通过继承 HttpServlet 来完成自定义的 Servlet。

二、HttpServlet 覆盖了 service() 方法

HttpServlet 类中提供了 service(HttpServletRequest,HttpServletResponse) 方法,这个方法是 HttpServlet 自己的方法,不是从 Servlet 继承来的。

在 HttpServlet 的 service(ServletRequest,ServletResponse) 方法中会把 ServletRequest 和 ServletResponse 强转成 HttpServletRequest 和 HttpServletResponse,然后调用 service(HttpServletRequest,HttpServletResponse) 方法,这说明子类可以去覆盖 service(HttpServletRequest,HttpServletResponse) 方法即可,这就不用自己去强转请求和响应对象了。

其实子类也不用去覆盖 service(HttpServletRequest,HttpServletResponse) 方法,因为 HttpServlet 还要做另一步简化操作,下面会介绍。

HttpServlet.java

public abstract class HttpServlet extends GenericServlet {protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 根据 request 对象是 GET 请求还是 POST 请求,然后去调用 //doGet 方法或者 doPost 方法 /* if(req.getMethod=="GET"){doGet(req,resp); } else{doPost(req,resp); } */ } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { HttpServletRequest request; HttpServletResponse response; try {request = (HttpServletRequest) req; response = (HttpServletResponse) res; } catch (ClassCastException e) {throw new ServletException("non-HTTP request or response"); } service(request, response); } …… }

三、doGet() 和 doPost()

在 HttpServlet 的 service(HttpServletRequest,HttpServletResponse) 方法会去判断当前请求是 GET 还是 POST,如果是 GET 请求,那么会去调用本类的 doGet() 方法,如果是 POST 请求会去调用 doPost() 方法,这说明我们在子类中去覆盖 doGet() 或 doPost() 方法即可。

public class AServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("hello doGet()..."); } }
public class BServlet extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("hello doPost()..."); } }

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-06-06发表,共计1764字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中