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 开发的核心知识点串了起来。理解这些内容,能帮你打通从请求到响应的全链路,应对开发和面试中的问题。

相关推荐
前端呆猿17 分钟前
小程序性能优化全攻略:提升用户体验的关键策略
前端·性能优化·小程序
麦兜*1 小时前
SpringBoot 3.x集成阿里云OSS:文件上传 断点续传 权限控制
java·spring boot·后端·spring·spring cloud·阿里云·maven
y东施效颦1 小时前
uni-app 配置华为离线推送流程
前端·vue.js·uni-app
Jay Kay1 小时前
CMake综合学习2: 构建高效可靠的C++中型服务项目以及现代CMake全链条指南
c++·学习
gyeolhada1 小时前
编译原理第六到七章(知识点学习/期末复习/笔试/面试)
学习
程序猿小D5 小时前
[附源码+数据库+毕业论文+开题报告]基于Spring+MyBatis+MySQL+Maven+jsp实现的车辆运输管理系统,推荐!
java·数据库·mysql·spring·毕业设计·开题报告·车辆运输管理系统
Bug退退退1236 小时前
RabbitMQ 高级特性之消息分发
java·分布式·spring·rabbitmq
Jack_hrx7 小时前
基于 Drools 的规则引擎性能调优实践:架构、缓存与编译优化全解析
java·性能优化·规则引擎·drools·规则编译
薛定谔的算法7 小时前
# 从0到1构建React项目:一个仓库展示应用的架构实践
前端·react.js