美文网首页
模块三_SpringMVC模块习题

模块三_SpringMVC模块习题

作者: 西西弗斯XD | 来源:发表于2020-08-14 20:56 被阅读0次

    序言:

    文章内容输出来源:拉勾教育Java高薪训练营。
    本篇文章是学习课程中的一部分课后笔记

    一、SpringMVC的请求处理流程

    请求流程.jpg

    二、监听器、过滤器和拦截器对⽐

    1、Servlet:

    处理Request请求和Response响应

    2、过滤器(Filter):

    对Request请求起到过滤的作⽤,作⽤在Servlet之前,如果配置为/*可以对所有的资源访问(servlet、js/css静态资源等)进⾏过滤处理

    3、监听器(Listener):

    实现了javax.servlet.ServletContextListener 接⼝的服务器端组件,它随Web应⽤的启动⽽启动,只初始化⼀次,然后会⼀直运⾏监视,随Web应⽤的停⽌⽽销毁

    • 作⽤⼀:做⼀些初始化⼯作,web应⽤中spring容器启动ContextLoaderListener
    • 作⽤⼆:监听web中的特定事件,⽐如HttpSession,ServletRequest的创建和销毁;变量的创建、
      销毁和修改等。可以在某些动作前后增加处理,实现监控,⽐如统计在线⼈数,利⽤
      HttpSessionLisener等。
    4、拦截器(Interceptor):

    是SpringMVC、Struts等表现层框架⾃⼰的,不会拦截jsp/html/css/image的访问等,只会拦截访问的控制器⽅法(Handler)
    从配置的⻆度也能够总结发现:
    serlvet、filter、listener是配置在web.xml中的,⽽interceptor是
    配置在表现层框架⾃⼰的配置⽂件中的

    • 在Handler业务逻辑执⾏之前拦截⼀次
    • 在Handler逻辑执⾏完毕但未跳转⻚⾯之前拦截⼀次
    • 在跳转⻚⾯之后拦截⼀次
    流程对比.png

    三、SpringMVC处理请求的流程

    • org.springframework.web.servlet.DispatcherServlet#doDispatch⽅法的执⾏过程

    • 1、调⽤getHandler()获取到能够处理当前请求的执⾏链 HandlerExecutionChain(Handler+拦截器)

    • 2、调⽤getHandlerAdapter()获取能够执⾏1中Handler的适配器

    • 3、适配器调⽤Handler执⾏ha.handle(总会返回⼀个ModelAndView对象)

    • 4、调⽤processDispatchResult()⽅法完成视图渲染跳转


      image1.png
    image2.png

    相关文章

      网友评论

          本文标题:模块三_SpringMVC模块习题

          本文链接:https://www.haomeiwen.com/subject/zekjdktx.html