Servlet 体系结构

文章目录


Servlet 体系结构

Servlet是一个接口,在Java EE API中,我们可以看到有一个抽象类GenericServlet实现了Servlet接口,在抽象类GenericServlet又有一个抽象类HttpServlet类继承了它。

也就是说:Servlet接口是爷爷,GenericServlet抽象类是爸爸,HttpServlet抽象类是孙子。画个图看一下:

Servlet 体系结构

接下来分别看一下三个类

1、Servlet

关于这一部分,请点我快速了解!

2、GenericServlet

GenericServlet帮我们把Servlet接口中的initgetServetConfiggetServetInfodestory这四个方法做了空实现,只留了一个抽象类service。继承这个类,可以使代码更简洁,开发也会更高效。

@WebServlet("/demo3")
public class ServletDemo3 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

    }
}

但是实际开发中,用的却是HttpServlet

3、HttpServlet

service方法中,一般都要获取从浏览器发来的数据,这时候我们就要判断http用的是哪种请求方式了。

下面是传统判断请求方式的代码:

String method = req.getMethod();
	//get方式获取数据
	if("GET".equals(method)){
		//执行相应操作
	}
	//POST方式获取数据
	else if("POST".equals(method)){
	//执行相应操作
    }

这种方式要对各种请求方式进行判断,每个Servlet都要判断到底。显然,这在开发过程中会很麻烦,为了解决这个问题,HttpServlet对这些个判断,进行了封装,形成了下面的这些个方法:

Servlet 体系结构
操作步骤如下:

第一步、定义一个类继承HttpServlet

@WebServlet("/demo4")
public class ServletDemo4 extends HttpServlet{

}

第二步、在web目录下新建一个test.html文件

<form action="demo4" method="post">
    <input name="txt">
    <input type="submit" value="提交">
</form>

第三步、回到ServletDemo4,重写doPost()方法

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPost is run......");
    }

至此完成,打开浏览器输入localhost:8080/text.html即可出现:

Servlet 体系结构

上一篇:java错误:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Bu (转)


下一篇:idea 中javax.servlet.http.HttpServlet包导不进来