一、MVC设计思想
1.1 MVC是一种软件架构的思想,将软件按照模型,视图,控制器来划分
- M:Model,模型层,负责业务逻辑判断,数据库存储
- V:View,视图层,负责界面展示,向用户呈现数据的方式(html页面、图片、文本等)
- C:Controller,控制层,负责接收用户请求,并根据请求调用相应的模型来处理业务逻辑
1.2 SpringMVC
SpringMVC是一种基于MVC模型的Web框架,他是基于Spring框架的一个子项目。
他通过将请求分配给响应的控制器来处理Web请求,然后将结果发送给客户端。
二、请求分类及处理方式
2.1 请求分类及处理方式
-
静态请求
定义:指请求的页面由服务器上预先准备好的静态web资源组成,如HTML、CSS、
JS、IMG等,返回给客户端的信息内容是不变的。
处理方式:由服务器直接将请求的资源返回给客户端,服务器不处理任何逻辑,只是
将预先准备好的资源返回给客户端。
-
动态请求
定义:服务器会根据用户的请求动态生成内容,将数据返回到客户端显示页面内容。
处理方式:由服务器从数据库中获取数据,并进行相应的逻辑处理后将处理结果返回
客户端。
2.2 处理静态请求
- 处理html文件请求
- 处理图片等请求
2.3 处理动态请求
通过在 controller 中定义对应的类及方法实现动态请求的业务逻辑处理
1)注解说明
- @Controller注解:标注一个类,表示该类是一个控制器,负责处理用户的请求
- @RestController注解:作用是将类中的方法返回值直接作为HTTP响应的内容
省略@ResponseBody注解 - @RequestMapping注解:①、控制器类:基础路径
②、控制器方法:具体路径 - @ResponseBody注解:可以使控制器方法通过返回值的方式将响应返回给客户端
- @Mapper注解:添加在接口上
- @MapperScan注解:添加在Spring配置类上,指定扫描MyBatis映射接口的包名
搭配(@Configuration)使用
三、HTTP请求方法
3.1 GET请求
GET请求通常用于获取服务器资源,将请求参数放在UR类中
1)URL统一资源定位符
http : //www.example.com/search?q=keyword
其中http是协议名,www.example.com是域名,search是路径名,q是参数名,keyword是
参数值
2)特点
- 参数过多,导致URL变长,传输数据量有一定限制
- 安全性低
适合请求数据不敏感的情况
3.2 POST请求
- 放在请求体中发送
- 传输数据量更大,数据更加安全
适合请求数据敏感的情况
四、客户端传递参数
客户端负责发送请求,服务端负责处理请求
4.1 GET请求 [ 查询参数 ]
在浏览器地址栏中输入URL地址,在URL中添加查询参数,默认发送的是 GET请求。
http://localhost:8080/v1/users/login?username=liying&password=123456
4.2 POST请求 [ 请求体 ]
- html中:Form表单完成POST请求方式的发送
- IDEA中:.http后缀文件中完成POST请求的发送
五、服务端接收参数
5.1 HttpServletRequest接收
@RequestMapping("/v1/users/login")
@ResponseBody
public String login(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
return username + ":" + password;
}
5.2声明参数接收
@RequestMapping("/v1/users/login")
@ResponseBody
// 好处:代码简洁,并且可以自动根据声明的类型进行转换
public String login(String username, String password){
return "username = " + username + ", password = " + password;
}
5.3声明POJO类接收
@RequestMapping("/v1/users/login")
@ResponseBody
public String login(User user){
return user.toString();
}
public class User {
// 客户端传递几个参数,此处就有几个属性
private String username;
private String password;
// 省略 setter() getter() 和 toString() 方法
}
六、POJO
6.1 定义
Plain Ordinary Java Object:简单的Java对象
是entity实体类,VO(Value Object或View Object)视图对象、DTO(Date Transfer Object)数据传输对象 这三个对象的总称
6.2 entity实体类、DTO、VO
- entity:用来和数据库中的表字段一一对应的
- DTO:用来接收客户端传递给服务端的数据的
- VO:用来处理服务器响应给客户端的数据的