标签:原因 header 相关 如何 有一个 ati 学习 模板 idea
上面是我们要做rest crud实验,所需要用到的一些资源。
把dao和entities这两个文件夹拷贝到工程当中。
解决复制过来的代码,里面的导包的问题:
静态资源,我们放在static文件夹下面:
启动项目访问的首页,默认是在静态资源文件夹下面的首页,如果你有的话,就是访问的是这个首页:
现在的要求就是,启动项目访问的时候,不要访问静态资源文件夹下面的index.html,要访问我们的templates文件夹当中的index.html:
那么应该怎么配置呢?
第一种配置的方法:写一个空的方法
为了来到首页,还要写个处理请求的方法,这种做好好low哦,好麻烦的。
我们应该采用配置类的方式,自己来配置一下。
第二种方式
通过之前的springboot当中对springmvc进行自动配置的原理学习,通过源码的阅读,我们知道了一个知识:所有的WebMvcConfigurerAdapter组件都是会一起起作用的。
所以,我们可以在我们自己的配置类当中,写一个方法,用来返回一个WebMvcConfigurerAdapter,然后在这个组件里面,添加视图映射,这样就可以了。具体的做法,就是下面的样子:
把这个index.html的名字修改为login.html
通过上面的做法,就能够实现,默认首页访问的时候,使用templates下面的login.html了。
引入bootstrap的maven依赖:
现在的资源引用的方式是这样的:
首先,我们添加上模板引擎的命名空间表达式:
然后修改login.html页面当中的样式引用:
用这些模板引擎的th标签有什么好处呢?
比方说,我们的项目名路径修改了:
访问是OK的。
使用了这些th标签之后,即便你的项目名访问路径配置修改了,这些资源引用都会自动加上项目名的访问路径的:
这就是为什么要变更一下页面当中的资源引用的原因。
想要通过浏览器的语言信息,来显示页面的国际化效果。
在springmvc的年代,如果要做这种国际化是需要这样的:
fmt:message
标签来取出来国际化的内容。在springboot当中,我们应该怎么做的呢?
创建一个文件夹,专门用来放国际化的配置文件:
我们首先写login.html的国际化配置文件,国际化的配置文件必须要是properties的:
这是默认的配置文件。
如果是中文的情况,我们就需要写一个:login+语言代码+国家代码.properties
。
当idea编辑器识别到,我们是要做国际化的配置文件的时候,还能够切换到国际化的视图:
再来添加一个英文的国际化配置文件:
接下来就开始写配置:
这样每一个国际化配置文件就都写好了:
在国际化的自动配置类当中,确实是有一个方法是返回了MessageRource对象。这个是一个管理国际化资源文件的对象。下面的代码当中的setBaseNames方法,意思就是设置基础名?什么叫做基础名呢?就是去掉语言代码和国家代码的。比如login_zh_CN.properties
这个文件当中的login就是基础名。
在下面这张图中,这个也是国际化自动配置类当中的代码,我们可以看到基础名就是叫做messages,从这里就说明了一个问题,就是我们的配置文件可以放在类路径下,叫messages.properties,有这么一个配置文件就可以配置使用国际化的功能了。
我们现在是自己写了国际化的配置文件,放在了类路径下面的i18n文件夹下面,所以,我们可以根据上面的描述,在application.properties当中,通过spring.messages配置来指定我们的基础名。
通过上面的配置,意思就是让我们前面自己写的国际化配置文件,让springboot自动配置的ResourceBundleMessageSource
对象管理了起来,管理起来,我们自己写的配置文件。
到了这里之后,就可以测试一下了。
查看一下浏览器的语言情况:
我们的浏览器的语言是中文。
取出来是取出来的,只不过是乱码了。
idea的setting当中的设置,都只是对当前项目的设置。
我们要设置idea全局的设置,可以去下面的这个地方:
这样再启动项目,就成功了:
切换浏览器的语言信息:
默认都是根据我们浏览器的语言信息,来进行国际化的展示。
现在上面的效果,我们不满意,我们有了一个新的需求:
点击上面的中文,就显示中文,点击上面的英文,就显示英文,如果不点击的情况下,就按照浏览器的语言设置情况,来显示国际化的信息。
如何实现点击按钮来实现呢?
这个跟我们springmvc当中的一个原理有关系。国际化之所以有效果,是因为国际化当中有一个重要的对象叫做locale(这个东西就是叫做区域信息对象)。只是说springmvc当中所有要获取区域信息对象的时候,有一个组件叫做LocaleResolver,这个组件的作用,就是获取区域信息对象。
看一下自动配置的springmvc当中,有没有跟这个LocalResolver相关的内容呢?
springboot也默认配置了区域信息解析器。上面的意思是,如果我们在属性当中指定了使用固定的,那么springboot就使用固定的,否则呢,使用的是AcceptHeaderLocaleResolver
。这个AcceptHeaderLocalResolver的作用,就是根据请求头拿到区域信息,进行解析,在这个方法当中,有下面的一个方法:
现在我们是想要点击按钮或者点击链接来实现切换,我们就可以把上面的这个LocaleResolver
区域信息解析器,换掉。不让springboot使用默认的区域信息解析器AcceptHeaderLocaleResolver
。
我们可以自己写一个LocaleResolver。
在模板引擎当中,参数是不用使用?
这种方式来写的。
编写我们自己的区域信息解析器:
我们这里也可以修改一下,如果链接戴上了,我们就是参数的,如果没有带,我们就用请求头的。
在我们的配置类当中,往容器当中添加一个LocaleResolver对象。
标签:原因 header 相关 如何 有一个 ati 学习 模板 idea
原文地址:https://www.cnblogs.com/gnuzsx/p/14428069.html