本文源码:GitHub·点这里 || GitEE·点这里

一、根底概念

1、CS与BS架构

CS架构模式

客户端/服务器(Client/Server)模式,既要编写服务器端程序,也要开发客户端程序,软件更新时须要同时更新客户端和服务器端,整体模式相比BS架构要简单,然而安全性比拟高。

B/S架构模式

即浏览器/服务器(Browser/Server),只须要编写服务器端程序,浏览器的界面作为拜访的服务端的入口,架构绝对简略,能够疾速迭代,然而安全性较差。

2、Socket通信机制

TCP/IP 协定

传输控制协议/网际协议是指可能在多个不同网络间实现信息传输的协定簇。TCP/IP协定不仅仅指的是TCP和IP两个协定,而是指一个由FTP、SMTP、TCP、UDP、IP等协定形成的协定簇,只是因为在TCP/IP协定中TCP协定和IP协定最具代表性,所以被称为TCP/IP协定。

Socket套接字

网络中不同主机上的利用过程之间进行双向通信的端点的形象,一个套接字就是网络上过程通信的一端,提供了应用层过程利用网络协议替换数据的机制。通常接管申请数据,并做业务解决的称为服务端即ServerSocket,发送申请并接管处理结果的称为客户端。

二、Http协定

1、Http和Https

Http协定

HTTP超文本传输协定,是用于从万维网服务器传输超文本到本地浏览器的传送协定,基于TCP/IP通信协议来传递数据:HTML文件、图片、查问数据等。HTTP协定基于客户端-服务端架构模式。浏览器作为HTTP客户端通过URL向服务端即WEB服务器发送申请。Web服务器依据接管到的申请后,解决完申请后向客户端发送响应信息。

协定特点:简略疾速、灵便、无连贯、无状态、反对客户/服务器模式。

Https协定

以平安为准则的HTTP通道,是HTTP的平安版,在HTTP申请上退出SSL层,HTTPS的平安根底是SSL,因而加密的具体内容就须要SSL。简略来说,HTTPS协定是由SSL+HTTP协定构建的可进行加密传输、身份认证的网络协议,要比http协定平安。HTTPS协定的次要作用能够分为两种:一种是建设一个信息安全通道,来保障数据传输的平安;另一种就是确认网站的真实性。

Https和Http区别

平安证书:Https协定须要到CA申请证书,个别收费证书较少,因此须要肯定费用。

数据传输:Http是超文本传输协定,信息是明文传输,https则是具备安全性的ssl加密传输协定。

连贯形式:Http和Https应用的是齐全不同的连贯形式,用的端口也不一样,前者是80,后者是443。

2、Get和Post申请

浏览器端

从浏览器角度看这个两种申请的区别:GET形式读取资源,比方Get到动态页面,即便屡次读取不会对拜访数据产生影响,也被称为"幂等"申请。POST形式在页面中定义表单,提交表单会把数据提交到服务器,而且少数状况下会产生数据,比方罕用的保留数据接口,并非"幂等"操作,不幂等也就意味着不能随便屡次执行。

服务接口

这里指用Ajax程序申请服务接口,提交的申请类型。或者其余Http申请工具类,还有状况是微服务中各种Feign接口间的申请。这种状况接口发送申请时,限度绝对较少,比方REST格调接口罕用GET、POST、PUT、DELETE,几种形式别离获取、创立、更新、删除 资源。

3、握手挥手机制

三次握手

第一次握手:客户端被动向服务器发动申请连贯,申请报文中发送SYN=1,此时随机生成初始序列号seq=x,此时,客户端过程进入SYN-SENT同步已发送状态。

第二次握手:服务端收到申请报文后,确认客户的SYN,如果申请没有回绝,则收回确认报文。报文中应该ACK=1,SYN=1,确认号是ack=x+1,同时本人也发送一个SYN包seq=y,此时,服务器过程进入SYN-RCVD同步收到状态。

第三次握手:客户端收到确认后,须要向服务器确认报文的ACK=1,ack=y+1,此时,TCP连贯建设,客户端进入ESTABLISHED已建设连贯状态。实现三次握手,客户端与服务器开始传送数据。

四次挥手

第一次挥手:客户端发送一个完结FIN,用来被动敞开和服务端的数据传输,开释连贯且进行发送数据,报文首部:FIN=1,序列号seq=u;随后客户端进入终止期待1状态FIN-WAIT-1。

第二次挥手:服务端收到这个FIN,收回确认报文ACK=1,确认收到序号是收到的序号+1,即ack=u+1,且带上本人的序列号seq=v,和SYN一样,一个FIN将占用一个序号。如此,服务器告诉利用过程,客户端曾经没有数据要发送,如果服务器发送数据,客户端仍然要接管,该状态会继续一段时间,服务端进入敞开期待状态CLOSE-WAIT。客户端收到服务器的确认申请后,进入终止期待2状态FIN-WAIT-2,期待服务器发送连贯开释报文。

第三次挥手:服务器向客户端发送开释连贯报文FIN=1,ack=u+1,此时服务端还处于半敞开状态,服务器可能还会发送一些数据,此时序列号为seq=w,如此,服务器进入最初确认状态LAST-ACK,期待客户端的确认。

第四次挥手:客户端收到服务器的连贯开释报文后,回发确认,ACK=1,ack=w+1,序列号是seq=u+1,如此,客户端进入工夫期待状态TIME-WAIT。此时TCP连贯还没有开释,必须通过最长报文段寿命的工夫后,才进入CLOSED状态。MSL:最长报文段寿命,个别2分钟,TCP连贯开释时,被动方必须通过2MSL后才进入CLOSED状态,因而被动方敞开工夫比拟晚。

三、Servlet组件

Java编写的服务器端程序,具备独立于平台和协定的个性,次要性能在于交互式地浏览和生成数据,生成动静Web内容。应用Servlet,能够收集来自网页表单的用户输出,出现来自数据库或者其余源的记录,还能够动态创建网页。

1、实现形式

继承HttpServlet,HttpServlet负责形象模板角色,模板办法:由service()办法负责;

继承GenericServlet抽象类,其中的service办法为形象办法;

实现Servlet接口,蕴含init、getServletConfig、service、getServletInfo、destroy几个外围办法;

2、生命周期

加载和实例化,初始化init,服务service,销毁:destroy。

3、外围API组件

ServletConfig:获取servlet初始化参数和servletContext对象;

ServletContext:在整个Web利用的动静资源之间共享数据;

ServletRequest:封装Http申请信息,在申请时创立;

ServletResponse:封装Http响应信息,在申请时创立;

4、转发和重定向

转发:服务器端进行的页面跳转的管制 ;

重定向:服务端响应跳转信息,浏览器端进行的页面跳转 ;

5、Cookie与Session

Cookie机制

Cookie在HTTP中通常是用来分别用户身份,进行会话跟踪而贮存在用户本地终端上的数据,个别会加密解决,由用户客户端计算机临时或永恒保留的信息。其构造就是一个键和一个值形成的。随着服务器端的响应发送给客户端浏览器。而后客户端浏览器会把Cookie保存起来,当下一次再拜访服务器时把Cookie再发送给服务器。

Session会话

用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会失落,而是在整个用户会话中始终存在上来。Servlet中能够把一个会话内须要共享的数据保留到HttSession对象中。四大域对象:PageContext、ServletRequest、HttpSession、ServletContext。

6、监听.过滤.拦挡

监听器

JavaWeb三大组件:Servlet,Listener,Filter,监听器就是指在应用程序中监听相干对象状态变动的组件。

过滤器

客户端申请Servlet时,先执行相干Filter,如果Filter通过,则继承执行申请的Servlet;如果Filter不通过,则不会执行用户申请的Servlet。过滤器能够动静地拦挡申请和响应。

拦截器

Spring框架中的拦截器Interceptor相似于Servlet中的过滤器Filter,次要用于拦挡用户申请并作相应的解决。例如通过拦截器能够进行权限验证、记录申请信息的日志、判断用户是否登录等。申请转发不执行拦挡、过滤;重定向执行拦挡和过滤。

四、数据库连接池

1、C3P0连接池

C3P0是一个开源的JDBC连接池,应用程序依据C3P0配置来初始化数据库连贯,能够主动回收闲暇连贯的性能。

2、Druid连接池

Druid连接池为监控而生,内置弱小的监控性能,监控个性不影响性能。内置了StatFilter性能,能采集十分齐备的连接池中拜访数据库执行信息,Druid连接池内置一个监控页面,提供了十分齐备的监控信息,能够疾速诊断系统的瓶颈,也是以后最罕用的连接池。

五、运行服务器

1、Jetty容器

Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是应用Java语言编写的,它的API以一组JAR包的模式公布。开发人员能够将Jetty容器实例化成一个对象,能够迅速为一些独立运行(stand-alone)的Java利用提供网络和web连贯。

2、Tomcat服务器

Tomcat服务器是一个收费的凋谢源代码的Web应用服务器,属于轻量级应用服务器,在中小型零碎和并发拜访用户不是很多的场合下被广泛应用,是开发和调试JSP程序的首选。应用Tomcat最要害的两个操作:应用开发工具连贯Tomcat并部署web利用;将应用程序打包放到Tomcat服务下运行。

六、源代码地址

GitHub·地址https://github.com/cicadasmileGitEE·地址https://gitee.com/cicadasmile

举荐浏览:编程体系整顿

序号项目名称GitHub地址GitEE地址举荐指数
01Java形容设计模式,算法,数据结构GitHub·点这里GitEE·点这里☆☆☆☆☆
02Java根底、并发、面向对象、Web开发GitHub·点这里GitEE·点这里☆☆☆☆
03SpringCloud微服务根底组件案例详解GitHub·点这里GitEE·点这里☆☆☆
04SpringCloud微服务架构实战综合案例GitHub·点这里GitEE·点这里☆☆☆☆☆
05SpringBoot框架根底利用入门到进阶GitHub·点这里GitEE·点这里☆☆☆☆
06SpringBoot框架整合开发罕用中间件GitHub·点这里GitEE·点这里☆☆☆☆☆
07数据管理、分布式、架构设计根底案例GitHub·点这里GitEE·点这里☆☆☆☆☆
08大数据系列、存储、组件、计算等框架GitHub·点这里GitEE·点这里☆☆☆☆☆