那里建设网站好提升学历一般多少钱
2026/4/17 0:21:53 网站建设 项目流程
那里建设网站好,提升学历一般多少钱,桂林市区旅游攻略必去景点,动易网站建设实训报告Spring MVC 全面详解#xff08;Java 主流 Web 开发框架#xff09; 一、Spring MVC 是什么 定位 Spring MVC 是 Spring Framework 框架的核心模块之一#xff0c;是一款基于MVC 设计模式的轻量级 Java Web 开发框架#xff0c;也是目前 Java 后端主流的 Web 开发技…Spring MVC 全面详解Java 主流 Web 开发框架一、Spring MVC 是什么 定位Spring MVC 是Spring Framework 框架的核心模块之一是一款基于MVC 设计模式的轻量级 Java Web 开发框架也是目前 Java 后端主流的 Web 开发技术没有之一。价值简化 Java Web 开发将 Web 开发中的「请求接收、参数封装、业务处理、响应返回」等流程标准化、解耦化理念遵循约定优于配置面向接口编程兼顾灵活性和开发效率特性原生兼容 Spring 生态IoC、AOP、轻量无侵入、组件化可插拔、支持 RESTful 风格、请求映射灵活、数据绑定强大。二、先搞懂MVC 设计模式Spring MVC 的基础Spring MVC 的本质是对 MVC 设计模式的完美落地实现想要理解 Spring MVC必须先理解 MVCMVC 是所有 Web 开发的经典分层思想和语言无关MVC 三个核心角色职责完全分离解耦核心M - Model模型层核心作用封装数据 业务逻辑处理包含内容实体类POJO/Entity比如 User、Order、Service 业务层、Dao 持久层操作数据库核心职责只关注数据和业务不关心前端页面如何展示、请求如何传递是纯 Java 逻辑层。V - View视图层核心作用数据展示给用户呈现最终的结果包含内容传统的 JSP、HTML 页面、Freemarker/Thymeleaf 模板、Vue/React 前端页面等核心职责只负责把 Model 层传递过来的数据渲染成可视化页面不做任何业务逻辑处理。C - Controller控制层核心作用请求调度的核心承上启下Spring MVC 的核心层核心职责接收前端浏览器发送的 HTTP 请求GET/POST 等调用 Model 层的业务方法处理请求将业务处理后的结果Model 数据传递给 View 层控制页面跳转或直接返回 JSON 数据。MVC 核心优势彻底解耦三层职责单一互不依赖。比如修改页面样式View完全不用改业务代码Model修改业务逻辑Model控制层Controller只需要调用对应方法即可极大提升项目的可维护性和扩展性。三、Spring MVC 的核心架构 执行流程Spring MVC 是一个请求驱动的框架所有请求都遵循「统一入口统一出口」的标准化流程前提Spring MVC 的所有请求都会经过一个唯一的核心前端控制器——DispatcherServlet它是整个 Spring MVC 的「总指挥」所有请求的分发、调度都由它完成开发者无需编写任何代码只需在配置文件中配置即可。Spring MVC 完整的请求执行流程10 步标准流程从请求到响应客户端浏览器 / Postman发送 HTTP 请求 到 Web 服务器TomcatWeb 服务器将请求转发给 Spring MVC 的核心控制器DispatcherServlet统一入口DispatcherServlet收到请求后调用 处理器映射器 HandlerMappingHandlerMapping根据请求的「URL 地址 请求方式」匹配对应的 处理器 Handler本质就是我们写的 Controller 类并返回处理器执行链包含 Handler 和拦截器给 DispatcherServletDispatcherServlet调用 处理器适配器 HandlerAdapterHandlerAdapter适配并执行对应的 HandlerController在 Controller 中接收并封装请求参数调用 Service 层的业务方法处理请求处理完成后返回 ModelAndView 对象包含业务数据 Model 视图地址 ViewHandlerAdapter将执行结果ModelAndView返回给DispatcherServletDispatcherServlet调用 视图解析器 ViewResolverViewResolver根据 ModelAndView 中的「视图地址」解析出对应的 视图对象 View比如 JSP/HTMLDispatcherServlet将 Model 中的数据渲染到 View 中生成最终的响应页面通过 Web 服务器返回给客户端请求结束。记忆前端控制器是核心所有组件都由它调度开发者只需要写 Controller 和业务逻辑其余组件 Spring MVC 都已内置实现。四、Spring MVC 核心组件各司其职缺一不可上面流程中提到的组件是 Spring MVC 的核心全部由 Spring 容器管理大部分组件开发者无需自定义Spring 提供默认实现这里讲清楚每个组件的核心作用1. 前端控制器DispatcherServlet核心核心核心地位整个 Spring MVC 的核心无它不成立作用统一接收请求、统一响应结果负责调度其他所有组件相当于「交通指挥中心」特点全局唯一由开发者在 web.xml 或配置类中配置生命周期由 Tomcat 管理。2. 处理器映射器HandlerMapping作用根据请求 URL 匹配对应的 Controller 方法原理Spring 启动时会扫描所有 Controller 中的请求映射注解如 RequestMapping将「URL-Controller 方法」的映射关系存入内存请求来时直接匹配。常用实现RequestMappingHandlerMappingSpring MVC 默认支持 RequestMapping 系列注解。3. 处理器适配器HandlerAdapter作用适配并执行 HandlerController核心价值屏蔽不同 Handler 的执行差异让 DispatcherServlet 无需关心具体的 Controller 是如何执行的只需要调用适配器即可符合「开闭原则」。常用实现RequestMappingHandlerAdapterSpring MVC 默认适配 RequestMapping 注解的 Controller。4. 处理器Handler开发者核心编写本质就是我们编写的 Controller 类作用业务请求的具体处理者负责接收参数、调用业务逻辑、返回处理结果特点开发者自定义是 Spring MVC 中唯一需要开发者编写核心逻辑的组件。5. 视图解析器ViewResolver作用解析视图地址生成视图对象核心能力拼接视图路径比如开发者返回视图名index视图解析器可以自动拼接前缀/WEB-INF/views/和后缀.jsp最终得到完整路径/WEB-INF/views/index.jsp。常用实现InternalResourceViewResolver默认支持 JSP 解析。6. 视图View作用渲染数据生成响应页面类型JSP、HTML、Thymeleaf 模板、PDF 等只负责展示数据不处理业务。五、Spring MVC 核心注解高频必用必须掌握Spring MVC 基于注解驱动开发完全摒弃了早期的 XML 配置方式所有核心功能都通过注解实现以下是开发中常用到的核心注解按使用频率排序类级注解Controller作用标记一个 Java 类为Spring MVC 的控制Controller/Handler核心特性被该注解标记的类会被 Spring 容器扫描并实例化纳入 IoC 容器该类中的方法可以通过「请求映射注解」绑定 URL接收前端请求配合ResponseBody注解可让 Controller 直接返回 JSON 数据前后端分离项目必用。补该注解标记的类默认返回视图名称跳转页面比如 JSP/HTML而非数据通常用于传统前后端一体项目需要跳转页面、渲染视图类级 方法级注解RequestMapping作用建立「URL 请求地址」和「Controller 方法」的映射关系核心用法加在类上设置当前 Controller 的「请求前缀」所有方法的 URL 都基于该前缀拼接加在方法上设置当前方法的「请求路径」结合类上的前缀形成完整的请求 URL核心属性value/path指定请求 URL必填method指定请求方式GET/POST/PUT/DELETE如method RequestMethod.GETparams限制请求必须携带指定参数才会匹配示例RestControllerRequestMapping(/user)// 类上所有方法的URL前缀都是 /userpublicclassUserController{// 方法上完整请求URL /user/query仅处理GET请求RequestMapping(value/query,methodRequestMethod.GET)publicStringquery(){return查询用户;}}简化版请求注解Spring4.3 新增推荐优先使用是RequestMapping的专用简化版语义更清晰开发中常用这些代替 RequestMappingGetMapping(url)→ 等价于RequestMapping(valueurl,methodRequestMethod.GET)→ 处理 GET 请求查询PostMapping(url)→ 等价于RequestMapping(valueurl,methodRequestMethod.POST)→ 处理 POST 请求新增PutMapping(url)→ 处理 PUT 请求修改DeleteMapping(url)→ 处理 DELETE 请求删除核心响应注解ResponseBody作用将方法的返回值直接转换为 JSON 格式的响应体返回给前端核心特性加在方法上当前方法返回 JSON不跳转页面加在类上当前 Controller 的所有方法都返回 JSON无需逐个添加✨ 组合注解RestControllerController ResponseBody→ 前后端分离项目的标配标记的 Controller 所有方法都返回 JSON不会跳转视图。补不加该注解时方法返回值会被解析为「视图名称」比如返回index会跳转 index.jsp 页面加了该注解后返回值就是纯数据不再跳转页面搭配Controller使用适合「部分方法返回 JSON、部分方法跳转页面」的混合场景。请求参数接收注解用于在 Controller 方法中接收前端传递的参数开发中高频使用1.RequestParamRequestParam(参数名)接收URL 拼接参数GET或表单提交参数POST如RequestParam(name) String username属性value/name必填指定前端传递的参数名必须和前端一致required可选默认true表示该参数必须传递不传则报错设为false则参数可选defaultValue可选给参数设置默认值当参数未传递 / 传递空值时生效。示例// 请求URLhttp://localhost:8080/user/query?name张三age20GetMapping(/query)// 接收name和age参数age可选默认值18publicStringquery(RequestParam(name)Stringusername,RequestParam(valueage,requiredfalse,defaultValue18)Integerage){return姓名username,年龄age;}若后端参数名 前端参数名可以省略注解直接写参数即可底层自动映射// 等价于上面的写法name和前端参数名一致可省略RequestParampublicStringquery(Stringname,Integerage){...}2.PathVariablePathVariable(占位符)接收RESTful 风格的 URL 路径参数如GetMapping(/user/{id})中用PathVariable(id) Integer id接收注意URL 中需要用{参数名}定义占位符注解的value值必须和占位符的参数名一致该参数默认是必传的不传则请求 404。// 请求URLhttp://localhost:8080/user/1001/infoGetMapping(/{userId}/info)// {userId}是路径占位符publicStringgetUserInfo(PathVariable(userId)Stringid){return用户IDid;}3.RequestBodyRequestBody接收前端传递的 JSON 格式请求体POST/PUT 必用直接封装到实体类中如RequestBody User user特点只能标注在方法参数上且一个方法只能有一个 RequestBody 参数前端必须将参数放在 请求体 (Request Body) 中且请求头Content-Type application/jsonSpring MVC 会通过 Jackson 框架自动完成「JSON 字符串 → Java 对象」的反序列化无需手动解析适用于传递复杂参数比如新增用户时传递姓名、年龄、手机号、地址等多个字段。示例// 前端POST请求请求体是JSON{name:张三,age:20,phone:13800138000}PostMapping(/add)// 自动将JSON请求体封装为User实体类对象publicStringaddUser(RequestBodyUseruser){return新增用户user.getName();}4.RequestHeader作用接收前端在 HTTP 请求头 中传递的参数比如token、Content-Type、User-Agent等。示例// 接收请求头中的token参数用于接口鉴权GetMapping(/auth)publicStringauth(RequestHeader(token)Stringtoken){return请求头中的令牌token;}5.CookieValue作用接收前端浏览器在请求中携带的 Cookie 数据比如登录后的 Cookie 令牌。GetMapping(/cookie)publicStringgetCookie(CookieValue(JSESSIONID)StringsessionId){returnCookie中的会话IDsessionId;}补ModelAttribute作用将前端传递的表单参数自动封装为 Java 实体类对象适用于传统表单提交的场景场景替代多个RequestParam简化表单参数的封装比如提交用户信息时直接封装为User对象。CrossOrigin作用解决前端跨域请求问题前后端分离项目必用使用标注在 Controller 类上所有方法允许跨域或方法上仅当前方法允许跨域无需额外配置跨域过滤器开箱即用。示例RestControllerRequestMapping(/user)CrossOrigin// 所有方法允许跨域请求publicclassUserController{...}六、Spring MVC 最简入门示例完整可运行核心代码下面给出基于注解的最简 Spring MVC 入门案例包含核心配置 核心代码能直观看到 Spring MVC 的开发方式分「传统前后端一体」和「前后端分离主流」两种最常用场景。环境前提JDK 8Spring MVC 5.x依赖核心依赖spring-webmvc✅ 场景 1前后端分离主流→ 返回 JSON 数据推荐1. 编写核心控制器RestController 版// 组合注解Controller ResponseBody所有方法返回JSONRestController// 类级请求前缀所有方法的URL都以 /user 开头RequestMapping(/user)publicclassUserController{// 处理GET请求完整URLhttp://localhost:8080/user/info/1GetMapping(/info/{id})publicUsergetUserInfo(PathVariable(id)Integerid){// 模拟业务逻辑根据ID查询用户UserusernewUser();user.setId(id);user.setName(张三);user.setAge(20);// 直接返回实体类Spring MVC自动转为JSON响应给前端returnuser;}// 处理POST请求接收前端JSON参数完整URLhttp://localhost:8080/user/addPostMapping(/add)publicResultaddUser(RequestBodyUseruser){// 模拟新增用户业务System.out.println(新增用户user);// 返回统一响应结果returnResult.success(新增用户成功);}}// 实体类UserclassUser{privateIntegerid;privateStringname;privateIntegerage;// getter/setter 省略}// 统一响应结果类ResultclassResult{privateIntegercode;privateStringmsg;privateObjectdata;// 静态工具方法success/error 省略}✅ 场景 2传统前后端一体 → 跳转页面返回视图// 只加Controller方法返回视图名称不是JSONControllerRequestMapping(/page)publicclassPageController{// 处理GET请求URLhttp://localhost:8080/page/indexGetMapping(/index)publicModelAndViewindex(){// 创建ModelAndView对象封装数据视图地址ModelAndViewmvnewModelAndView();// 1. 往Model中存数据前端页面可以获取mv.addObject(msg,欢迎使用Spring MVC);// 2. 设置视图名称视图解析器会拼接前缀后缀mv.setViewName(index);// 最终视图路径/WEB-INF/views/index.jspreturnmv;}}七、Spring MVC 的核心优势为什么是 Java Web 的首选无缝集成 Spring 生态Spring MVC 是 Spring 的核心模块天然兼容 Spring 的 IoC 容器、AOP、事务管理、注解驱动等特性无需额外整合开发无缝衔接极致解耦基于 MVC 设计模式三层职责分离代码可读性、可维护性、扩展性极强轻量级无侵入核心依赖少项目启动快注解驱动开发对业务代码几乎无侵入功能强大且灵活支持 RESTful 风格、文件上传下载、拦截器、异常统一处理、数据校验、跨域请求等所有 Web 开发必备功能高性能底层设计简洁没有多余的封装请求处理效率高能支撑高并发场景社区成熟Spring 生态是 Java 后端的事实标准文档齐全、问题解决方案多几乎所有 Java 后端岗位都要求掌握。总结Spring MVC 是Spring 的核心模块基于 MVC 设计模式的轻量级 Java Web 框架Java Web 开发的主流技术MVC 三层Model数据 业务、View展示、Controller调度核心是解耦Spring MVC 的核心是 DispatcherServlet前端控制器所有请求统一入口调度其他组件核心执行流程请求→DispatcherServlet→HandlerMapping→HandlerAdapter→Controller→ModelAndView→ViewResolver→View→响应核心注解Controller/RestController、RequestMapping及简化版GetMapping/PostMapping、ResponseBody、RequestParam/PathVariable/RequestBody主流开发方式前后端分离用RestController返回 JSON是目前企业开发的标配核心优势无缝集成 Spring、极致解耦、轻量灵活、功能强大、社区成熟。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询