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中设置包名。

相关文章
|
14天前
|
存储 Java 数据库
Spring Boot 注册登录系统:问题总结与优化实践
在Spring Boot开发中,注册登录模块常面临数据库设计、密码加密、权限配置及用户体验等问题。本文以便利店销售系统为例,详细解析四大类问题:数据库字段约束(如默认值缺失)、密码加密(明文存储风险)、Spring Security配置(路径权限不当)以及表单交互(数据丢失与提示不足)。通过优化数据库结构、引入BCrypt加密、完善安全配置和改进用户交互,提供了一套全面的解决方案,助力开发者构建更 robust 的系统。
37 0
|
28天前
|
监控 Linux Python
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
114 27
|
1月前
|
人工智能 自然语言处理 Java
对话即服务:Spring Boot整合MCP让你的CRUD系统秒变AI助手
本文介绍了如何通过Model Context Protocol (MCP) 协议将传统Spring Boot服务改造为支持AI交互的智能系统。MCP作为“万能适配器”,让AI以统一方式与多种服务和数据源交互,降低开发复杂度。文章以图书管理服务为例,详细说明了引入依赖、配置MCP服务器、改造服务方法(注解方式或函数Bean方式)及接口测试的全流程。最终实现用户通过自然语言查询数据库的功能,展示了MCP在简化AI集成、提升系统易用性方面的价值。未来,“对话即服务”有望成为主流开发范式。
2100 7
|
1月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot中的全局异常处理——处理系统异常
本文介绍了在Spring Boot项目中如何通过创建`GlobalExceptionHandler`类来全局处理系统异常。通过使用`@ControllerAdvice`注解,可以拦截项目中的各种异常,并结合`@ExceptionHandler`注解针对特定异常(如参数缺失、空指针等)进行定制化处理。文中详细展示了处理参数缺失异常和空指针异常的示例代码,并说明了通过拦截`Exception`父类实现统一异常处理的方法。虽然拦截`Exception`可一劳永逸,但为便于问题排查,建议优先处理常见异常,最后再兜底处理未知异常,确保返回给调用方的信息友好且明确。
133 0
微服务——SpringBoot使用归纳——Spring Boot中的全局异常处理——处理系统异常
|
24天前
|
人工智能 自然语言处理 前端开发
20分钟上手DeepSeek开发:SpringBoot + Vue2快速构建AI对话系统
本文介绍如何使用Spring Boot3与Vue2快速构建基于DeepSeek的AI对话系统。系统具备实时流式交互、Markdown内容渲染、前端安全防护等功能,采用响应式架构提升性能。后端以Spring Boot为核心,结合WebFlux和Lombok开发;前端使用Vue2配合WebSocket实现双向通信,并通过DOMPurify保障安全性。项目支持中文语义优化,API延迟低,成本可控,适合个人及企业应用。跟随教程,轻松开启AI应用开发之旅!
|
3月前
|
前端开发 JavaScript Java
springboot图书馆管理系统前后端分离版本
springboot图书馆管理系统前后端分离版本
61 12
|
3月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
3月前
|
JavaScript Java 测试技术
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
3月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue的班级综合测评管理系统设计与实现(系统源码+文档+数据库+部署等)
✌免费选题、功能需求设计、任务书、开题报告、中期检查、程序功能实现、论文辅导、论文降重、答辩PPT辅导、会议视频一对一讲解代码等✌
|
3月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!

热门文章

最新文章