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