SpringBoot员工管理的项目——SpringBoot首页定制的操作和国际编码操作(课时十五)

简介: SpringBoot员工管理的项目——SpringBoot首页定制的操作和国际编码操作(课时十五)

SpringBoot员工管理的项目——SpringBoot首页定制的操作和国际编码操作(课时十五)

本博文完成的两个功能:

  1. 利用 Thymeleaf模板引擎完成员工管理系统的的首页定制
  2. 国际化编码格式操作
  <!--Thymeleaf  说明基于3.0.1 模板引擎-->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
        </dependency>
        <!-- lombok依赖包 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-java8time</artifactId>
        </dependency>

第一部分 利用 Thymeleaf模板引擎完成员工管理系统的的首页定制

观察下面的的几张图来思考一下问题 为什么在静态资源的index.html中:使用模板引擎和步使用模板引擎的差别为什么这么大呀?

在项目运行的过程中没有使用的模板引擎的运行效果图

 

 

这是我将项目完成成功后进行了拦截

 

本页面下面有中英文国际翻译如何实现

什么是Thymeleaf?

Thymeleaf是现代网络和服务器端Java模板引擎独立的环境中,能够处理HTML、XML、JavaScript、CSS和纯文本。


Thymeleaf的主要目的是提供一个优雅的和高度可维护的方式创建模板。 为了实现这一点,它基于的概念自然的模板注入其逻辑模板文件的方式不会影响模板被用来作为设计原型。 这提高了通信的设计和桥梁设计和开发团队之间的差距。


Thymeleaf也从一开始就被设计思想——特别是Web标准HTML5——允许您创建完全验证模板如果需要你。

Thymeleaf重点的表达式


官网的地址:        https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#standard-expression-syntax

下面的内容是上的表达式

我们将休息小杂货虚拟商店的发展学习的最重要的一个部分Thymeleaf标准方言:Thymeleaf标准表达式语法。

我们已经看到了两种类型的有效属性值表示在这个语法:消息和变量表达式

<p th:utext=”# {home.welcome}”>Welcome to our grocery store!</p>
<p>Today is: <跨度 th:文本=”今天的$ {}”>13 february 2011</跨度></p>

但是有更多类型的表达式和更有趣的细节去了解那些我们已经知道。 首先,让我们看到一个标准的快速摘要表达特点:

  1. 简单的表达式:
  1. 变量表达式:${...}
  2. 选择变量表达式:*{...}
  3. 消息表达式:#{...}
  4. 链接URL表达式:@{...}
  5. 分段表达式:~{...}


链接URL表达式:@{...} 利用这个表达式完成 员工管理系统的的首页定制 在index.html中修改下面的信息



以此类推吧所有的页面都改成模板引擎页面可识别

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

首页的的信息功能完成成功

第二部分  国际化编码格式操作 首先要明确 项目的编码格式为UTF-8

建立一个文件 il8n

il8n国际化 支持多国语言的web应用,根据客户端系统的语言类型返回对应的界面

“I18N”是“Internationalization”的缩写,意思是“国际化”

英语缩略词“I18N”经常作为“Internationalization”的缩写来使用,中文表示:“国际化”。本文将详细介绍英语缩写词I18N所代表英文单词,其对应的中文拼音、详细解释以及在英语中的流行度。此外,还有关于缩略词I18N的分类、应用领域及相关应用示例等。

“I18N”(“国际化)释义

  1. 英文缩写词:I18N
  2. 英文单词:Internationalization
  3. 缩写词中文简要解释:国际化
  4. 中文拼音:guó jì huà
  5. 缩写词分类:Computing
  6. 缩写词领域:Software

“I18N”是“Internationalization”的缩写,意思是“国际化”  UTF-8

新建了il8n的文件夹

 

login.properties

login.btn=登录
login.password=用户密码
login.tip=请用户登入
login.rememberme=记住我吗
lonin.username=用户名

 

package com.spring.springboot0907web.config;
import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;
//应为类型要求为WebMvcConfigurer,所以我们实现其接口
//可以使用自定义类扩展MVC的功能
public class MyLocaleResolver  implements LocaleResolver {
   //解析请求方式
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        //获得请求参数的语言参数
        String Iparameter = request.getParameter("l");
        System.out.println("我得到的元素是"+"__"+Iparameter);
        Locale locale = Locale.getDefault();//如果没有是默认
        if(!StringUtils.isEmpty(Iparameter)){
            //字符串分
            String[] split = Iparameter.split("_");
//            //国家地区
            locale= new Locale(split[0], split[1]);
        }
        return locale;
    }
//
}
//    //自定义国际化文件
    @Bean
    public LocaleResolver localeResolver() {
        return new MyLocaleResolver();
    }
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta name="description" content="">
  <meta name="author" content="">
  <title>Signin Template for Bootstrap</title>
  <!-- Bootstrap core CSS -->
  <link th:href="@{/css/bootstrap.min.css}" rel="stylesheet">
  <!-- Custom styles for this template -->
  <link th:href="@{/css/signin.css}" rel="stylesheet">
</head>
<body class="text-center">
<form class="form-signin" th:action="@{/user/login}">
  <img class="mb-4"  th:src="@{/img/bootstrap-solid.svg}" alt="" width="72" height="72">
  <h3 class="h3 mb-3 font-weight-normal" th:text="#{login.tip}" style="background-color: whitesmoke;
border: 2px solid white;background-clip: content-box;text-shadow: 1px 2px seashell">Please sign in</h3>
  <!--判断是否显示,使用if, ${}可以使用工具类,可以看thymeleaf的中文文档-->
  <!--/*@thymesVar id="msg" type="java"*/-->  
  <h1 style="color: red" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></h1>
  <label class="sr-only">Username</label>
  <input type="text"  name="username" class="form-control" th:placeholder="#{lonin.username}" required="" autofocus="">
  <label class="sr-only">Password</label>
  <input type="password"  name="password" class="form-control" th:placeholder="#{login.password}" required="">
  <div class="checkbox mb-3">
    <label>
      <input type="checkbox" value="remember-me" th:text="#{login.rememberme}">
    </label>
  </div>
  <button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login.btn}">Sign in</button>
  <p class="mt-5 mb-3 text-muted">2022年员工管理系统的登录页面</p>
  <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>
</form>
</body>
</html>
"C:\Program Files\Java\jdk1.8.0_171\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:D:\IDEA\com.text\IntelliJ IDEA 2020.1.2\lib\idea_rt.jar=64946:D:\IDEA\com.text\IntelliJ IDEA 2020.1.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_171\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\rt.jar;D:\maven-workspace\spaceVideospringboot\springboot0915\target\classes;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.7.3\spring-boot-starter-web-2.7.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter\2.7.3\spring-boot-starter-2.7.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot\2.7.3\spring-boot-2.7.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.7.3\spring-boot-autoconfigure-2.7.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.7.3\spring-boot-starter-logging-2.7.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\ch\qos\logback\logback-classic\1.2.11\logback-classic-1.2.11.jar;C:\Users\MZFAITHDREAM\.m2\repository\ch\qos\logback\logback-core\1.2.11\logback-core-1.2.11.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;C:\Users\MZFAITHDREAM\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.7.3\spring-boot-starter-json-2.7.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.3\jackson-databind-2.13.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.3\jackson-annotations-2.13.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.13.3\jackson-core-2.13.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.3\jackson-datatype-jdk8-2.13.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.3\jackson-datatype-jsr310-2.13.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.3\jackson-module-parameter-names-2.13.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.7.3\spring-boot-starter-tomcat-2.7.3.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.65\tomcat-embed-core-9.0.65.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.65\tomcat-embed-el-9.0.65.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.65\tomcat-embed-websocket-9.0.65.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-web\5.3.22\spring-web-5.3.22.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-beans\5.3.22\spring-beans-5.3.22.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-webmvc\5.3.22\spring-webmvc-5.3.22.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-aop\5.3.22\spring-aop-5.3.22.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-context\5.3.22\spring-context-5.3.22.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-expression\5.3.22\spring-expression-5.3.22.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-core\5.3.22\spring-core-5.3.22.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\springframework\spring-jcl\5.3.22\spring-jcl-5.3.22.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\webjars\npm\jquery\3.6.1\jquery-3.6.1.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\thymeleaf\thymeleaf-spring5\3.0.15.RELEASE\thymeleaf-spring5-3.0.15.RELEASE.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\thymeleaf\thymeleaf\3.0.15.RELEASE\thymeleaf-3.0.15.RELEASE.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\attoparser\attoparser\2.0.5.RELEASE\attoparser-2.0.5.RELEASE.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\unbescape\unbescape\1.1.6.RELEASE\unbescape-1.1.6.RELEASE.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\projectlombok\lombok\1.16.10\lombok-1.16.10.jar;C:\Users\MZFAITHDREAM\.m2\repository\org\thymeleaf\extras\thymeleaf-extras-java8time\3.0.4.RELEASE\thymeleaf-extras-java8time-3.0.4.RELEASE.jar" com.spring.springboot0907web.Springboot0907WebApplication
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.3)
2022-10-02 21:21:59.224  INFO 2628 --- [           main] c.s.s.Springboot0907WebApplication       : Starting Springboot0907WebApplication using Java 1.8.0_171 on HELLOWWORLD with PID 2628 (D:\maven-workspace\spaceVideospringboot\springboot0915\target\classes started by MZFAITHDREAM in D:\maven-workspace\spaceVideospringboot\springboot0915)
2022-10-02 21:21:59.229  INFO 2628 --- [           main] c.s.s.Springboot0907WebApplication       : No active profile set, falling back to 1 default profile: "default"
2022-10-02 21:22:00.747  INFO 2628 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2022-10-02 21:22:00.759  INFO 2628 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-10-02 21:22:00.760  INFO 2628 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.65]
2022-10-02 21:22:01.239  INFO 2628 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-10-02 21:22:01.239  INFO 2628 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1960 ms
2022-10-02 21:22:01.321  INFO 2628 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : Autowired annotation is not supported on static fields: private static java.lang.Integer com.spring.springboot0907web.dao.EmployeeDao.ininId
2022-10-02 21:22:01.547  INFO 2628 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
2022-10-02 21:22:01.760  INFO 2628 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2022-10-02 21:22:01.776  INFO 2628 --- [           main] c.s.s.Springboot0907WebApplication       : Started Springboot0907WebApplication in 3.092 seconds (JVM running for 4.79)
2022-10-02 21:22:11.779  INFO 2628 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-10-02 21:22:11.779  INFO 2628 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2022-10-02 21:22:11.781  INFO 2628 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
我得到的元素是__null
我得到的元素是__null
我得到的元素是__zh_CN
我得到的元素是__zh_CN
我得到的元素是__en_US
我得到的元素是__en_US

_zh_CN 中文      _en_US 美国

相关文章
|
14天前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
53 1
SpringBoot获取项目文件的绝对路径和相对路径
|
4天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
15 2
|
9天前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
30 8
|
1月前
|
JavaScript 前端开发 Java
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
这篇文章详细介绍了如何在前端Vue项目和后端Spring Boot项目中通过多种方式解决跨域问题。
334 1
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
|
16天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
40 2
|
16天前
|
前端开发 Java Spring
SpringBoot项目thymeleaf页面支持词条国际化切换
SpringBoot项目thymeleaf页面支持词条国际化切换
45 2
|
16天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
32 1
|
18天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
18天前
|
关系型数据库 MySQL Java
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
22 0
|
1月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
120 0