当前位置: 首页 > 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.xdnf.cn/news/1121923.html

相关文章:

  • 技能升级--二分例题
  • 新手向:Python自动化办公批量重命名与整理文件系统
  • ECUs、ZCUs、CCUs:产生的软件栈(SW stack)也有所不同
  • 事物生效,订单类内部更新订单
  • MFC/C++语言怎么比较CString类型最后一个字符
  • gitignore添加后如何生效?
  • Spark 单机模式安装与测试全攻略​
  • 考完数通,能转云计算/安全方向吗?转型路径与拓展路线分析
  • ThreadLocal结构
  • windows11系统安装nginx1.28.0
  • 【无标题】11维模型几何引擎拓扑量子计算机的推想
  • 【C++篇】:告别手动内存管理!——C++智能指针的快速上手指南
  • 宝塔面板常见问题
  • 驱动开发系列60- Vulkan 驱动实现-SPIRV到HW指令的实现过程(1)
  • 开疆智能EtherCAT转CANopen网关连接磁导航传感器配置案例
  • 空间智能-李飞飞团队工作总结(至2025.07)
  • spark广播表大小超过Spark默认的8GB限制
  • redis面试高频问题汇总(一)
  • wpf 实现窗口点击关闭按钮时 ​​隐藏​​ 而不是真正关闭,并且只有当 ​​父窗口关闭时才真正退出​​ 、父子窗口顺序控制与资源安全释放​
  • NAT原理与实验指南:网络地址转换技术解析与实践
  • ubuntu之坑(十五)——设备树
  • 【论文阅读】Thinkless: LLM Learns When to Think
  • .net天擎分钟降水数据统计
  • 【飞牛云fnOS】告别数据孤岛:飞牛云fnOS私人资料管家
  • React 第六十九节 Router中renderMatches的使用详解及注意事项
  • JMeter 连接与配置 ClickHouse 数据库
  • Mysql用户管理及在windows下安装Mysql5.7(压缩包方式)远程连接云服务器(linux)上的Mysql数据库
  • 【一维 前缀和+差分】
  • ether.js—6—contractFactory以部署ERC20代币标准为例子
  • CSS手写题