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

一、基础概念

编程体系结构(07):JavaEE之Web开发

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、握手挥手机制

三次握手

编程体系结构(07):JavaEE之Web开发

第一次握手:客户端主动向大发棋牌大发棋牌技巧技巧 服务 器发起请求连接,请求报文中发送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已建立连接状态。完成三次握手,客户端与大发棋牌大发棋牌技巧技巧 服务 器开始传送数据。

四次挥手

编程体系结构(07):JavaEE之Web开发

第一次挥手:客户端发送一个结束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、转发和重定向

转发:大发棋牌大发棋牌技巧技巧 服务 器端进行的页面跳转的控制 ;

重定向:大发棋牌大发棋牌技巧技巧 服务 端响应跳转信息,浏览器端进行的页面跳转 ;

编程体系结构(07):JavaEE之Web开发

5、Cookie与Session

Cookie机制

编程体系结构(07):JavaEE之Web开发

Cookie在HTTP中通常是用来辨别用户身份,进行会话跟踪而储存在用户大发棋牌大发棋牌技巧技巧 本地 终端上的数据,一般会加密处理,由用户客户端计算机暂时或永久保存的信息。其结构就是一个键和一个值构成的。随着大发棋牌大发棋牌技巧技巧 服务 器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来,当下一次再访问大发棋牌大发棋牌技巧技巧 服务 器时把Cookie再发送给大发棋牌大发棋牌技巧技巧 服务 器。

Session会话

编程体系结构(07):JavaEE之Web开发

用户在应用程序的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·大发棋牌大发棋牌技巧技巧
地址

http://github.com/cicadasmile
GitEE·大发棋牌大发棋牌技巧技巧
地址

http://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·点这里 ☆☆☆☆☆