理清常见技术名词:Socket,Servlet,Cookie,Session(网络编程和Javaweb傻傻分不清?)

理清常见技术名词:Socket,Servlet,Cookie,Session(网络编程和Javaweb傻傻分不清?)

1.前言

学完Java基础后继续深入学习肯定会经常碰见Socket,Servlet,Cookie,Session等名词,它们和网络编程以及Javaweb都是紧密联系的。很多Java学习材料和视频都是先学网络编程再学Javaweb,那它们又有什么区别呢?

2.网络编程(Socket出现)

讲到网络编程就必须提到计算机网络,开门见山地说网络中任意两台计算机要想建立通信,就必须遵循网络协议。这边说两种常用协议:TCP协议和UDP协议。

  • TCP协议是应用最广泛的协议,许多高级协议都是建立在TCP协议之上的,例如HTTP、SMTP等。它一种面向连接,可靠传输的协议,常说的“三次握手”相关的就是它,感兴趣的可以自己再去了解。
  • UDP协议一种无连接,不可靠传输的协议。它在通信前不需要建立连接,因此它的传输效率比TCP高,而且UDP协议比TCP协议要简单得多。传输的数据通常是能容忍丢失的,例如,一些语音视频通信的应用会选择UDP协议。

无论是TCP还是UDP,在建立通信时都需要在通信的两端建立Socket。在客户端建立一个Socket来发送请求,服务端也有一个Socket来接收请求。所以网络编程一般是指C/S架构,即客户端和服务端,像QQ和微信都是采用该架构,而Socket就是两端实现通信的一门技术。

3.Javaweb(Servlet,Cookie,Session)

web开发是B/S架构,这是对于C/S的改进,所以网络编程和web基本是不分家的。C/S的不足在于对网速的要求比较高、 随着用户数量的增多还会出现通信拥堵、服务器响应速度慢等情况……借助于浏览器技术的发展,出现了B/S模式,即浏览器/服务器。所以我们可以简单理解,只要是通过浏览器进行访问的那就属于Javaweb范畴。而 Servlet就是使用http协议在浏览器与服务器之间通信的技术,是Socket的一种应用。前面我们也已经提到http协议是建立在tcp协议之上的,Servlet同样是通信时采用的技术、同样是基于Socket的一项技术。此外,对于B/S和C/S同样不用卡得那么死,B/S是C/S的改进,那么浏览器其实也是属于客户端,只要明确浏览器同样是客户端之一就行了。
Servlet的作用是获取请求信息并调用业务逻辑层进行处理并返回响应信息,业务逻辑层具体可以看我写的MVC模式和三层架构,三层架构就是运用于B/S模式的。

再说HTTP协议,它是无状态协议,服务器无法判断哪些请求是属于同一个会话的。那什么是会话呢?简单解释就是我开启浏览器进行某个网站的访问,直到我把浏览器关闭,都属于同一个会话。如果无法分清哪些请求是属于同一个会话,那我刚在网页版的某宝的购物车里面添了一大堆东西,下一秒我刚要支付一跳转它立马不知道购物车里面有什么。所以就需要Servlet下的Cookie和Session技术,它们都是来完成一次会话多次请求间数据的共享。
先说两者区别(用c表示cookie,s表示session):

  • c不安全,s安全(因为c存储在浏览器,s存储在服务器,从服务器发送c给浏览器经过网络传输易被拦截,用户的浏览器也容易被攻破,而服务器一般不易被攻破)
  • c最大存储是3kb(这个也有说4kb的,反正是有限制的),s存储几乎没有限制
  • c可以长期存储,s默认存储30分钟
  • c不占用服务器资源,s占用服务器资源

Cookie和Session都是会话跟踪技术,Cookie是存储在客户端,比如我们在csdn网页上登录后记住密码,以后一打开csdn网页,就无需再次进行账户密码的登录,这就是Cookie的功劳。Session存储在服务端,主要运用于登录之后的操作,客户端携带Cookie再次访问时已经携带上了id,服务器能够通过唯一id识别用户,登录后的操作就存储在对应的Session中,由于Session的存储是有时效的,所以当我们在一个网站中长时间未操作,可能就会提醒我们 xxx超时,或者直接让我们退出登录。

4.总结

以上就是我个人对网络编程及Javaweb的理解,其实两者之间并没有很大的差别,无非就是技术的改进,对于我们学Java的来说肯定都是需要掌握的,经过实际使用后对它们的理解也会进一步提高,甚至可以说不管你懂不懂,只要你代码打多了,有经验后自然而然就懂了。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hfhua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值