当前位置: 首页 > wzjs >正文

国家建设部投诉网站企业文化培训

国家建设部投诉网站,企业文化培训,乌鲁木齐哪里有做网站的公司,python语言骗局服务器启动时,创建spring容器;dispatcherServlet启动时,直接创建springmvc容器初始化一次,实现了springmvc和spring的整合。 SpringMVC里的组件 处理器映射器(HandlerMapping)负责匹配映射路径对应的Handl…

        服务器启动时,创建spring容器;dispatcherServlet启动时,直接创建springmvc容器初始化一次,实现了springmvc和spring的整合。

SpringMVC里的组件

        处理器映射器(HandlerMapping)负责匹配映射路径对应的Handler,返回可执行的处理器链对象HandlerExecutionChain对象。

        处理器适配器(HandlerAdapter)负责匹配HandlerExecutionChain对应的适配器进行处理器调用,返回视图模型对象

        视图解析器(ViewResolver)负责对视图模型对象进行解析。

三者简而言之的职责就是定位,执行,跳转。

@RequestParam的属性

        value是对应的参数名;required是是否必须,默认为false,如果为true的话,将必须填写该参数,若没有则报错;defaultValue是默认参数值;

        还有特别注意用基本类型接收不能为空,所以一般用包装类去接收参数

文件上传

@RequestHeader

        @RequestHeader加参数获取指定的请求头数据,不加获取所有的请求头数据

@CookieValue

        @CookieValue获取客户端携带的Cookie数据,比@RequestHeader更深了一层

@RequestAttribute

        直接从request域里获取数据,相当于getAttribute

注意

        HttpServletRequest和HttpServletResponse这种不需要去加注解注入,直接加到局部变量上即可,若发现局部变量上有这种参数,springMVC会帮其自动注入。

        无论是<mvc:resources>还是<mvc:default-servlet-handler>标签都会向容器内注入一个handlerMapping,会覆盖掉本身的handlerMapping。导致@RequestMapping这种映射注解无法解析,所以需要手动配置一个handlerMapping的Bean,覆盖这个覆盖。

        <mvc:annotation-dirven>标签会自动注册RequestMappingHandlerMapping、注册RequestMppingHandlerAdapter并注入Json消息转换器等

        转发使用return “forward:/index.jsp”的形式,重定向使用return “redirect:/index.jsp”,ModelAndView的形式如下:

@ResponseBody

        @ResponseBody可以通知SpringMVC把它当作响应体的方式做出响应,而不是视图。

Interceptor

    Interceptor和Filter比较

        流程先过filter再到DispatcherServlet再分发到具体的Controller,Filter是javaweb的原生技术,可以拦截一切请求并过滤,早于任何Servlet;Interceptor属于SpringMVC技术,只能拦截进入了SpringMVC的请求,主要拦截Controller请求,晚于DispatcherServlet执行。

    Interceptor的接口方法

        preHandle对拦截到的请求进行预处理,返回true放行执行处理器方法,false表示不放行。参数:Handler是拦截到的Controller方法。

        postHandle可以对controller之后执行,对拦截到的请求进行后处理,比如对模型数据和视图等进行修改。参数:Handler是拦截到的Controller方法,modelAndView是返回的视图模型对象。

        afterCompletion在视图渲染完后(整个流程完毕之后),进行最后的处理,若请求流程中有异常,可以处理异常对象。参数:Handler是拦截到的Controller方法,ex是异常对象。

        执行顺序类似一个双向链表,先从前往后,1(pre) ~> 2 (pre) ~> 3 (pre) ~> 3(post) ~> 2(post) ~> 1(post) ~> 3(after) ~> 2(after) ~> 1(after),就是先是从头节点next到最后, 然后再after到最前面。

        注意:当前的after执不执行只和当前的preHandle的返回结果有关系,为false,则不执行,post的执不执行在于是否接收到了controller的执行结果,有一个pre为false,都将导致链路上的所有post都无法执行。举个例子若在3处pre返回false,,流程就变成  1(pre) ~> 2 (pre) ~> 3 (pre) ~> 2(after) ~> 1(after)

@EnableWebMvc注解解析

        @EnableWebMvc  =  mvc的注解驱动(加mapping,adapter等等bean) +  注册静态资源处理器   配置拦截器。

        注解驱动实现直接是使用@Bean注解注入了所需要的bean,处理器和拦截器则是通过自动注入WebMvcConfigurer类型的集合,来搜寻容器中WebMvcConfigurer类型的bean,通过实现WebMvcConfigurer重写它的一系列方法。

全注解原理

        在servlet3.0环境中,web容器提供了一个接口,实现了该接口后,就会在对应的类加载路径的META-INF/services目录里创建一个该接口全限定名的配置文件,指定该接口的实现类使用全限定名的方式,然后web容器启动后就会运行该实现类,完成一些初始化操作。

        然后Spring就对此特性进行了实现,所以我们只需要去实现Spring提供好的抽象类并重写其中的一些方法即可,比如:Spring容器创建配置类的配置,SpringMVC容器创建配置类的配置,映射路径配置等。

DispatcherServlet

        dispatcherServlet初始化主要是获得了一个SpringMVC的容器,并设置了一个parent就是Spring容器,若没有这个SpringMVC容器就会去创建;还有通过监听,继承等机制最终实现了九大组件的Bean注入。

        那HandlerMapping组件举例,他的注册流程就是检查Spring容器内有没有HandlerMapping类型的Bean,若有则注册已经有的。若没有,则注册默认的。

        发请求的时候,最终调用doDispatch方法,里面调用了getHandler方法,就是去遍历HandlerMapping集合,去用HandlerMapping执行一个方法去获得一个Handler,然后使用这个Handler根据条件(作用范围等)组装成一个Interceptor链并和handler组成一个Chain对象并返回。若获得不到Handler就用下一个HandlerMapping,这就实现了静态资源,接口的访问隔离,即使用不同的HandlerMapping去处理。若得到了Handler就直接方法返回了这个Chain。

        注意:HandlerAdaptar只会去执行目标方法,而不会去执行前后置方法,前后置方法由HandlerMapping去调用,因为它里面有拦截器链可以完成该操作。通过传参可以知道HandlerAdaptar执行目标方法必须需要HandlerMapping的前置条件,因为执行方法需要一个handler,在源码中恰恰是mappedHandler.getHandler()形式存在的,可以知道这个HandlerAdaptar所使用的handler是从HandlerMapping里获取的。

异常处理

        SpringMVC的异常处理主要有以下三种方式:

        简单异常处理器:使用SpringMVC中内置的异常处理器去处理SimpleMappingExceptionResolver,直接去注册Bean即可。

        自定义异常处理器:要去实现HandlerExceptionHandler,自定义异常去处理。它更加丰富参数上有request,response域等。

        注解方式:使用@ControllerAdvice + @ExceptionHandler 来处理。要返回JSON格式数据的话可以直接结合@ResponseBody或者直接使用组合注解@RestControllerAdivece。

http://www.dtcms.com/wzjs/443090.html

相关文章:

  • 广安发展建设集团门户网站谈谈对seo的理解
  • 网站设计制作一般多少钱百度在线翻译
  • 用层还是表格做网站快百度极速版
  • 现在学做网站赚钱吗推广品牌的策划方案
  • 中国建设银行北京分行门户网站公告免费网站推广软件下载
  • 网站建设的中期目标贵港seo
  • 哪里有专业做网站的网络优化公司
  • 网站预算怎么做企业网站建设方案策划
  • 自己本地可以做网站服务器搜索引擎技巧
  • ps做网站首页的尺寸北京专业seo公司
  • 品牌网站建设策北京百度竞价托管
  • 南京在线网站制作网络营销的基本方法
  • 代做吧机械网站常州百度关键词优化
  • 做网站的属于什么专业外链
  • 重庆网站建设外包公司排名安卓手机优化大师官方下载
  • 做微网站哪家好搜索引擎入口官网
  • 网络营销类网站百度搜索引擎首页
  • 实力网站建设电话中国行业数据分析网
  • 呼市赛罕区信息网站做一顿饭工作邢台网站公司
  • 泉州做妈祖雕像网站在seo优化中
  • .net怎么做网站百度指数官网
  • 做网站标配爱站网站长百度查询权重
  • 深圳网站建设哪家强网络推广专员是做什么的
  • 湖北建设厅考试网站百度小说排行
  • 网站开发 硬件环境百度关键词点击价格查询
  • 建网站的程序免费seo搜索引擎优化岗位要求
  • html模板 网站网络营销师官网
  • 网站做外链的技巧公司网站建设需要注意什么
  • 哪个公司做网站建设好四川游戏seo整站优化
  • 辽宁建设信息网站搜索引擎网址