做网站的分辨率,咸阳软件开发公司,网店卖什么最赚钱,网站制作一条龙一、SpringMVC简介
1-介绍 Spring Web MVC是基于Servlet API构建的原始Web框架#xff0c;从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块的名称#xff08; spring-webmvc #xff09;#xff0c;但它通常被称为“Spring MVC”。 在控制层…一、SpringMVC简介
1-介绍 Spring Web MVC是基于Servlet API构建的原始Web框架从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块的名称 spring-webmvc 但它通常被称为“Spring MVC”。 在控制层框架历经Strust、WebWork、Strust2等诸多产品的历代更迭之后目前业界普遍选择了SpringMVC作为Java EE项目表述层开发的首选方案。之所以能做到这一点是因为SpringMVC具备如下显著优势 Spring 家族原生产品与IOC容器等基础设施无缝对接 表述层各细分领域需要解决的问题全方位覆盖提供全面解决方案 代码清新简洁大幅度提升开发效率 内部组件化程度高可插拔式组件即插即用想要什么功能配置相应组件即可 性能卓著尤其适合现代大型、超大型互联网项目要求 原生的Servlet API开发代码片段
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userName request.getParameter(userName);System.out.println(userNameuserName);
} 基于SpringMVC开发代码片段
更加专注的进行业务逻辑的开发
RequestMapping(/user/login)
public String login(RequestParam(userName) String userName, Integer id){log.debug(userNameuserName);return result;
} 2-主要作用以及优点
1主要作用 SSM框架构建起单体项目的技术栈需求其中的SpringMVC负责表述层控制层实现简化 SpringMVC的作用主要覆盖的是表述层例如 最终总结 1. 简化前端参数接收形参列表 2. 简化后端数据响应在返回值中体现 3. 以及其他...... 2优点 1.基于MVC架构 基于MVC架构功能分工明确。解耦合 2.容易理解上手快使用简单。 就可以开发一个注解的SpringMVC项目SpringMVC也是轻量级的jar很小。不依赖的特定的接口和类。 3.作为Spring框架一部分能够使用Spring的IoC和Aop。方便整合Strtus,MyBatis,Hiberate,JPA等其他框架。 4.SpringMVC强化注解的使用在控制器ServiceDao都可以使用注解。方便灵活。 使用Controller创建处理器对象,Service创建业务对象Autowired或者Resource在控制器类中注入Service, Service类中注入Dao。 3-核心组件以及调用流程理解
1SpringMVC含义 MVC是一种软件架构的思想将软件按照模型、视图、控制器来划分 M: Model模型层指工程中的JavaBean作用是处理数据。JavaBean分为两类实体类Bean专门存储业务数据的如 Student、User 等业务处理Bean指Service或Dao对象专门用于处理业务逻辑和数据访问。V: View视图层指工程中的html或jsp等页面作用是与用户进行交互展示数据C: Controller控制层指工程中的servlet作用是接收请求和响应浏览器 Spring MVC与许多其他Web框架一样是围绕前端控制器模式设计的其中中央 Servlet DispatcherServlet 做整体请求处理调度 除了DispatcherServletSpringMVC还会提供其他特殊的组件协作完成请求处理和响应呈现。 2完整流程表述
1客户端发起请求用户通过浏览器或其他客户端想服务器发起http请求 你在浏览器中输入了一个网址发起了一个请求 2请求到达前端控制器DispatcherServlet请求首先被DispatcherServlet接收它是SpringMVC的前端控制器是整个流程的起点。 请求到达了SpringMVC的 总指挥DispatcherServlet。 3处理器映射器Handler Mapping确定处理器 DispatcherServlet使用处理器映射器来确定请求应该由哪个控制器Handler处理。处理器映射器根据配置或注解找到匹配的处理器。 DispatcherServlet 找到了一个处理器Controller来处理你的请求。 4控制器处理请求找到匹配的控制器后控制器执行相应的方法来处理请求。这个方法可能包含业务逻辑、数据处理等。 这个处理器Controller执行一些操作可能涉及到数据库查询、数据处理等。 5模型处理数据 控制器可以与模型Model交互进行数据处理和业务逻辑。模型通常包含应用程序的数据和业务规则。 处理器Controller把需要显示的数据交给了一个“视图”View。 6视图解析器View Resolver确定视图 控制器处理完请求后它返回一个逻辑视图的名称。视图解析器将逻辑视图名称解析为实际的视图View这可以是JSP、Thymeleaf等。 视图View的任务是把数据渲染成最终的页面内容。 7视图渲染 视图负责将模型中的数据渲染到视图中生成最终的响应内容。这可以是HTML、JSON等格式。 最终渲染好的页面通过 DispatcherServlet 返回给你的浏览器。 8响应发送到客户端 渲染后的视图作为响应发送回DispatcherServlet。 返回 ing 。 9响应返回客户端 DispatcherServlet将最终的响应返回给客户端完成了整个请求-响应的循环。 好了 你在浏览器上看到了页面的内容。 3SpringMVC涉及组件理解 DispatcherServlet : SpringMVC提供我们需要使用web.xml配置使其生效它是整个流程处理的核心所有请求都经过它的处理和分发[ CEO ] HandlerMapping : SpringMVC提供我们需要进行IoC配置使其加入IoC容器方可生效它内部缓存handler(controller方法)和handler访问路径数据被DispatcherServlet调用用于查找路径对应的handler[秘书] HandlerAdapter : SpringMVC提供我们需要进行IoC配置使其加入IoC容器方可生效它可以处理请求参数和处理响应数据数据每次dispatcherServlet都是通过handlerAdapter间接调用handler他是handler和dispatcherServlet之间的适配器[经理] Handler : handler又称处理器他是Controller类内部的方法简称是由我们自己定义用来接收参数向后调用业务最终返回响应结果[打工人] ViewResovler : SpringMVC提供我们需要进行IoC配置使其加入IoC容器方可生效视图解析器主要作用简化模版视图页面查找的但是需要注意前后端分离项目后端只返回JSON数据不返回页面那就不需要视图解析器所以视图解析器相对其他的组件不是必须的[财务] 3图解说明 4-问题与思考
1、什么是MVC架构它的核心思想是什么 MVC模型-视图-控制器是一种软件设计模式将应用程序分为三个部分分别是模型负责处理数据和业务逻辑、视图负责显示用户界面、控制器负责处理用户输入和管理流程。MVC的核心思想是分离关注点使得各部分可以独立开发和维护。 2、在没有MVC之前Web应用是如何组织和开发的存在哪些问题 在没有MVC之前Web应用通常采用紧密耦合的设计HTML、业务逻辑和数据处理混合在一起导致难以维护和扩展。 3、为什么MVC成为一种流行的设计模式而且在Web开发中得到广泛应用MVC架构解决了那些方面的问题 MVC架构的引入解决了分离关注点、提高可维护性、降低耦合度的问题。它使得开发者可以更好地组织代码降低了变更一个部分对其他部分的影响提高了代码的可重用性和可测试性。 4、所以什么是 SpringMVC ? SpringMVC是Spring框架中的一个模块用于支持基于模型-视图-控制器MVC设计模式的Web应用程序开发。它提供了一种结构化的方式来组织和开发Web应用使得代码更加模块化、可维护并且易于扩展。SpringMVC是建立在核心Spring框架之上的因此可以很好地集成Spring的其他模块。 二、SpringMVC快速体验
1-体验场景需求 2-配置分析 1. DispatcherServlet在web.xml配置设置处理所有请求 2. HandlerMapping,HandlerAdapter,Handler需要加入到IoC容器供DS调用 3. Handler需要配置到HandlerMapping中供DS查找 3-准备项目
1创建项目 springmvc-base-quick 注意需要转成maven/web程序 2导入依赖
propertiesspring.version6.0.6/spring.versionmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding
/propertiesdependencies!-- springioc相关依赖 --dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${spring.version}/version/dependency!-- web相关依赖 --!-- 在 pom.xml 中引入 Jakarta EE Web API 的依赖 --!--在 Spring Web MVC 6 中Servlet API 迁移到了 Jakarta EE API因此在配置 DispatcherServlet 时需要使用Jakarta EE 提供的相应类库和命名空间。错误信息 “‘org.springframework.web.servlet.DispatcherServlet’is not assignable to ‘javax.servlet.Servlet,jakarta.servlet.Servlet’” 表明你使用了旧版本的Servlet API没有更新到 Jakarta EE 规范。--dependencygroupIdjakarta.platform/groupIdartifactIdjakarta.jakartaee-web-api/artifactIdversion9.1.0/versionscopeprovided/scope/dependency!-- springwebmvc相关依赖 --dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion${spring.version}/version/dependency/dependencies 3Controller声明
Controller
public class HelloController {//handlers/*** handler就是controller内部的具体方法* RequestMapping(/springmvc/hello) 就是用来向handlerMapping中注册的方法注解!* ResponseBody 代表向浏览器直接返回数据!*/RequestMapping(/springmvc/hello)ResponseBodypublic String hello(){System.out.println(HelloController.hello);return hello springmvc!!;}
}4SpringIoC配置
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd!-- 扫描controller对应的包,将handler加入到ioc--context:component-scan base-packagecom.atguigu.controller /!-- 方案1: 手动配置handlerMapping 和 handlerAdapter --!-- handlerMappingRequestMappingHandlerMapping 就是springmvc提供的组件支持RequestMapping方式注册的handler--bean classorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping /!-- handlerAdapterRequestMappingHandlerAdapter 就是springmvc提供的组件支持RequestMapping方式注册的handler--bean classorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter /!-- 方案2: 不配置解释: springmvc会在启动的时候,如果发现我们没有配置handlerMapping,handlerAdapter,viewResolver就会加载spring-webmvc包下的配置DispatcherServlet.properties下的组件!DispatcherServlet.properties:org.springframework.web.servlet.HandlerMappingorg.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping,\org.springframework.web.servlet.function.support.RouterFunctionMappingorg.springframework.web.servlet.HandlerAdapterorg.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter,\org.springframework.web.servlet.function.support.HandlerFunctionAdapter........所以,我们可以不同写,也会默认加载! 注意: 一旦你配置了,就不会加载对应的默认组件切记!!!--!-- viewResolver 不需要配置,因为我们不需要查找逻辑视图!!! --/beans 5web.xml配置 在一个MVC框架中首要任务是有效地接收并处理请求。 为了实现这一目标框架通常会设计一个前端控制器。 这个前端控制器位于框架的最前沿负责接收所有进入系统的请求。 选择在Servlet或者Filter中实现这一前端控制器。 这个前端控制器的任务不仅仅是作为请求的第一站更是核心调度管理的关键组件。 这样它在整个MVC框架中既是前端的门卫又是核心的调度者。 在Spring MVC中前端控制器是由DispatcherServlet来实现的。 ?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!-- 配置SpringMVC中负责处理请求的核心Servlet也被称为SpringMVC的前端控制器 --servletservlet-nameDispatcherServlet/servlet-name!-- DispatcherServlet的全类名 --servlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class!-- 通过初始化参数指定SpringMVC配置文件位置 --init-param!-- 如果不记得contextConfigLocation配置项的名称可以到DispatcherServlet的父类FrameworkServlet中查找 --param-namecontextConfigLocation/param-name!-- 使用classpath:说明这个路径从类路径的根目录开始才查找 --param-valueclasspath:spring-mvc.xml/param-value/init-param!-- 作为框架的核心组件在启动过程中有大量的初始化操作要做这些操作放在第一次请求时才执行非常不恰当 --!-- 我们应该将DispatcherServlet设置为随Web应用一起启动 --load-on-startup1/load-on-startup/servletservlet-mappingservlet-nameDispatcherServlet/servlet-name!-- 对DispatcherServlet来说url-pattern有两种方式配置 --!-- 方式一配置“/”表示匹配整个Web应用范围内所有请求。这里有一个硬性规定不能写成“/*”。只有这一个地方有这个特殊要求以后我们再配置Filter还是可以正常写“/*”。 --!-- 方式二配置“*.扩展名”表示匹配整个Web应用范围内部分请求 --url-pattern//url-pattern/servlet-mapping/web-app 在 SpringBoot 中传统的web.xml进行Servlet配置的方式已经不需要了。Spring Boot提供了默认的Servlet配置并通过自动检测和配置使得大部分情况下无需手动干预。(默认不用配置) 4-测试成功 5-总结 浏览器发送请求若请求地址符合前端控制器的url-pattern该请求就会被前端控制器DispatcherServlet处理。前端控制器会读取SpringMVC的核心配置文件通过扫描组件找到控制器将请求地址和控制器中RequestMapping注解的value属性值进行匹配若匹配成功该注解所标识的控制器方法就是处理请求的方法。处理请求的方法需要返回一个字符串类型的视图名称该视图名称会被视图解析器解析加上前缀和后缀组成视图的路径通过Thymeleaf对视图进行渲染最终转发到视图所对应页面