JavaWeb后端(spring--boot)

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

相关推荐
華勳全栈11 分钟前
两天开发完成智能体平台
java·spring·go
alonewolf_9917 分钟前
Spring MVC重点功能底层源码深度解析
java·spring·mvc
沛沛老爹22 分钟前
Java泛型擦除:原理、实践与应对策略
java·开发语言·人工智能·企业开发·发展趋势·技术原理
专注_每天进步一点点23 分钟前
【java开发】写接口文档的札记
java·开发语言
代码方舟26 分钟前
Java企业级实战:对接天远名下车辆数量查询API构建自动化风控中台
java·大数据·开发语言·自动化
flysh0528 分钟前
C# 中类型转换与模式匹配核心概念
开发语言·c#
AC赳赳老秦28 分钟前
Python 爬虫进阶:DeepSeek 优化反爬策略与动态数据解析逻辑
开发语言·hadoop·spring boot·爬虫·python·postgresql·deepseek
浩瀚之水_csdn29 分钟前
Python 三元运算符详解
开发语言·python
zgl_2005377935 分钟前
ZGLanguage 解析SQL数据血缘 之 标识提取SQL语句中的目标表
java·大数据·数据库·数据仓库·hadoop·sql·源代码管理
liwulin050636 分钟前
【JAVA】创建一个不需要依赖的websocket服务器接收音频文件
java·服务器·websocket