发表于: 2017-07-28 23:25:13

1 832


任务进展

       1:绑定path的方法实现不了,用参数的方法实现了。

在群里请教老大,说JSP中form中的input输入会被当成请求参数提交,因此我的想法是行不通的,除非用JS。决定到此为止,开始学习任务3。

       2:深度思考

       1)什么是restful?

       REST即Representational State Transfer的缩写,可译为"表现层状态转化”。REST最大的几个特点为:资源统一接口URI无状态

       资源:资源是以json(或其他Representation)为载体的、面向用户的一组数据集,资源对信息的表达倾向于概念模型中的数据。

       统一接口:RESTful架构风格规定,数据的元操作,即CRUD(create, read, update和delete,即数据的增删查改)操作,分别对应于HTTP方法:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源,这样就统一了数据操作的接口,仅通过HTTP方法,就可以完成对数据的所有增删查改工作。

       URI:可以用一个URI(统一资源定位符)指向资源,即每个URI都对应一个特定的资源。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或识别符。

       无状态:所有的资源,都可以通过URI定位,而且这个定位与其他资源无关,也不会因为其他资源的变化而改变。

       2)了解maven的module

       所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml。它们之间通过继承和聚合(也称作多模块,multi-module)相互关联。使用多模块的Maven配置,可以帮助项目划分模块,鼓励重用,防止POM变得过于庞大,方便某个模块的构建,而不用每次都构建整个项目,并且使得针对某个模块的特殊控制更为方便。

       3)rest的请求方法有哪些,有什么区别?

       GET:用来获取资源,
       POST:用来新建资源(也可以用于更新资源),
       PUT:用来更新资源,
       DELETE:用来删除资源

       4)什么是http协议?Get和post请求有什么区别?http请求content-Type有几种,有什么区别?http请求的三次握手具体指什么?http适合什么场景?什么是tcp/ip协议?http状态码有哪些?

       HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。


       根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的,POST表示可能修改变服务器上的资源的请求。

       GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。POST把提交的数据则放置在是HTTP包的包体中。

       因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制,具体限制取决于浏览器和操作系统。HTTP协议规范也没有对POST进行大小限制,对POST数据起限制作用的是服务器的处理程序的处理能力。对于ASP程序,Request对象处理每个表单域时存在100K的数据长度限制。但如果使用Request.BinaryRead则没有这个限制。对于IIS,由于每个版本的IIS对这些参数的默认值都不一样,需参考相关的IIS配置文档。

       最后,POST的安全性要比GET的安全性高。


       content-type是请求消息头中的一个请求参数,标识请求消息数据的格式。常见的媒体格式类型有:

  •               text/html : HTML格式
  •               text/plain :纯文本格式     
  •               text/xml :  XML格式
  •               image/gif :gif图片格式   
  •               image/jpeg :jpg图片格式
  •               image/png:png图片格式
  •        以application开头的媒体格式类型:
    •               application/xhtml+xml :XHTML格式
    •               application/xml     : XML数据格式
    •               application/atom+xml  :Atom XML聚合格式   
    •               application/json    : JSON数据格式
    •               application/pdf       :pdf格式 
    •               application/msword  : Word文档格式
    •               application/octet-stream : 二进制流数据(如常见的文件下载)
    •               application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
    •        另外一种常见的媒体格式是上传文件之时使用的:
      •               multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
      •       
      •        TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

       第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 
       第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

       第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

       完成三次握手,客户端与服务器开始传送数据.


       http适合应用场景:公司OA服务,互联网服务。

       http状态码分为五大部分:

       1、消息(1字头):这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。

       2、成功(2字头):这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。

       3、重定向(3字头):这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。

       4、请求错误(4字头):这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个 HEAD 请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永久性的状况。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含在此类错误响应中的实体内容。

       5、服务器错误(5、6字头):这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。除非这是一个HEAD 请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中被包含的实体。

      

遇到问题

       在做任务2的时候,在spring项目resources中加入了log4j.properties文件,但是并没有进行xml配置和实例化logger,结果日志可以正常运行,在群里请教大佬得知,log4j有1和2两个版本,spring会自动加载实例化1版本使用,而2版本不行,需要自己配置。

明日计划

       开始学习任务3

收获

       spring自动加载并实例化log4j1版本使用。

       深度思考问题。


返回列表 返回列表
评论

    分享到