SpringMVC

SpringMVC,第1张

SpringMVC springmvc:

三层 本质是对sevlet的封装,

只用一个dispatcherServlet, 执行handler


  springmvc
  org.springframework.web.servlet.DispatcherServlet
  
    contextConfigLocation
    classpath:springmvc.xml
  

ServletContextListener

https://www.cnblogs.com/javahr/p/8408857.html

servlet mapping:



/

InternalResourceViewResolver


    
    

/

使用这个类:

org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser

mvc:annotation-driven/是告知Spring,我们启用注解驱动。然后Spring会自动为我们注册上面说到的几个Bean到工厂中,来处理我们的请求

RequestMappingHandlerMapping

RequestMappingHandlerAdapter

RequestMappingHandlerAdapter实现了HandlerAdapter接口,顾名思义,表示handler的adapter,这里的handler指的是Spring处理具体请求的某个Controller的方法,也就是说HandlerAdapter指的是将当前请求适配到某个Handler的处理器。RequestMappingHandlerAdapter是HandlerAdapter的一个具体实现,主要用于将某个请求适配给@RequestMapping类型的Handler处理。

https://blog.csdn.net/weixin_34007020/article/details/92608532

springmvc接受Date类型会报错

添加注解

@DateTimeFormat(pattern = "yyyy-MM-dd")

https://zhuanlan.zhihu.com/p/112632649

dispatcher servlet 初始化

org.springframework.web.servlet.DispatcherServlet#initStrategies

protected void initStrategies(ApplicationContext context) {
		initMultipartResolver(context);
		initLocaleResolver(context);
		initThemeResolver(context);
		initHandlerMappings(context);
		initHandlerAdapters(context);
		initHandlerExceptionResolvers(context);
		initRequestToViewNameTranslator(context);
		initViewResolvers(context);
		initFlashMapManager(context);
	}
@RequestMapping注解形式

mappingRegistry

mappingLookUp

存储到了 一个linkedHashmap集合中

@RequesstParam 和@PathVariable

用@RequestParam请求接口时,URL是:

http://www.test.com/user/getUserById?userId=1

用@PathVariable请求接口时,URL是:

http://www.test.com/user/getUserById/2
HandlerInterceptorAdapter

拦截器,

从执行链中拿到所有的拦截

springmvc 参数注入:

org.springframework.web.method.support.InvocableHandlerMethod#invokeForRequest

拦截器执行流程

filter 对Request请求起到过滤的作用, /*拦截所有资源

监听器:listner:

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

拦截器(Interceptor):是SpringMVC、 Struts等表现层框架⾃⼰的,不会拦截
jsp/html/css/image的访问等,只会拦截访问的控制器⽅法(Handler)。

preHandle()⽅法会按照配置⽂件中拦截器的配置顺序执⾏,⽽它们的postHandle()⽅法和afterCompletion()⽅法则会按照配置顺序的反序执⾏ 。

DispatcherServlet 继承结构

handlerAdapter


Handler类别对应适配器描述ControllerSimpleControllerHandlerAdapter标准控制器,返回ModelAndViewHttpRequestHandlerHttpRequestHandlerAdapter业务自行处理 请求,不需要通过modelAndView 转到视图ServletSimpleServletHandlerAdapter基于标准的servlet 处理HandlerMethodRequestMappingHandlerAdapter基于@requestMapping对应方法处理

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5677784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存