SpringBoot入门篇 03、员工管理系统(基于内存)(一)

简介: SpringBoot入门篇 03、员工管理系统(基于内存)(一)

前面准备工作(1-3)


一、准备好dao以及pojo


二、准备好静态资源以及导入thymeleaf依赖


三、将静态资源放置到static目录中,然后使用thymeleaf的语法格式来进行对url静态资源的指定


注意点:如果不适用thymeleaf中的语法来指定url,那么一旦在配置文件中更改server.servlet.context-path=/changlu虚拟目录,那么我们访问对应网址时,静态资源就不会跟随着加了虚拟目录一样增加。


原本:href="/js" 替换:th:href="@{/css/...}" 使用时需要html引入头部声明xmlns:th="http://www.thymeleaf.org"


关闭模板引擎的缓存(yaml配置文件):spring.thymeleaf.cache=false


自定义配置类中添加跳转路径,重写:


@Configuration
public class MyMvcConfig implements  WebMvcConfigurer{
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/index.html").setViewName("index");
    }
}


四、页面国际化


参考文章:SpringBoot日记——国际化篇


1、IDEA中创建i18n目录


通过在i18n目录中设置properteis文件


确保idea中的fileEncoding中都是UTF-8


Idea大概创建步骤



再添加一个login_zh_CN.properties就会进行合并,因为他们的前缀相同,idea就会识别login适配不同的版本



若是想在Bundle中再创建只需要右击选择如下,再添加对应的后缀即可为添加了不同版本





IDEA有一个操作更加来控制login三个版本不同的值



点击+好选择对应的key名



特别人性化,这样我们就能够进行一个键多个配置文件的值修改了!!!



2、配置文件配置国际化


MessageSourceAutoConfiguration类中messageSourceProperties()方法中返回的实体类是MessageSourceProperties


这个实体类中的basename属性是用来管理国际化文件的,默认是message。


那么若是想要自定义国际化,那么就要更改其配置在配置文件中:



# 配置i18n的真实路径
spring.messages.basename=i18.login


3、使用thymeleaf语法来显示国际化


当我们配置好对应的国际化之后,来使用thymeleaf语法来显示国际化的内容


使用语法:#{}



对于之后中英文进行自动转换同样需要发送请求,下面是两个超链接:


<!-- 使用@{}表示链接  ()中的内容表示url的参数 也就是url?key=value中?后的内容   -->
<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}">中文</a>|
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>


效果:



4、自定义配置LocalResolver



我们首先自定义一个配置类MyLocaleResolver:


package com.changlu.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;
@Configuration
public class MyLocaleResolver implements LocaleResolver {
    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
        String l = httpServletRequest.getParameter("l");
        //获取默认的Locale
        Locale locale = Locale.getDefault();
        //判断是否有参数
        if(!StringUtils.isEmpty(l)){
            //将对应中英文参数进行分割,并创建新的Locale,填充语言与城市
            String[] split = l.split("_");
            locale = new Locale(split[0],split[1]);
        }
        return locale;
    }
    @Override
    public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
    }
}



为了使这个配置类进行生效,我们继续在MyMvcConfig中让自定义国际化配置生效:


@Configuration
public class MyMvcConfig implements  WebMvcConfigurer{
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/index.html").setViewName("index");
        registry.addViewController("/404.html").setViewName("404");
        registry.addViewController("/dashboard.html").setViewName("dashboard");
        registry.addViewController("/list.html").setViewName("list");
    }
    //自定义的国际化组件就生效了!
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleResolver();
    }
}



效果展示:




原理分析


对于我们浏览器发送请求,都是会发送对应的请求语言,这跟我们对浏览器的设置是有关系的:



对于服务器端,那么我们也会有一个对应的方法来去进行获取这个请求的语言并进行自动配置,这个在springmvc中已经帮我们配置好了,对于springboot同样也已经做了自动配置,依旧是在WebMvcAutoConfiguration这个自动配置类里:


里面有一个自动配置的javaConfig,用于自动配置LocaleResolver



注意看红框,通过AcceptHeaderLocaleResolver获取到的实例来进行返回,我们来看下这个类



那么我们只需要把其中的resolveLocale()重写为自己指定的国际化并进行配置即可!!!


关键就是我们要定义一个自己的LocaleResolver类,并实现其方法即可,这也就是我为什么要自定义其类并通过@Bean来进行spring的自动装配!!!


普通使用

只需要在resources目录添加一个messages.properties,其中设置key与value,例如footer.qq=QQ:93997488


在template中只需要使用thymeleaf语法如th:text="#{footer.qq}"即可获取到,国际化则需要在yaml中设置包名。

相关文章
|
26天前
|
前端开发 Java 数据库
SpringBoot入门 - 对Hello world进行MVC分层
SpringBoot入门 - 对Hello world进行MVC分层
43 3
SpringBoot入门 - 对Hello world进行MVC分层
|
26天前
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
35 3
SpringBoot入门 - 添加内存数据库H2
|
1月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
33 4
|
1月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
119 48
|
19天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
38 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
26天前
|
Java 应用服务中间件 数据库连接
SpringBoot入门 - SpringBoot HelloWorld
SpringBoot入门 - SpringBoot HelloWorld
SpringBoot入门 - SpringBoot HelloWorld
|
26天前
|
Java Spring
SpringBoot入门 - 定制自己的Banner
SpringBoot入门 - 定制自己的Banner
18 2
SpringBoot入门 - 定制自己的Banner
|
26天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
42 1
SpringBoot入门(7)- 配置热部署devtools工具
|
1月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
16 1
 SpringBoot入门(3) - 对Hello world进行MVC分层
|
13天前
|
机器学习/深度学习 人工智能 缓存
【AI系统】推理内存布局
本文介绍了CPU和GPU的基础内存知识,NCHWX内存排布格式,以及MNN推理引擎如何通过数据内存重新排布进行内核优化,特别是针对WinoGrad卷积计算的优化方法,通过NC4HW4数据格式重排,有效利用了SIMD指令集特性,减少了cache miss,提高了计算效率。
32 3
下一篇
DataWorks