SpringMVC原理

发布于:2023-01-19 ⋅ 阅读:(172) ⋅ 点赞:(0)

服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序。

使用Java语言基本上都是开发B/S架构的程序,B/S架构又分成了三层架构

三层架构

表现层:web层/Controller层,用来和客户端进行数据交互的。表现层一般会采用MVC的设计模型

业务层:server层,处理公司具体的业务逻辑的

持久层:dao层(Data Access Object 数据访问对象),用来操作数据库的

 MVC(Model View Controller)模型视图控制器

Model:数据模型,JavaBean的类,用来进行数据封装。

View:指JSP、HTML用来展示数据给用户。

Controller:用来接收用户的请求,整个流程的控制器。用来进行数据校验等(Hibernate Validator)

SpringMVC三大组件:

HandlerMapping处理器映射器:

        作用:根据客户端请求的资源路径,查找匹配的Controller及 拦截器(类似过滤器)链

HandlerAdapter处理器适配器:

        作用:用于适配调用不同的Controller 执行Controller,得到模型和视图

ViewResolver视图解析器:

        作用:用于解析视图,根据视图路径找到真实视图(页面)

过滤器(Filter)和 拦截器Interceptor的区别?

拦截器(Interceptor)需要在SpringMVC.xml中配置,依赖于SpringMVC框架

过滤器(Filter)  需要在web.xml中配置,依赖于 Servlet 容器

1、拦截器是基于java的反射机制的,而过滤器是基于函数回调
2、拦截器不依赖与servlet容器,而过滤器依赖与servlet容器,
3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用
4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能
5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

SpringMVC原理

前端控制器(DispatcherServlet) 配置的DispatcherServlet把Tomcat的默认处理器覆盖掉了 DispatcherServlet没有处理静态资源的能力,但会将静态资源转交给Tomcat中的Servlet 处理
处理器映射(HandlerMapping) 根据客户端请求的资源路径,查找匹配的Controller及拦截器(类似过滤器)链 负责找Controller类,返回资源路径URL
处理器适配器(HandlerAdapter) 用于适配调用不同的Controller执行Controller,得到模型和视图 负责调用Controller类,封装视图和数据 ModelAndView

视图解析器(ViewResolver)

用于解析视图,根据视图路径找到真实视图(页面) 负责解析view 

拓展:DispatcherServlet配置成//*的区别:

  • 对JSP的处理不同。当客户端请求了xxx.jsp

  • 如果DispatcherServlet配置的是/*,不能正常访问JSP

    • /*是目录匹配,优先级高于扩展名匹配(Tomcat里有JspServlet,路径是*.jsp

    • 必定是由DispatcherServlet来处理JSP,但是DispatcherServlet不具备查找和处理jsp的能力,会报错

  • 如果DispatcherServlet配置的是/,可以正常访问JSP

    • /是缺省匹配,优先级低于扩展名匹配(Tomcat里有JspServlet,路径是*.jsp

    • 必定是由Tomcat来处理JSP,Tomcat本身具备查找和处理JSP的能力,可以正常访问JSP

映射路径的优先级:完全路径匹配 > 目录匹配 > 扩展名匹配 > 缺省匹配

映射路径的优先级:         /aa        >       /*       > *.jsp 或 *.do >  /

本文含有隐藏内容,请 开通VIP 后查看