SpringBoot学习5.10-SpringMVC-国际化

1.添加国际化解析器和拦截器

  • 国际化解析器:SessionLocaleResolver是国际化解析器的一种,比其他解析器灵活,用户可以选择国际化区域,将国际化信息设置在session中。可以在在该解析器中设定默认的语言。
  • 国际化拦截器:LocaleChangeInterceptor,设置拦截的参数(该参数可以在前台赋值,mvc将其保存到session中),该参数的值将作为国际化区域(语言)。
  • 注册国际化拦截器
package com.zyf.springMVC.international;
import java.util.Locale;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
/**
 * 添加国际化解析器和拦截器
 */
@Configuration
public class InternationalConfig implements WebMvcConfigurer {
	// 国际化解析器,bean的名称必须用"localeResolver"
	@Bean("localeResolver")
	public LocaleResolver initLocaleResolver() {
		// 可以将国际化信息设置在session中;比其他解析器灵活,用户可以选择国际化区域。
		SessionLocaleResolver slr = new SessionLocaleResolver();
		slr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);// 配置国际化区域为简体中文
		// slr.setDefaultLocale(Locale.US);// 配置国际化区域为美国英文
		return slr;
	}
	// 国际化拦截器
	private LocaleChangeInterceptor localeChangeInterceptor;
	@Bean
	public LocaleChangeInterceptor initLocaleChangeInterceptor() {
		if (null != localeChangeInterceptor) {
			return localeChangeInterceptor;
		}
		localeChangeInterceptor = new LocaleChangeInterceptor();
		// 设置拦截的参数,该参数的值将作为国际化区域(语言)
		localeChangeInterceptor.setParamName("language");
		return localeChangeInterceptor;
	}
	// 注册国际化拦截器
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(initLocaleChangeInterceptor());
	}
}

2.国际化的springboot配置

  • spring.messages.basename:配置国际化文件的路径和文件名前缀。如下面的配置说明时间文件放在src\main\resources\i18n内,且文件名前缀是international,前缀后加语言类型,如下面的文件名截图。springboot默认支持,如果不配置该选项,则文件放在src\main\resources内,且文件前缀是messages。
# 文件编码
spring.messages.encoding=UTF-8
# 国际化文件基础名称(resources目录下)
spring.messages.basename=i18n/international
# 国际化消息缓存有效时间(单位秒),超时将重新载入
spring.messages.cache-duration=3600

 

3.控制器

package com.zyf.springMVC.international;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/international")
public class InternationalController {
	@Autowired
	private MessageSource messageSource;
	@RequestMapping("/ic1")
	public ModelAndView ic1(ModelAndView mav,HttpServletRequest request) {
		Locale locale = LocaleContextHolder.getLocale();
		System.out.println("国际化区域=" + locale);
		String msg = messageSource.getMessage("msg", null, locale);
		System.out.println("消息=" + msg);
		mav.addObject("msg", msg);
		mav.addObject("language", locale);
		mav.setViewName("international/ic1");
		return mav;
	}
}

4.视图

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>mic1</title>
</head>
<body>
	<span>当前语言:</span><span th:text="${language}"></span></br>
	<!-- language参数对应值将后台拦截,并存放到session中 -->
	<a href="./ic1?language=zh_CN">简体中文</a> <a href="./ic1?language=en_US">ENGLISH</a></br>
	<span>消息:</span><span th:text="${msg}"></span></br>
</body>
</html>

5.测试

http://localhost:8080/international/ic1

点击ENGLISH

注意到请求URL中,带有参数。该参数将会保存到session中。我们再次用http://localhost:8080/international/ic1访问,不包含语言参数。结果如下:

点击简体中文,可以将设定为中文,同样语言参数会被保存的session中,继续使用,直到改变语言。这都归功于国际化拦截器对参数language的拦截。

 

github:https://github.com/zhangyangfei/SpringBootLearn.git中的springMVC工程。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
springboot:是一个基于Java开发的框架,简化了Spring应用的初始化配置和部署过程。它提供了一套开发规范和约定,帮助开发人员快速搭建高效稳定的应用程序。 mybatis-plus:是基于MyBatis的增强工具,提供了一些便捷的CRUD操作方法和代码生成功能,简化了数据库操作的开发工作。它能够轻松集成到SpringBoot应用中,提高开发效率。 springmvc:是一种基于MVC设计模式的Web框架,用于构建Web应用程序。它能够从URL中解析请求参数,并将请求分发给对应的Controller进行处理。SpringMVC提供了一套灵活的配置和注解方式,支持RESTful风格的API开发。 shiro:是一种用于身份验证和授权的框架,可以集成到SpringBoot应用中。它提供了一套简单易用的API,可以处理用户认证、角色授权、会话管理等安全相关的功能。Shiro还支持集成其他认证方式,如LDAP、OAuth等。 redis:是一种开源的内存数据库,采用键值对存储数据。Redis具有高性能、高并发和持久化等特点,常用于缓存、消息队列和分布式锁等场景。在企业级报表后台管理系统中,可以使用Redis来进行缓存数据,提高系统的响应速度和性能。 企业级报表后台管理系统:是一种用于统一管理和生成报表的系统。它通常包括用户权限管理、报表设计、报表生成、数据分析等功能。使用SpringBoot、MyBatis-Plus、SpringMVC、Shiro和Redis等技术,可以快速搭建一个可靠、高效的报表管理系统,满足企业对数据分析和决策的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值