【JavaWeb】Servlet(GenericSevlet、HttpServlet)以及模板模式思想

设计模式中的模板模式

1、GenericSevlet的底层实现

在这里插入图片描述

2、HttpServlet的底层实现

抽象出一个专门处理HTTP类型的请求和响应——处理Http的service方法,统一处理GET/POST请求,提供doGet和doPost方法。(继承GenericServlet类)

public class MyHttpServlet extends MyGenericServlet {
    // 只能处理一般的请求
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
        // 调用处理Http请求的方法
        service(httpServletRequest, httpServletResponse);
    }

    public void service(HttpServletRequest reg, HttpServletResponse resp) throws ServletException, IOException {
        // 获取请求方式 GET/POST
        String method = reg.getMethod();
        if ("GET".equals(method)){
            doGet(reg, resp);
        } else if("POST".equals(method)){
            doPost(reg, resp);
        }
    }

    // 专门用于处理POST请求
    private void doPost(HttpServletRequest reg, HttpServletResponse resp) {
        System.out.println("AServlet.doPost()");
    }

    // 专门用于处理GET请求
    private void doGet(HttpServletRequest reg, HttpServletResponse resp) {
        System.out.println("AServlet.doGet()");
    }
}

而在子类中只需要重写父类的init方法以及service方法即可。

public class TestServlet extends HttpServlet {
    @Override
    public void init() throws ServletException {
        // 初始化代码
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service()----");

        // 不要调用父类的service
//        super.service(req, resp);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值