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

php做网站中下一步按钮seo方式包括

php做网站中下一步按钮,seo方式包括,三亚手机台app,cdr做好排班怎么做网站Spring MVC 深度解析:原理、源码剖析与实战 在 Spring 体系中,Spring MVC 作为 Web 层的核心框架,承担着请求处理、参数解析、视图渲染等关键任务。今天,我们将深入剖析 Spring MVC 的执行流程,结合 源码分析&#xf…

Spring MVC 深度解析:原理、源码剖析与实战

在 Spring 体系中,Spring MVC 作为 Web 层的核心框架,承担着请求处理、参数解析、视图渲染等关键任务。今天,我们将深入剖析 Spring MVC 的执行流程,结合 源码分析,并通过 代码实战 掌握其核心机制。


📌 1. 什么是 Spring MVC?

Spring MVC(Model-View-Controller)是一种基于 Servlet 的 Web 框架,遵循 MVC 设计模式,主要负责:

  • 请求分发(DispatcherServlet)
  • 控制器映射(HandlerMapping)
  • 参数解析(HandlerAdapter)
  • 视图渲染(ViewResolver)

📌 2. Spring MVC 执行流程解析

Spring MVC 处理请求的完整流程如下:

1️⃣ 客户端发送 HTTP 请求(如 GET /user/list
2️⃣ DispatcherServlet 拦截请求,作为 MVC 的中央调度器
3️⃣ HandlerMapping 查找对应的 Controller(基于 URL 映射)
4️⃣ HandlerAdapter 适配执行 Controller 业务逻辑
5️⃣ Controller 处理请求并返回 ModelAndView
6️⃣ ViewResolver 解析视图并渲染数据
7️⃣ 返回 HTML 响应给客户端

📌 Spring MVC 内部架构图

[Client] → [DispatcherServlet] → [HandlerMapping] → [Controller] → 
[ModelAndView] → [ViewResolver] → [Response]

📌 3. 源码解析:DispatcherServlet 如何工作?

🔥 DispatcherServlet 核心源码

Spring MVC 通过 DispatcherServlet 作为 前端控制器,其核心方法 doDispatch() 负责处理请求:

protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {// 1️⃣ 解析请求对应的 Handler(Controller)HandlerExecutionChain handler = getHandler(request);// 2️⃣ 选择合适的 HandlerAdapter 执行 Controller 方法HandlerAdapter ha = getHandlerAdapter(handler.getHandler());// 3️⃣ 调用 Controller 方法,获取 ModelAndViewModelAndView mv = ha.handle(request, response, handler.getHandler());// 4️⃣ 解析视图,并返回响应结果processDispatchResult(request, response, handler, mv);
}

核心流程

  • getHandler():查找 HandlerMapping 获取对应的 Controller
  • getHandlerAdapter():找到适配 Controller 方法的 HandlerAdapter
  • handle():执行 Controller 逻辑,返回 ModelAndView
  • processDispatchResult():调用 ViewResolver 解析视图,渲染响应

📌 4. 代码实战:手写 Spring MVC Controller

我们基于 Spring Boot 构建一个简单的 Spring MVC 应用,并实现 @RequestMapping 的 Controller。

📝 代码示例:Spring Boot MVC 控制器

import org.springframework.web.bind.annotation.*;import java.util.*;@RestController
@RequestMapping("/user")
public class UserController {// 模拟数据库存储用户private static List<String> users = new ArrayList<>(Arrays.asList("Alice", "Bob", "Charlie"));// 查询用户列表@GetMapping("/list")public List<String> listUsers() {return users;}// 添加用户@PostMapping("/add")public String addUser(@RequestParam String name) {users.add(name);return "用户 " + name + " 添加成功!";}
}

🛠 启动 Spring Boot

SpringBootApplication 类中运行:

@SpringBootApplication
public class SpringMvcApp {public static void main(String[] args) {SpringApplication.run(SpringMvcApp.class, args);}
}

测试 API

# 查询用户列表
curl http://localhost:8080/user/list# 添加新用户
curl -X POST "http://localhost:8080/user/add?name=David"

📌 5. 深入分析 @RequestMapping 的执行流程

@RequestMapping 是 Spring MVC 用于 URL 映射 的核心注解,它的执行流程如下:

1️⃣ Spring MVC 启动时,扫描 @RequestMapping 标注的方法
2️⃣ HandlerMapping 解析 URL,并映射到 Controller 方法
3️⃣ HandlerAdapter 调用 Controller 方法,解析 @RequestParam 参数
4️⃣ 返回结果封装为 ResponseBody,通过 HttpMessageConverter 处理

📌 源码解析:Spring MVC 如何解析 @RequestMapping?

@RequestMapping("/user")
public class UserController {@GetMapping("/list")public List<String> listUsers() { return users; }
}

➡️ 核心逻辑
Spring MVC 在启动时,会通过 RequestMappingHandlerMapping 解析 @RequestMapping 并存入映射表:

protected void detectHandlerMethods(Object handler) {for (Method method : handler.getClass().getDeclaredMethods()) {if (method.isAnnotationPresent(RequestMapping.class)) {registerHandlerMethod(handler, method);}}
}

📌 6. Spring MVC 过滤器与拦截器

Spring MVC 提供 FilterInterceptor 机制,可用于 用户认证、日志记录、跨域请求 等场景。

类型作用实现方式
Filter过滤 HTTP 请求javax.servlet.Filter
Interceptor拦截 ControllerHandlerInterceptor

📝 代码示例:拦截器实现日志记录

@Component
public class LogInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {System.out.println("请求路径:" + request.getRequestURI());return true;}
}

注册拦截器

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LogInterceptor());}
}

🔹 作用:每次请求前打印日志,方便调试。


📌 7. 总结

功能Spring 机制源码解析代码实战
请求分发DispatcherServletdoDispatch() 方法@RequestMapping
Controller 处理HandlerMappinggetHandler()@RestController
参数解析HandlerAdapterhandle() 方法@RequestParam
视图渲染ViewResolverprocessDispatchResult()return ModelAndView

今日收获

  • 掌握 Spring MVC 执行流程
  • 深入理解 DispatcherServlet 处理逻辑
  • 解析 @RequestMapping 的工作机制
  • 实战 Spring Boot MVC 开发
  • 实现 日志拦截器

🚀 明日预告:Spring 事务管理(事务传播、@Transactional 源码分析)

🔗 学习资料
📖 Spring 官方文档 - MVC


💬 Spring MVC 你有什么疑问?欢迎留言交流! 🚀

http://www.dtcms.com/wzjs/512485.html

相关文章:

  • 铜陵做网站如何做免费网络推广
  • 网站 免费空间免费的网站推广方法
  • 做采购常用的几个网站网站优化分析
  • 深圳淘宝运营培训石家庄关键词优化软件
  • 企业管理系统官网优帮云排名优化
  • 设计网站的流程爱站关键词
  • 牛商网专注营销型网站建设上海抖音推广
  • 怎样制作3d立体效果图江北关键词优化排名seo
  • 如何找人做网站阿里云域名注册官网网址
  • 网站制作是怎样做的推广渠道有哪些
  • 秦皇岛手机网站网站的推广优化
  • 手机网站开发设计包括什么今天的新闻头条最新消息
  • wordpress进行不南通百度网站快速优化
  • 宁波网站建设招商加盟如何制作一个网页网站
  • 网站建设又叫什么北京计算机培训机构哪个最好
  • wordpress xiu底部广告seo培训一对一
  • 国家建设部建筑业网站semir森马
  • 苏州高端网站建设腾讯企业邮箱
  • 简述网站建设有哪些步骤国外最好的免费建站
  • wordpress 时光网主题悟空建站seo服务
  • wordpress 网站地图插件百度站长平台网页版
  • 网站开发论文文献综述本地服务推广平台哪个好
  • 网站标题格式网站域名在哪买
  • 自己电脑做网站 外网无法访问东莞搜索排名提升
  • 哪些网站用黑体做的百度广告投放
  • 汽车建设网站发稿推广
  • 做网站的工具有哪些sem优化托管
  • 广西壮族自治区建设厅官方网站百度热搜榜怎么打开
  • 网站开发产品设计书百度指数怎么看排名
  • 网络营销与网站推广的宁波网站推广公司报价