spring.messages.basename=i18n.login

通过以上设置,我们根据浏览器语言的设置切换国际化,下面展示原理:

自定义区域信息解析器:
/*
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();
}
}
效果展示:


登录模块
===================================================================
SpringMVC新特性支持的Rest风格的注解
@RestController等常见注解
#禁用掉模板引擎的缓存,这样页面内容一修改,就可以看到修改后的效果
spring.thymeleaf.cache=false
Thymeleaf 内置对象和内置方法
Thymeleaf 内置对象和内置方法
解决表单重复提交问题
登录成功后,要防止表单被重复提交,可以重定向到主页

public class LoginHanlderIntercept implements HandlerInterceptor
{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object user=request.getSession().getAttribute(“loginUser”);
if(user==null)
{
//未登陆,返回登陆页面
request.setAttribute(“msg”,“没有权限请先登陆”);
request.getRequestDispatcher(“/index.html”).forward(request,response);
return false;
}
else
{
//已登陆,放行请求
return true;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//登陆后,将之前存储在session里面的登录凭证销毁,无论是否存在凭证,都执行销毁操作
request.getSession().removeAttribute(“loginUser”);
}
}
@Controller
public class LoginController
{
@PostMapping(“/user/login”)
public String Login(@RequestParam(“username”)String username,
@RequestParam(“password”)String password
, Map
{
if(username.equals(“大忽悠”)&&“123456”.equals(password))
{
session.setAttribute(“loginUser”,username);
//登录成功
return “redirect:/main.html”;
}
//登录失败
map.put(“msg”,“用户名或密码错误”);
return “index”;
}
}
//使用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”);
registry.addViewController(“/main.html”).setViewName(“success”);
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHanlderIntercept()).addPathPatterns(“/**”)//拦截任意多层路径下的所有请求
.excludePathPatterns(“/index.html”,”/”,”/user/login”);//某些请求不进行拦截
}
};
return adapter;
}
@Bean
//在SpringMVC扩展类中,将刚才写的区域信息解析器放到容器中
public LocaleResolver localeResolver()
{
return new MyLocaleResolver();
}
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//登陆后,将之前存储在session里面的登录凭证销毁,无论是否存在凭证,都执行销毁操作
request.getSession().removeAttribute(“loginUser”);
}
CRUD—员工列表




Thymeleaf 模板布局 th:fragment、th:replace、th:insert、th:remove
package com.czl.controller;
@Controller
public class HelloController {
/**
*/
@RequestMapping(“handle01”)
public String handle01(){
System.out.println(“handle01…”);
return “forward:/hello.jsp”;
}
@RequestMapping(“handle02”)
public String handle02(){
System.out.println(“handle02…”);
return “forward:/handle01”;
}
/**
*/
@RequestMapping(“handle03”)
public String handle03(){
System.out.println(“handle03…”);
return “redirect:/hello.jsp”;
}
@RequestMapping(“handle04”)
public String handle04(){
System.out.println(“handle04…”);
return “redirect:/handle03”;
}
}
SprinBoot中的日期格式化问题


spring.mvc.date-format=yyyy-MM-dd
${#dates.format(key)}
${#dates.format(key, ‘yyyy-MM-dd HH:mm:ss’)}
Thymeleaf 日期格式化处理

以上就是我服了网»javaweb项目开发案例(java项目开发案例经典)的相关内容了,更多精彩请关注作者:我服了号SEO专员