SpringMVC
SpringMVC就是一个Spring内置的MVC框架。
MVC框架,它解决WEB开发中常见的问题(参数接收、文件上传、表单验证、国际化等等),而且使用简单,与Spring无缝集成。支持 RESTful风格的URL请求。
采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。
GET请求
- 请求的数据全部在浏览器的地址栏(很不安全)
- http://localhost:8080/webapp/?username=coder&email=111#
- 请求信息全部会存储在请求行中
注意:由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过2KB
POST请求
- 请求的数据不会出现在浏览器的地址栏中(比较安全)
- 请求信息会全部存储到
请求实体
中
两者区别
- GET的请求数据在地址栏中,而POST不会
POST比GET更安全 - POST请求的参数存放于请求实体中, 而GET存放在请求行中.
- GET请求的数据不能超过2K, 而POST没有上限
文件上传时,必须使用POST方式 - GET可以缓存, 而POST没有缓存
如何选择GET和POST
- 如果要传递大量数据,比如文件上传,只能用POST请求
- GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST
- 如果仅仅是索取数据(数据查询),建议使用GET
- 如果是增加、修改、删除数据,建议使用POST
JSON格式
JSON数值
格式:{ “key” : value}
示例: {“key1”:100,“key2”:20}
{
"key1":100,
"key2":20
}
JSON字符串
格式:{ “key” : “value”}
示例: {“key1” : “张三”,“key2” : “大忽悠”}
{
"key1" : "张三",
"key2" : "大忽悠"
}
JSON数组
格式:{ “key” : [value]}
示例:{key" : [000, 111111],“key1” : [18874, 15157]}
{
"key" : [000, 111111],
"key1" : [18874, 15157]
}
JSON对象
格式:{ “key” : {value}}
示例: {“key” : {“1”: “亚索”},“key1” : {“2”: “刘备”}}
{
"key" : {"1": "亚索"},
"key1" : {"2": "刘备"}
}
JSON对象数组
格式:{ “key” : [{“key1”: “value1”},{“key2”: “value2”}]}
示例:{“我”:[{“key”: “好好学习”},{“key1”:“天天向上”}]}
{
"我" : [
{"key": "好好学习"},
{"key1": "天天向上"}
]
}
JSON数组对象
格式:{“key”:{“key1”:[value1,value2]}}
示例:{“我”:{“你” : [18874,15157]}}
{
"我" : {
"你" : [18874,15157]
}
}
http响应消息数据格式:
http响应由三个部分组成分别是状态行,响应头,响应体(响应正文)。
状态行是由:HTTP-Version+Status-Code+Reason-Phrase(http版本 + 状态码 + 状态代码的文本描述)
状态码:
1xx | 指示信息–表示请求已接收,继续处理 |
2xx | 成功–表示请求已被成功接收、理解、接受 代表:200 |
3xx | 重定向–要完成请求必须进行更进一步的操作。 代表:302(重定向),304(访问缓存) |
4xx | 客户端错误–请求有语法错误或请求无法实现。代表:404(请求路径没有对应的资源) 405:请求方式没有对应的doXxx方法 |
5xx | 服务器端错误–服务器未能实现合法的请求。代表:500(服务器内部出现异常) |
响应头:包含服务器类型,日期,长度,内容类型等
响应体响应正文就是服务器返回的HTML页面
REST架构特征
既然知道REST和RESTful的联系和区别,现在就要开始好好了解RESTful的一些约束条件和规则,RESTful是一种风格而不是标准,而这个风格大致有以下几个主要特征:
以资源为基础 :资源可以是一个图片、音乐、一个XML格式、HTML格式或者JSON格式等网络上的一个实体,除了一些二进制的资源外普通的文本资源更多以JSON为载体、面向用户的一组数据(通常从数据库中查询而得到)。
统一接口: 对资源的操作包括获取、创建、修改和删除,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。换言而知,使用RESTful风格的接口但从接口上你可能只能定位其资源,但是无法知晓它具体进行了什么操作,需要具体了解其发生了什么操作动作要从其HTTP请求方法类型上进行判断。具体的HTTP方法和方法含义如下:
- GET(SELECT):从服务器取出资源(一项或多项)。
- POST(CREATE):在服务器新建一个资源。
- PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。
- PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。
- DELETE(DELETE):从服务器删除资源。