工程demo:myapp011工程下“_05mvcboot01” model
目录
1、Spring MVC和MVC
-
Spring MVC:用于快速开发网站,属于spring framework中的核心框架
-
MVC是设计思想,将软件按照模型、视图、控制器来划分,为了解耦
-
M :model,模型层,负责业务逻辑判断,数据库存取
V:View,视图层,负责界面展示,向用户呈现数据的方式(html页面,图片,文本等)
C:Controller,控制器负责接收用户请求,并根据请求调用 相应的模型来处理业务逻辑
2、创建项目:
勾选:web => spring web
运行application后,输入网址,即可访问
//相当于访问了static下的index.html
http://localhost:8080/index.html
3、处理请求
Spring mvc就是用来处理请求的,这两种请求,处理的方式大不一样
静态请求:所有人访问,得到的结果是一样的,比如:新闻
动态请求:每个人访问,得到的结果是不一样的,比如:登录
spring MVC处理静态请求
static有调整,需要rebuild一下
spring MVC处理动态请求
url地址:http://localhost:8080/v1/users/login
Shift + F5 浏览器清理缓存,刷新页面
4、HTTP协议 超文本传输协议
4.1、 HTTP和HTTPS的区别
HTTP:
1、数据以明文的方式在互联网中传输,不安全
2、数据传输效率高
3、默认端口号:80
4、不需要SSL证书的认证
HTTPS:
1、数据是以密文的方式在互联网中传输,安全
2、数据传输效率低
3、默认端口号:443
4、需要SSL证书的认证
4.2、SSL证书
SSL证书自己做也可以,但是浏览器不认,需要把证书一个个的添加信任,操作繁琐,
专门做的,浏览器是信任的,
4.3、请求和响应
4.3.1、请求
HTTP请求Request 一个请求包含:请求行,请求头,请求体
请求行:抽象路径(/v1/users/login) ,协议版本(HTTP/1.1)
请求头:对请求的进一步解释和描述,是否支持长连接,代理设置,
请求体:请求参数或者提交内容
4.3.2、响应
HTTP响应Response 一个响应包含三部分:响应行,响应头,响应体
响应行:版本信息(HTTP/1.1)、响应码(200)、附加信息(OK)
响应码:
1xx:保留
2xx:成功,表示处理成功,并正常响应
3xx:重定向,表示处理成功,但是需要浏览器进一步请求
4xx:客户端错误,表示客户端请求错误,导致服务端无法处理
5xx:服务端错误,表示服务端处理请求过程出现了错误
重定向:www.360buy.com直接转成www.jd.com,然后继续访问
响应头:响应内容类别,响应长度,默认字节
5、数据的传递与接收
5.1、客户端传递数据到服务端
只是规范
Get请求(请求类别或者请求方法),获取服务端资源
POST请求:服务器新增资源,比如:创建订单
PUT请求:更新服务器端资源,比如:修改个人资料
DELETE请求,删除服务器端资源,比如:删除订单,聊天记录
get请求
?username=liying&password=1105
敏感信息,图片、视频不用get请求,长度有限制
Post请求方式
发送方式:通过form表单的形式发送
传递数据方式:通过请求体方式
长度没有限制,安全
5.2、服务端接收数据
1、HttpServletRequest接收
2、声明参数方式来接收客户端传递过来的数据
3、通过DTO类方式接收
1、HttpServletRequest接收:java servlet规范中定义的一个接口
tomocat将请求数据,进行封装HttpServletRequest
2、声明参数方式来接收客户端传递过来的数据
/v1/carts/deleteCart
3、通过DTO类方式接收
/v1/carts/updataCart
参数在2个及以下,使用声明参数接收接口数据,高于两个,使用POJO类接收
6、URL
URL:(网址) 统一资源定位符
区分大小写,
URL内容:
协议:http
主机名:localhost
端口号:8080
路径:/v1/users/login
查询参数:?后面的参数
Url不支持中文,但是浏览器里可以是中文,这是因为浏览器对中文做了url编码
7、示例
添加商品到购物车
请求方式:get
请求地址:/v1/carts/addCart
查询参数:?title=商品名称&price=商品单价
返回响应:添加购物车成功
CartsController
@Controller
public class CartsController {
/**
*
* 1、HttpServletRequest接收
* 添加商品到购物车
* http://localhost:8080/v1/carts/addCart
* http://localhost:8080/v1/carts/addCart?title=血饮狂刀&price=999.99
*
* */
@RequestMapping(value = "/v1/carts/addCart")
@ResponseBody
public String addCart(HttpServletRequest request){
String title = request.getParameter("title");
String price = request.getParameter("price");
return "添加购物车成功"+title+","+price+"元";
}
/**
*
* 2、声明参数方式来接收客户端传递过来的数据
* 添加商品到购物车
* http://localhost:8080/v1/carts/deleteCart?username=xxx&id=xxx
* http://localhost:8080/v1/carts/addCart?title=血饮狂刀&price=999.99
* 参数username和username要一致
*
* */
@RequestMapping(value = "/v1/carts/deleteCart")
@ResponseBody
public String deleteCart(String username,Integer id){
return "恭喜你,删除:"+username+",id:"+id;
}
/**
* 3、通过DTO类方式接收
*
* /v1/carts/updataCart
* http://localhost:8080/v1/carts/updataCart?title=方天画戟&price=99.99&number=102
* */
@RequestMapping(value = "/v1/carts/updataCart")
@ResponseBody
public String updataCart(UpdataDTO updataDTO){
return "更新成功:"+updataDTO.toString();
}
}
cart.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>购物车功能</title>
</head>
<body>
<!--submit 点击后,会触发:action ,会将参数提交到url,并且按照post方式请求地址链接-->
<form action="http://localhost:8080/v1/carts/addCart" method="post">
商品名称:<input type="text" name="title">
商品价格:<input type="text" name="price">
<input type="submit" name="添加">
</form>
</body>
</html>
测试工具:HttpClient、Knife4j、Postman
添加接口测试:test目录下新建http文件夹,新建文件:cartsTest.http
cartsTest.http
### 更新购物车
POST http://localhost:8080/v1/carts/updataCart
Content-Type: application/x-www-form-urlencoded
title = 方天画戟 &
price = 999.99 &
number = 99
###
### 购物车添加
GET http://localhost:8080/v1/carts/addCart?title=血饮狂刀&price=999.99
Accept: application/json
###