news 2026/5/4 13:49:25

springBoot与Web后端基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
springBoot与Web后端基础


🚗🚗🚗🚗🚗🚗🚗 数据结构专栏🚗🚗🚗🚗🚗🚗🚗🚗🚗🚗
🛹🛹🛹🛹🛹🛹🛹小知识总结分享🛹🛹🛹🛹🛹🛹🛹🛹🛹🛹
🚀🚀🚀🚀🚀🚀🚀题目历练场🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
🚢🚢🚢🚢🚢🚢🚢功能包与集合类介绍🚢🚢🚢🚢🚢🚢🚢🚢🚢
🛞🛞🛞🛞🛞🛞🛞java EE🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞

一、基本架构与spring Boot

1.1 两个基本架构

  • b/s 架构 : 客户端只需要浏览器,应用程序的逻辑与数据都在服务器上.
  • c/s 架构 : 单独开发与维护客户端.

1.2 spring Boot入门

可以帮助我们非常快速的构建应用程序,简化开发,提高效率.

二 、入门程序

需求 : 向着端口发送请求,得到回复数据

2.1 创建一个spring Boot工程,勾选相关依赖

勾选maven

2.2 定义一个controller类,添加注解,表明当前是一个请求处理类



3.3为什么一个main方法就将web应用启动了?

  • spring starts 起步依赖,因为依赖存在连续性质,来包含着tomcat起步依赖,将程序启动在tomcat服务器中.

三、HTTP协议

3.1 http特点

超文本传输协议,规定了浏览器与服务器之间的数据传输规则

  • 基于TCP协议:面向连接,安全。
  • 一次请求一次响应,对事务没有记忆能力,每次请求与响应都是独立的。

请求协议部分与响应协议部分

3.2.1 请求数据格式

  • 一般分为请求行,请求头,请求体三部分


3.2.2 请求数据获取

服务器会对http协议的请求进行解析,并进行封装(Http Servlet Request),在调用controller方法的时候传递给方法.

package com.six; import jakarta.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class requestController { @RequestMapping("/request") public String request(HttpServletRequest request){ //1.获得请求方式 String method = request.getMethod(); // GET System.out.println("method" + method); //2.获得请求路径 String path = request.getRequestURI(); // /requset System.out.println("path" + path); StringBuffer path2 = request.getRequestURL(); // http://localhost:8080/requset System.out.println("path2" + path2); //3.获得请求参数name ,age String name = request.getParameter("name"); String age = request.getParameter("age"); System.out.println("name" + name); System.out.println("age" + age); //4.获得请accept求头 String accept = request.getHeader("accept"); System.out.println("accept" + accept); //5.获得请求协议 String protocol = request.getProtocol(); System.out.println("protocol" + protocol); return "ok"; } }

3.3.1响应数据格式

  • 状态码总共分为5类

  • 重定向

3.3.2响应数据设置

服务器会对http协议的请求进行解析,并进行封装(Http Servlet Response),在调用controller方法的时候传递给方法.通常情况下,不需要设置状态码与相应头。服务器会根据具体情况进行设置。

package com.six; import jakarta.servlet.http.HttpServletResponse; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.IOException; @RestController public class responseController { @RequestMapping("/response") public void response(HttpServletResponse response) throws IOException { //设置响应头 response.setHeader("name", "duoduo"); //设置响应状态码 response.setStatus(200); //设置响应体 response.getWriter().write("<h1>duoduo is very pretty</h1>"); } // 使用spring自带进行设置 @RequestMapping("/response2") public ResponseEntity<String> response2(){ // 泛型表示响应体的数据类型 return ResponseEntity.status(401). header("name", "duoduo"). body("<h1>duoduo is very pretty</h1>"); } }

前后端数据读取基本步骤

四、分层解耦

4.1三层架构

  • Controller : 控制层,接受前段发送的请求,对请求进行处理,并响应数据
  • Service : 业务逻辑层
  • Dao : 数据访问层,负责数据的访问操作,增删改查…


  • 不同架构之间通过面向接口方式进行关联的好处:面向接口优点

4.2分层解耦

  • 高内聚,低耦合
    耦合 : 层与层,模块与模块之间的关连程度.
    内聚 : 各个模块之间功能联系

  • 层与层之间的解耦

4.3 IOC 与 DI

@Component : 将当前类交给IOC管理。查看bean是默认是类名字母小写,当然在注解时也可以添加val值进行命名.

@Autowired : 在实例化语句上添加注释,会从IOC中挑选相对应的对象,并赋值到新建对象上。

  • 属性注入 (最为简单快捷 但是隐藏了类之间的以来环境,可能破摔类的封装性)
  • 构造函数注入
//构造器注入 private final userService userService; @Autowired public userController(userService userService) { this.userService = userService; }
  • setter注入
private userService userService; @Autowired public void setUserService(userService userService) { this.userService = userService; }
当一个接口实现了多个实现类,怎么指定导入那个类


方案2,3均为bean 的名字,不是类名

resource 与 autowired的区别

  • 前者是Java EE提供的规范,后者是spring框架提供的。
  • 前者是按照名字进行注入,后者是按照类型进行注入。

总结

  • 到这里我的分享就先结束了~,希望对你有帮助
  • 我是dylan 下次见~
    • 无限进步
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 13:48:35

本地化研究工具OpenResearcher:构建离线知识图谱

1. 项目背景与核心价值在学术研究和技术开发领域&#xff0c;我们经常面临一个典型困境&#xff1a;当需要深入理解某个复杂课题时&#xff0c;往往需要收集大量文献资料、整理研究笔记、梳理知识脉络。传统的研究流程存在几个明显痛点&#xff1a;资料分散在不同平台和设备上&…

作者头像 李华
网站建设 2026/5/4 13:47:37

A-index算法在多媒体内容真实性检测中的应用与优化

1. 项目背景与核心挑战在数字内容爆炸式增长的今天&#xff0c;多媒体内容的真实性检测已成为信息安全领域的关键课题。我最近完成了一个关于A-index算法在内容真实性检测中的应用研究项目&#xff0c;这个技术能够有效识别经过深度伪造&#xff08;Deepfake&#xff09;处理的…

作者头像 李华
网站建设 2026/5/4 13:47:35

QuickBMS:二进制格式解析与游戏资源提取的通用解决方案

QuickBMS&#xff1a;二进制格式解析与游戏资源提取的通用解决方案 【免费下载链接】QuickBMS QuickBMS by aluigi - Github Mirror 项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS 面对游戏开发中复杂的资源打包格式、自定义压缩算法和加密数据包&#xff0c…

作者头像 李华
网站建设 2026/5/4 13:46:43

基于飞书与RAG技术构建企业知识库智能体:从原理到部署实践

1. 项目概述&#xff1a;一个基于飞书的知识库智能体 最近在折腾一个挺有意思的开源项目&#xff0c;叫 OpenClaw-Lark-Knowledge-Agent 。这个名字乍一看有点长&#xff0c;拆解一下其实就明白了&#xff1a;“OpenClaw”可能是项目代号或团队名&#xff0c;“Lark”就是飞…

作者头像 李华
网站建设 2026/5/4 13:46:11

查找程序历史版本不用愁!5个网站解决你的烦恼!

AI模型&#xff1a;Deepseek 仅供参考。 1. 豌豆荚 安卓应用历史版本库 网址&#xff1a;https://www.wandoujia.com/ 类型&#xff1a;安卓手机应用库 特点&#xff1a;国内最早规模化收录安卓应用历史版本的平台之一&#xff0c;每个App下方均有清晰的历史版本列表&…

作者头像 李华
网站建设 2026/5/4 13:45:12

5大核心特性:彻底解决网盘下载限速的开源工具

5大核心特性&#xff1a;彻底解决网盘下载限速的开源工具 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅…

作者头像 李华