其他分享
首页 > 其他分享> > HttpServlet

HttpServlet

作者:互联网

1.适配器模式

上篇文章中介绍了实现Servlet接口的方式来书写一个servlet类,但是如果我们实现了Servlet接口的话,就必须要重写那五个方法,但是我们需要的就只有init()、service()、destroy(),适配器模式就能解决这一问题。

什么是适配器模式呢?

假如现在有一个接口,里面有A,B,C,D,E五个方法,但是我们经常使用的就只有A,B,C三个方法,那么此时我们就可以书写一个类去实现这个方法,然后将A,B,C设置为抽象的方法,然后再书写我们需要的类去继承刚刚实现接口的这个类,那么E,F方法就不是必须要实现啦!

这种设计模式就叫做适配器模式。

所以我们也可以利用适配器模式的思想,书写一个类去实现Servlet接口,然后我们再去继承这个类。

但是这件事情已经不需要我们去做了,贴心的SUN公司已经为我们写好了,这个类就是GenericServlet

2.GenericServlet

GenericServlet是Servlet接口的实现子类。

它不仅实现了Servlet接口中的五个反法,还有一些自己独特的方法。

我们可以通过继承GenericServlet来书写一个servlet类,必须重写的方法:service方法。

package com.dh.servlet;

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

public class Servlet02 extends GenericServlet {
    
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
		
    }
}

3.get和post请求方式

在html的表单中,我们知道action可以有两种请求方式,get和post,先了解一下这两种请求方式的不同。

首先要介绍HTTP协议。

Http协议

http协议是w3c制定的超文本传输协议,是用于互联网中浏览器和服务器通信的协议。

其分为请求协议和响应协议:


(除了在form表单中指定了action为post,其余的请求都是get请求)


但是在开发中,怎么去保证前端开发人员和后端开发人员处理的方式一致呢?如果不一致的话,会发生405错误。

体贴的SUN公司又帮我们写了一个类:HttpServlet。

4.HttpServlet

HttpServlet是GenericServlet的实现子类。

我们可以通过继承HttpServlet类去书写一个servlet这也是最常用的方式。HttpServlet中的每一个方法都不需要重写;

但是通常会实现doGet()和doPost():用于编写处理业务逻辑的代码,就相当于service()。

package com.dh.servlet;

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

public class Servlet03 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //书写代码
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //在doPost()中调用doGet()
        //然后在doGet()中书写代码
        //如果是get请求方式就会直接调用doGet()执行代码
        //如果是post请求就会执行doPost(),第一行会调用doGet(),也会执行代码
        doGet(req,resp);
    }
}

注意:

doGet()和doPost()不属于servlet的生命周期。

标签:请求,doGet,HttpServlet,import,post,servlet,javax
来源: https://www.cnblogs.com/denghui-study/p/14518788.html