Day65
作者:互联网
Day65_SpringMVC国际化和异常处理
SpringMVC的国际化
1.写好国际化资源文件
2.让Spring的ResourceBoudleMessageSouce管理国际化资源文件。
3.直接去页面取值。
4.是按照浏览器带来语言信息决定的
Locale locale = request.getLocale();//获取浏览器的区域信息
SpringMVC中的区域信息是由区域信息解析器得到的
private LocaleResolver localeResolver;
所有用到区域信息的地方,都是用AcceptHeadlerLocaleResolver获取的。
自定义区域信息解析器
实现功能:点Enlish/中文 ,会切换界面显示语言。
重写区域信息解析器,就可以实现这个功能。
处理异常
页面渲染之前会处理异常。
1、给方法上随便写一个Exception,用来接收发生的异常
2、要携带异常信息不能给参数位置写Model
3、返回ModelAndView就行了。异常处理之后会返回一个ModleAndView
4、如果有多个@ExceptionHandler都能处理这个异常,精确优先。
5、全局异常和本类同时存在,本类优先。
集中处理所有异常
1、集中处理所有异常的类加入到IOC容器中
2、@ControllerAdvice专门处理异常的类
SpringMVC的运行流程
-
1、所有请求,前端控制器(DispatcherServlet)收到请求,调用doDispatch进行处理
-
2、根据HandlerMapping中保存的请求映射信息找到,处理当前请求的处理器执行链(包括拦截器)
-
3、根据当前处理器找到适配他的(HandlerAdapter)适配器
-
4、拦截器preHandle先执行
-
5、适配器执行目标方法,并返回ModelAndView
1)、ModelAttribute注解标注的方法提前运行
2)、执行目标方法的时候(确定目标方法用的参数)
1)、有注解
2)、没注解:
1)、看是否Model,Map以及其他的
2)、如果是自定义类型
1)、从隐含模型中看有没有,如果有就从隐含模型中拿
2)、如果没有,再看看是否SessionAttribute标注的属性,如果有就从Session中拿,如果拿不到就会抛异常
3)、都不是,就利用反射创建对象。
-
6、拦截器的postHandle执行
-
7、处理结果(页面渲染流程)
1)、如果有异常使用异常解析器处理异常;处理完后还会返回ModelAndView
2)、调用render进行页面渲染
1)、视图解析器根据视图名得到视图对象
2)、视图对象调用render进行渲染。
3)、执行拦截器的afterHandle
SpringMVC和Spring整合
目的:分工明确;
SpringMVC的配置文件就来配置和网站转发逻辑以及网站功能有关的(视图解析器、文件上传解析器、支持ajax,xxx)
Spring的配置文件来配置和业务有关的(事务控制、数据源、xxxx);
Spring和SpringMVC分容器。启动两个分容器。
两个分容器同时存在的话,默认的话,springmvc为子容器,spring为父容器.
子容器可以拿父容器的,可以的。
父容器要拿子容器,不可以的。
<!--SpringMVC.xml,只扫Controller和ControllerAdvice,其他给spring扫描 -->
<context:component-scan base-package ="com.sorrymaker" use-default-filters ="false">
<context:include-filter type ="annotation" expression ="org.springframework.stereotype.Controller"/>
<context:include-filter type ="annotation" expression = "org.springframework.web.bind.annotation.ControllerAdvice"/>
</context:component-scan>
<!--Spring.xml 扫除了Controller和ControllerAdvice以外所有的-->
<context:component-scan base-package ="com.sorrymaker">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
标签:解析器,容器,SpringMVC,视图,处理,Day65,异常 来源: https://www.cnblogs.com/sorrymaker/p/14882328.html