其他分享
首页 > 其他分享> > Day65

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)、ModelAttribute注解标注的方法提前运行

2)、执行目标方法的时候(确定目标方法用的参数)

1)、有注解

2)、没注解:

1)、看是否Model,Map以及其他的

2)、如果是自定义类型

1)、从隐含模型中看有没有,如果有就从隐含模型中拿

2)、如果没有,再看看是否SessionAttribute标注的属性,如果有就从Session中拿,如果拿不到就会抛异常

3)、都不是,就利用反射创建对象。

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