springmvc实现通过更改浏览器的首选语言来显示不同的语言。把登录页面提示信息进行国际化,并用cookie切换语言链接。给出切换语言的action和配置,请给出代码
时间: 2023-10-22 20:03:32 浏览: 35
好的,关于你提到的问题,属于技术问题,可以回答。以下是代码:
首先需要在Spring配置文件中配置LocalResolver和MessageSource:
```
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="zh_CN"/>
</bean>
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:i18n/messages</value>
</list>
</property>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
```
其中,CookieLocaleResolver为通过cookie来获取用户的语言选择,ReloadableResourceBundleMessageSource为国际化资源文件的位置和编码。
接着,在需要进行国际化的地方,可以通过以下方式获取国际化信息:
```
@Autowired
private MessageSource messageSource;
public String getMessage(String code, Object... args) {
return messageSource.getMessage(code, args, LocaleContextHolder.getLocale());
}
```
getMessage方法中,code为国际化文件中的key值,args为需要填充的参数,在国际化文件中,以占位符的形式表示。LocaleContextHolder.getLocale()为获取当前用户的语言选择。
对于切换语言的action,可以通过以下方式实现:
```
@RequestMapping(value = "/lang")
public String changeLang(String lang, HttpServletRequest request, HttpServletResponse response) {
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
if ("zh_CN".equals(lang)) {
localeResolver.setLocale(request, response, Locale.CHINA);
} else if ("en_US".equals(lang)) {
localeResolver.setLocale(request, response, Locale.US);
}
return "redirect:/index";
}
```
以上代码,通过获取参数中的lang值来设定用户的语言选择,并将选择信息保存在cookie中。最后将用户重定向到其他页面。
以上为代码实现的简单介绍,具体实现会根据具体项目需要进行调整和完善。