当前位置: 首页 > news >正文

SpringMVC1

一、Tomcat 多服务与资源路径

 

- 一个 Tomcat 跑多个服务:

Tomcat 作为 Servlet 容器,默认端口是 8080。它可以同时部署多个 Web 应用(比如图中的 A、B、C),每个应用对应不同的资源路径。比如  http://127.0.0.1:8080/A/  就是访问 A 应用的根路径,以此类推。这里的  127.0.0.1  是本地回环地址,代表当前机器。

- context path 和 servlet path:

context path 是应用的上下文路径(比如  /A ),servlet path 是具体 Servlet 的路径。Spring 框架底层依赖 Servlet 技术,所以说 Spring 是基于 Servlet 开发的。

 

二、HTTP 状态码

 

- 1xx(信息响应):表示请求已接收,继续处理。

- 2xx(成功):比如 200 OK,表示请求成功。

- 3xx(重定向):像 301 永久重定向、302 临时重定向。

- 4xx(客户端错误):

- 404 Not Found:资源不存在,比如请求了一个不存在的网页。

- 403 Forbidden:服务器拒绝请求,没有权限访问。

- 401 Unauthorized:未授权,需要认证。

- 405 Method Not Allowed:请求方法不被允许,比如用 GET 方法访问只允许 POST 的接口。

- 5xx(服务器错误):

- 500 Internal Server Error:服务器内部出错,比如代码抛异常。

- 502 Bad Gateway:网关错误,比如反向代理时后端服务不可用。

- 504 Gateway Timeout:网关超时,请求后端服务超时。

 

三、连接失败案例

 

- 错误信息: The connection to '127.0.0.1' failed. Error: ConnectionRefused (0x274D). System.Net.Sockets.SocketException 由于目标计算机积极拒绝,无法连接。 127.0.0.1:8080 

- 原因:这通常是因为 Tomcat 没启动,或者端口被占用,导致客户端(比如浏览器、Fiddler)连不上  127.0.0.1:8080 。

 

四、Spring 家族关系

 

- SpringBoot、SpringMVC、Spring Framework 不是互斥的:

- Spring Framework:是基础框架,提供 IoC、AOP 等核心功能。

- SpringMVC:是基于 Spring 的 Web 框架,处理 Web 请求。

- SpringBoot:是快速开发框架,内置了 Tomcat(默认端口 12306,图中举例)、自动配置等,简化了 Spring 应用的搭建。

- 关系:SpringBoot 可以包含 SpringMVC,SpringMVC 属于 Spring Framework 的一部分。

 

五、SpringMVC 工作流程(MVC 模式)

 

- Model(模型):处理业务逻辑,和数据库交互,比如  Student  类封装数据。

- View(视图):负责展示数据,比如 JSP、Thymeleaf 页面。

- Controller(控制器):接收请求,调用 Model 处理,再把结果返回给 View。

- 流程:

1. 用户发请求(比如浏览器输入 URL)。

2. DispatcherServlet(前端控制器)接收请求,找到对应的 Controller。

3. Controller 调用 Model 处理业务(比如查数据库)。

4. Model 返回结果,Controller 选择 View 渲染数据,返回给用户。

 

六、面试流程(结合技术)

 

- 候选人流程:

1. 候选人去面试,HR 接待。

2. HR 负责多部门协调,把简历发给对应部门领导。

3. 部门领导让下属去面试。

4. 面试官把结果告诉部门领导,领导再反馈给 HR,HR 通知候选人。

- 技术映射:

- 候选人 → 用户

- HR → Controller(接收请求,分发任务)

- 部门领导 → model(处理业务逻辑,决定是否录用)

 

七、Maven 依赖下载与导入

 

- 区分下载和导入:

- 导入:每次用都要导入(比如在 IDEA 中 add as library)。

- 下载:下一次,之后能用,不用再下(Maven 会把依赖下到本地仓库)。

- 下载失败解决办法:

1. 设置国内源:比如阿里云 Maven 镜像,在 IDEA 的 Settings → Build, Execution, Deployment → Build Tools → Maven → 配置文件里改。

2. 多次刷新 Maven:点击 IDEA 中 Maven 面板的刷新按钮。

3. 切换网络:比如手机热点、其他 Wi-Fi,避免网络拦截。

4. 删除已下载的,重新刷新 Maven:去本地仓库(比如  C:\Users\用户名\.m2\repository )删对应依赖文件夹,再刷新。

5. 确认版本存在:去 Maven 中央仓库(https://mvnrepository.com/)查依赖版本是否存在,不存在就换版本。

6. 切换默认中央仓库:在 Maven 的  settings.xml  里配置其他仓库地址。

 

八、SpringBoot 项目创建(专业版 vs 社区版)

 

- 专业版(Ultimate):

- 可直接创建 SpringBoot 项目,不用装插件。

- 能直接联网。

- 社区版(Community):

- 要装 SpringBoot 插件。

- 创建项目后专业版能直接跑,社区版可能要手动删  spring-boot-starter-web  依赖后的  release  后缀(图中提到)。

- 其他方式:也能用 Spring Initializr(https://start.spring.io/)官网创建项目,导入 IDEA,社区版没装插件也能开发,只是创建项目麻烦。

 

九、URL 与 Controller 映射

 

- URL 结构: http://IP:端口/资源路径?查询字符串 。比如  http://127.0.0.1:8080/hello , 127.0.0.1  是 IP, 8080  是端口, /hello  是资源路径。

- Controller 示例:

@RestController

public class HelloController {

    @GetMapping("/hello")

    public String hello() {

        return "Hello Spring Boot!";

    }

}

 

 

-  @RestController :标记这是个 REST 风格的 Controller,返回 JSON 等数据。

-  @GetMapping("/hello") :映射 GET 请求到  /hello  路径,方法返回字符串给客户端。

 

十、Tomcat 与 SpringBoot 的关系

 

- Tomcat 是 SpringBoot 的“内置管家”:SpringBoot 内置了 Tomcat,启动 SpringBoot 项目就会启动内置 Tomcat,默认端口 8080(图中举例 12306 是自定义端口)。

- Tomcat 不止能跑 SpringBoot:还能跑 Struts、Servlet 等项目。

- SpringBoot 不只能用 Tomcat:还能切换成 Jetty、Undertow 等 Web 服务器。

- 启动 SpringBoot 项目 ≈ 启动 Tomcat:SpringBoot 项目跑起来,内置 Tomcat 就启动了,能处理 Web 请求。

 

总结

 

本节从 Tomcat 基础、HTTP 状态码、Spring 家族关系、SpringMVC 流程、Maven 依赖、SpringBoot 项目创建、URL 映射到 Tomcat 与 SpringBoot 的关系,把 Java Web 开发的核心知识点串了起来。理解这些内容,能帮你打通从请求到响应的全链路,应对开发和面试中的问题。

 

http://www.dtcms.com/a/278470.html

相关文章:

  • GraphRAG核心提示词工程完整中文版
  • VyOS起步指南:用Docker快速搭建网络实验环境
  • 分享三个python爬虫案例
  • HTML应用指南:利用GET请求获取河南省胖东来超市门店位置信息
  • STM32新建工程
  • HTB 赛季8靶场 - Outbound
  • 微算法科技技术创新,将量子图像LSQb算法与量子加密技术相结合,构建更加安全的量子信息隐藏和传输系统
  • 复习笔记 38
  • 安卓基于 FirebaseAuth 实现 google 登录
  • 【小米训练营】C++方向 实践项目 Android Player
  • C++ 左值右值、左值引用右值引用、integral_constant、integral_constant的元模板使用案例
  • 量子计算新突破!阿里“太章3.0”实现512量子比特模拟(2025中国量子算力巅峰)
  • ethers.js-5–和solidity的关系
  • RPC 框架学习笔记
  • Spark 之 like 表达式
  • 软件测试中的BUG等级与生命周期详解
  • 走近科学IT版:EasyTire设置了ip,但是一闪之后就变回到原来的dhcp获得的地址
  • ros2版本自定义插件的实现与热插拔
  • 设计模式(行为型)-迭代器模式
  • java 判断两个集合中没有重复元素
  • iOS高级开发工程师面试——Objective-C 语言特性
  • Linux(Ubuntu)硬盘使用情况解析(已房子举例)
  • rk3588ubuntu 系统移植AIC8800D Wi-Fi6/BT5.0芯片
  • EMQX + Amazon S3 Tables:从实时物联网数据到数据湖仓
  • C++函数指针
  • Redis作缓存时存在的问题及其解决方案
  • 云原生核心技术解析:Docker vs Kubernetes vs Docker Compose
  • Word 与 Excel 下拉菜单对比(附示例下载)
  • 前端将传回的List数据组织成树形数据并展示
  • MEMS IMU如何赋能无人机与机器人精准感知?