【愚公系列】2023年04月 Java教学课程 085-Servlet服务器的基本使用
前言
Servlet的来源可以追溯到Java语言的早期版本,它是一种Java程序,用于在Web服务器上处理客户端请求和响应。Servlet最初是由Sun Microsystems开发的,现在已经成为Java EE规范的一部分。它可以与JSP一起使用,用于构建动态Web应用程序。
Servlet 是 Java 语言编写的服务端程序,可以运行在 Web 服务器或应用服务器中。Servlet 可以接收来自 Web 浏览器的请求并作出响应,比如生成 HTML 页面。 Servlet 一般用于构建动态网站,它可以访问数据库或其他后台服务来为浏览器提供动态内容。
目前在Oracle官网中的最新版本是JavaEE8 ,该网址中介绍了JavaEE8的一些新特性。
可以通过访问官方API ,学习和查阅里面的内容。
打开官方API网址,在左上部分找到javax.servlet包,在左下部分找到Servlet,如下图显示:
通过阅读API,我们得到如下信息:
1. Servlet是一个运行在web服务端的java小程序
2. 它可以用于接收和响应客户端的请求
3. 要想实现Servlet功能,可以实现Servlet接口,继承GenericServlet或者HttpServlet
4. 每次请求都会执行service方法
5. Servlet还支持配置
一、Servlet的基本使用
1.Servlet
1.1 Servlet编码步骤
1.1.1 编码步骤
1. 前期准备-创建JavaWeb工程
2. 编写一个普通类继承GenericServlet并重写service方法
3. 在web.xml配置Servlet
1.1.2 测试
在Tomcat中部署项目
在浏览器访问Servlet
1.2.2 Servlet执行过程分析
我们通过浏览器发送请求,请求首先到达Tomcat服务器,由服务器解析请求URL,然后在部署的应用列表中找到我们的应用。接下来,在我们的应用中找应用里的web.xml配置文件,在web.xml中找到FirstServlet的配置,找到后执行service方法,最后由FirstServlet响应客户浏览器。整个过程如下图所示:
一句话总结执行过程:
浏览器——>Tomcat服务器——>我们的应用——>应用中的web.xml——>FirstServlet——>响应浏览器
1.2.3 Servlet类视图
在《Tomcat和Http协议》这天课程和刚才的入门案例中,我们都定义了自己的Servlet,实现的方式都是选择继承GenericServlet,在Servlet的API介绍中,它提出了我们除了继承GenericServlet外还可以继承HttpServlet,通过查阅servlet的类视图,我们看到GenericServlet还有一个子类HttpServlet。同时,在service方法中还有参数ServletRequest和ServletResponse,它们的关系如下图所示:
1.2.4 Servlet编写方式
1)编写方式说明
我们在实现Servlet功能时,可以选择以下三种方式:
第一种:实现Servlet接口,接口中的方法必须全部实现。
使用此种方式,表示接口中的所有方法在需求方面都有重写的必要。此种方式支持最大程度的自定义。
第二种:继承GenericServlet,service方法必须重写,其他方可根据需求,选择性重写。
使用此种方式,表示只在接收和响应客户端请求这方面有重写的需求,而其他方法可根据实际需求选择性重写,使我们的开发Servlet变得简单。但是,此种方式是和HTTP协议无关的。
第三种:继承HttpServlet,它是javax.servlet.http包下的一个抽象类,是GenericServlet的子类。如果我们选择继承HttpServlet时,只需要重写doGet和doPost方法,不要覆盖service方法。
使用此种方式,表示我们的请求和响应需要和HTTP协议相关。也就是说,我们是通过HTTP协议来访问的。那么每次请求和响应都符合HTTP协议的规范。请求的方式就是HTTP协议所支持的方式(目前我们只知道GET和POST,而实际HTTP协议支持7种请求方式,GET POST PUT DELETE TRACE OPTIONS HEAD )。
2)HttpServlet的使用细节
第一步:在入门案例的工程中创建一个Servlet继承HttpServlet
第二步:部署项目并测试访问
当我们在地址栏输入ServletDemo2的访问URL时,出现了访问错误,状态码是405。提示信息是:方法不允许。
第三步:分析原因
得出HttpServlet的使用结论:
我们继承了HttpServlet,需要重写里面的doGet和doPost方法来接收get方式和post方式的请求。
为了实现代码的可重用性,我们只需要在doGet或者doPost方法中一个里面提供具体功能即可,而另外的那个方法只需要调用提供了功能的方法。
- 点赞
- 收藏
- 关注作者
评论(0)