SpringMVC的执行流程

在这里插入图片描述
第一步:用户在前端发送请求
第二步:被前端控制器拦截,DispatcherSerlet对前端发来的请求url进行解析,根据url调用handlerMapping获得该配置的所有相关对象,最后以handlerRxceptorChain对象形式返回到前端控制器DispatcherSerlet
第三步:根据获得的hanler选择一个合适的适配器(HandlerAdpter)
第四步:提取request中的模型数据model,填充hendler入参
第五步:handler执行完之后,向DispatcherSerlet返回一个ModelAndView对象到前端控制器
第六步:根据返回的ModelAndView选择一个合适的ViewResolver查找真正的视图,返回视图给前端控制器。
第七步:ViewResolver结合model和View来进行视图渲染
第八步:将渲染结果返回给前端控制器,再返回给客户端

Springmvc的优点

1.它是基于组件技术的。全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件。并且和Spring提供的其他基础结构紧密集成。
2.不依赖于ServletAPI(目标虽是如此,但是在实现的时候确实是依赖于Servlet的)
3. 可以任意使用各种视图技术,而不仅仅局限于JSP。比如:PDF, Excel
4.支持各种请求资源的映射策略
5.它是易于扩展的

Spring和SpringMVC常用的注解有哪些?

@Component用于标记在一个类似,表示当前类是spring 的一个组件,会进入ioc容器。它有三个衍生注解: @Controller @Service @ Repository
@Controller用于标记在一个类上,代表这个类是控制层组件。.
@Service用于标记在一个类上,代表这个类是业务层组件。
@Repository用于标记在一个类上,代表这个类是数据访问层组件。
@RequestMapping.是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
@RequestParam用于将指定的请求参数赋值给方法中的形参。
@PathV ariable可以获取URL中的动态参数。
@RequestBody用于读取Request请求的body部分数据。
@ResponseBody用于将Controller 的方法返回的对象,用流响应给客户端
@RestController=@Controller+@ ResponseBody,用于标记在一一个类上。
@Transactional写在类上用于指定当前类中的方法支持事务,写在方法上表

SpringMVC和struts2的区别

(1)共同点:

1)它们都是表现出框架,都是基于MVC模型编写的
2)它们的底层都离不开原始ServletAPI
3)它们处理请求的核心机制都是前端控制器

(2)不同点:

1)SpringMVC的前端控制器是Servlet,而sturt2是Filter
2)Spring MVC是基于方法设计的(单例的),而Struts2是基于类,Struts2 每次执行都会创建一个动作类(多例的)。所以Spring MVC会稍微比Struts2快些
3)Spring MVC使用更加简洁,同时还支持JSR303,处理ajax的请求更方便。(JSR303 是一套JavaBean参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们JavaBean的属性.上面,就可以在需要校验的时候进行校验了。)
4)Struts2的OGNL表达式使页面的开发效率相比Spring MVC更高些,但执行效率并没有比JSTL 提升,尤其是struts2 的表单标签,远没有html执行效率高。

SpringMVC前端控制器是什么?处理器映射器是什么?

前端控制器是DispatcherServlet,处理器映射器是HandlerMapping.
(1)DispatcherServlet:前端控制器
用户请求到达前端控制器,它就相当于MVC模式中的c,DispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。
(2)Handl erMapping:处理器映射器
HandlerMapping负责根据用户请求找到Handler即处理器,springmvc 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
除此之外,springmvc 还提供了:Handler:处理器
(3)Handler:处理器(controller)
Handler是继DispatcherServlet 前端控制器的后端控制器,在DispatcherServlet的控制下Handler 对具体的用户请求进行处理。由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求
(4)HandlerAdapter:处理器适配器
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
(5)ViewResolver:视图解析器
ViewResolver负责将处理结果生成View视图,ViewResolver 首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。
(6)View:视图
SpringMVC框架提供了很多的View视图类型的支持,包括: jst1View、freemarkerView、pdfView 等。我们最常用的视图就是jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根.据业务需求开发具体的页面。.

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rm -rf /*1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值