B/S架构 :Browser/Server 浏览器/服务器架构模式。 客户只需浏览器,应用程序的逻辑和数据都存在服务器端。
C/S架构:Client/Server,客户端/服务器架构模式,需要单独开发维护客户端。
SpringBoot 入门:
java
@RestController //当前类是请求处理类
public class HelloController {
@RequestMapping("/hello")
public String hello(String name){
System.out.println("name :" + name);
return "hello " + name;
}
}
运行Main方法就将web应用启动
登录 lcoalhost:8080
HTTP协议:超文本传输协议
1:基于TCP协议:面向连接,安全.
2:一次请求对应一次响应
3:无记忆能力,每次请求独立
状态码:

代码入门
java
/**
* 用户实体类
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String username;
private String password;
private String name;
private Integer age;
private LocalDateTime updateTime;
}
java
package com.study.controller;
import cn.hutool.core.io.IoUtil;
import com.study.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* 用户控制器类
*/
// ... existing code ...
@RestController
public class UserController {
@RequestMapping("/list")
public List<User> list() throws FileNotFoundException {
InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt");
// Add null check for input stream
ArrayList<String> lines = IoUtil.readLines(in, StandardCharsets.UTF_8,new ArrayList<>());
//2. 解析对象 封装为User对象
// Reuse DateTimeFormatter (create once outside stream)
List<User> userList = lines.stream()
.map(line -> {
String[] parts = line.split(",");
Integer id = Integer.parseInt(parts[0]);
String username = parts[1];
String password = parts[2];
String name = parts[3];
Integer age = Integer.parseInt(parts[4]);
return new User(id, username, password, name, age);
}).toList();
//3.返回数据(json)
return userList;
}
}
三层架构:
controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据。
java
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/list")
public List<User> findall(){
return userService.findall();
}
}
service:业务逻辑层,处理具体的业务逻辑,
java
@service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao ;
@Override
public List<User> findall() {
List<String> lines = userDao.findall();
List<User> userList = lines.stream()
.map(line -> {
String[] parts = line.split(",");
Integer id = Integer.parseInt(parts[0]);
String username = parts[1];
String password = parts[2];
String name = parts[3];
Integer age = Integer.parseInt(parts[4]);
return new User(id, username, password, name, age);
}).toList();
return userList;
}
}
dao:数据访问层,负责数据访问操作,包括数据的增,删,改,查.(Repository)
java
@Repository
public class UserDaoImpl implements UserDao {
@Override
public List<String> findall() {
InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt");
// Add null check for input stream
ArrayList<String> lines = IoUtil.readLines(in, StandardCharsets.UTF_8,new ArrayList<>());
return lines;
}
}
分层解耦:
高内聚 低耦合
耦合:衡量软件中各个层的依赖关系
内聚:软件中各个功能模块内部的功能联系
控制反转:IOC 对象的创建控制权由程序自身转移到容器
依赖注入:DI 容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。
Bean对象:IOC容器中创建、管理的对象,称之为Bean。
1.将Dao 及 Service层的实现类,交给I0C容器管理 加注解@component
2.为Controller及 Service注入运行时所依赖的对象。 加注解AutoWired
多个bean
