摘要:什么是维基百科上说,全称,未有中文译文。其主要功能在于交互式地浏览和修改数据,生成动态内容。从维基百科中可以看到,一般使用的是协议。响应内容动态生成,通常取决于客户端的请求服务器将响应返回给客户端。
最近在看教程的时候,又看到了servlet这个词,突然发现我好像并不了解他,只是‘有所耳闻’。所以决定学习一下。
什么是servlet维基百科上说:
Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
简单来说,Servlet就是个接口,一段程序。
通过上面的介绍,可以看到,中间提到交互式地浏览和修改数据,这突然让我想到了前一段时间学的socket,通过socket,我们也会实现客户端和服务器的交互效果。
这就让我有点想知道,servlet和socket有没有什么关系呢?
servlet和socket区别与联系在这里,我会从几方面来简单分析两者。
使用协议socket:使用TCP/IP协议或UDP协议,前者居多。
servlet:从维基百科中可以看到,一般使用的是HTTP协议。
socket:由于是使用的TCP协议,所以首先必须要做到的就是建立两端的连接,建立一条持续连接的通道。
这需要服务器端先建立起一个服务,然后由客户端去连接服务器端,这样,就建立好了一条连接,然后就可以进行随意的通信了,服务器可以发送消息给客户端,同样的客户端也可以发送消息给服务端。
整理一下:
1)服务器端建立服务
2)客户端连接服务器端
3)相互发送数据
然后我们在看一下servlet的工作模式:
由于servlet大多数是工作在基于http的web服务器下,所以它的模式想必大家也很熟悉了:
1) 客户端发送请求至服务器端;
2) 服务器将请求信息发送至 Servlet;
3) Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
4) 服务器将响应返回给客户端。
看到这里,更加觉得两者太像了。没错的,由于两个服务协议的关系,http本来就是对TCP协议的一个封装和完善,所以其底层的数据传输还是使用TCP的那套东西。
对熟悉网络的朋友来说,两者只是工作层面不同的两个相互协作的过程而已。
这样,有这种类似程度也就不觉得那么稀奇了。
java中的实现首先是socket,通过之前的学习,socket的使用如下:
// 服务端 SocketService socketService = new SocketService(xxxx); Socket socket = socketService.accept(); // 客户端 Socket socket = new Socket("127.0.0.1", xxxx);
主要的就是这三步,也就是说,在具体实现的时候,我们需要对服务器和客户端两者都进行操作。
然后在看一下servlet。下面这段代码就是最近教程学习到的:
@GetMapping("/me") public Teacher me(HttpServletResponse httpServletResponse) { Teacher teacher = new Teacher(); try { teacher = teacherService.me(); } catch (AuthException e) { httpServletResponse.setStatus(HttpStatus.UNAUTHORIZED.value()); } return teacher; }
这里面我们用到了一个叫做HttpServletResponse的东西,相信我们看到了response这个单词后,立马就会想到,是不是还有一个叫做HttpServletRequest的东西,没错的。
基于http的通信就是有这样的特点,在服务器获取到一个请求之后,就会创建出HttpServletResponse和HttpServletRequest这样两个对象,然后如果我想向客户端发送东西的话,就使用HttpServletResponse;如果我们要从客户端获取东西的话,就使用HttpServletRequest。
比如我们上面会想客户端返回一个状态码,所以使用了HttpServletResponse。
当然,如果我们还想传递其他关于信息也是可以的,比如cookie,header,就像我们手动做了一个http响应一样。
看到这里,我们会发现,servlet的操作貌似都没有涉及到客户端,全部都是在服务器端完成的。是这样的,servlet在前面也说到了,它是一段服务器端工作的程序。
区别和联系总结可能看到这里还是没有怎么明白socket和servlet的区别是什么,其实简单一点说就是:socket比servlet更基本,servlet基于socket。
因为两者都是为通信而服务,所以,当我们结合了网络的知识后,会发现这根我们的网络中的网络架构是那么的一样,他的工作模式和我们所熟知的网络工作模式又是那么的相似。
servlet容器貌似提到了servlet,就不得不提到servlet容器了。
从字面上理解,servlet容器就是装servlet的东西。
首先,servlet容器同样也是一段程序。从上面对servlet的学习,我们大致知道了servlet是工作在服务器端的,但是现实情况是,很多的服务器都不能直接支持servlet,而我们现在又想用servlet,这时就需要编写一段程序,加在服务器上,帮我们来处理servlet。这就是我们说的servlet容器。我们接触过的Tomcat就是一个这样的容器。
一般的通信是这样的:
当我们需要使用servlet时,他就是这样的:
然后在web服务器收到一个http请求之后,就会转给servlet容器,然后再由容器交给servlet去处理。
总结通过对servlet的简单了解,突然发现很多我学过的东西并没有我想象的那样没用,很多时候,我们遇到的事情或是问题,他们可能都是想通的。也许,对目前所学,我们并不能看到它的实际作用,但是说不准哪天,曾经不起眼的所学,就会成为解决问题的关键。
相关参考:
https://blog.csdn.net/snarlfu...
https://zh.wikipedia.org/wiki...
https://blog.csdn.net/wabiaoz...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/72512.html
摘要:实现一个简单的作用我们的应用会运行在中,那么显然请求必定是先到达的,对于请求实际上会进行如下的处理提供服务的启动,必然是服务,支持协议。进行请求的分发一个可以为多个应用提供服务,那么就需要把下发到不同的应用。下面我们就自己来实现这三步。 实现一个简单的Tomcat 1. Tomcat作用 我们的web应用会运行在Tomcat中,那么显然请求必定是先到达Tomcat的,Tomcat对于请...
摘要:注本文使用规范是规范中的一个接口,我们可以自己实现这个接口在方法中实现自己的业务逻辑。我们只是实现一个简单的容器示例,所以和其他方法留待以后实现。运行一下实现首先编写一个自己的实现类。 前言 经过上一篇文章《一步一步实现Tomcat——实现一个简单的Web服务器》,我们实现了一个简单的Web服务器,可以响应浏览器请求显示静态Html页面,本文更进一步,实现一个Servlet容器,我们不...
阅读 2855·2021-11-24 09:39
阅读 3084·2021-11-19 10:00
阅读 1507·2021-10-27 14:17
阅读 1789·2021-10-14 09:43
阅读 939·2021-09-03 10:30
阅读 3399·2019-08-30 15:54
阅读 2702·2019-08-30 13:05
阅读 1971·2019-08-30 11:02