ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Servlet 体系结构

2020-12-30 23:33:30  阅读:263  来源: 互联网

标签:GenericServlet method HttpServlet 抽象类 Servlet public 体系结构


文章目录


Servlet 体系结构

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

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

在这里插入图片描述

接下来分别看一下三个类

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对这些个判断,进行了封装,形成了下面的这些个方法:

在这里插入图片描述
操作步骤如下:

第一步、定义一个类继承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即可出现:

在这里插入图片描述

标签:GenericServlet,method,HttpServlet,抽象类,Servlet,public,体系结构
来源: https://blog.csdn.net/lesileqin/article/details/111997406

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有