javaweb项目开发案例 java项目开发案例经典

spring.messages.basename=i18n.login
这样就相当于把国际化资源文件让SpringBoot配置的ResourceBundleMessageSource管理了起来2021新版IDEA修改全部默认配置中的文件编码模式,解决properties配置文件乱码问题

javaweb项目开发案例 java项目开发案例经典

文章插图
通过以上设置,我们根据浏览器语言的设置切换国际化,下面展示原理:
SpringMVC的自动配置中有默认的区域信息解析器===>国际化Locale(区域信息对象),LocaleResolver(获取区域信息对象)
javaweb项目开发案例 java项目开发案例经典

文章插图
点击链接实现国际化切换1.编写自己的区域信息解析器,并放到容器中自定义区域信息解析器:
/*
  • 可以携带区域信息
  • */
public class MyLocaleResolver implements LocaleResolver
{
@Override
public Locale resolveLocale(HttpServletRequest Request) {
String l=Request.getParameter(“l”);
Locale locale=Locale.getDefault();//Locale.getDefault()获取当前的语言环境—操作系统的语言环境
if(!StringUtils.isEmpty(l))
{
String[] s = l.split(“_”);
locale=new Locale(s[0],s[1]);//第一个参数是国家,第二个参数是语言
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
SpringMVC扩展类: 负责将自定义的组件加入到容器中
//使用WebMvcConfigurerAdapter可以来扩展SpringMvc的功能
@Configuration
public class myConfig extends WebMvcConfigurerAdapter
{
//所有的WebMvcConfigurerAdapter组件都会一起起作用
@Bean//将容器注册在容器中
public WebMvcConfigurerAdapter addViewControllers()
{
WebMvcConfigurerAdapter adapter=new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController(“/”).setViewName(“index”);
registry.addViewController(“/index.html”).setViewName(“index”);
}
};
return adapter;
}
@Bean
//在SpringMVC扩展类中,将刚才写的区域信息解析器放到容器中
public LocaleResolver localeResolver()
{
return new MyLocaleResolver();
}
}
效果展示:
javaweb项目开发案例 java项目开发案例经典

文章插图


javaweb项目开发案例 java项目开发案例经典

文章插图
登录模块
===================================================================
SpringMVC新特性支持的Rest风格的注解
@RestController注解@RestController等常见注解
@PostMapping, @GetMapping, @PutMapping, @DeleteMapping四个支持Rest风格的注解模板引擎页面修改后要时时生效==>禁用掉模板引擎的缓存+重新编译在全局配置文件中禁用掉模板引擎的缓存#禁用掉模板引擎的缓存,这样页面内容一修改,就可以看到修改后的效果
spring.thymeleaf.cache=false
IDEA在项目运行期间,不会让我们对页面的修改生效,如果想让我们对页面的修改时时生效,第一步禁用缓存,第二步按住ctrl+f9重新编译当前页面Thymeleaf 内置对象和内置方法
Thymeleaf 内置对象和内置方法
转发到某一页面导致的表单重复提交问题解决表单重复提交问题
登录成功后,要防止表单被重复提交,可以重定向到主页
javaweb项目开发案例 java项目开发案例经典

文章插图
拦截器进行登录检查,防止不经过登录直接来到某一页面SpringBoot已经做好了静态资源的映射1.自定义登录拦截器,通过获取session中存放的数据,来判断是否已经登录过public class LoginHanlderIntercept implements HandlerInterceptor

推荐阅读