文章目录
SpringBoot-Web项目实例
1 项目结构
- 加入Dao层,和实体对象
- 加入静态资源css、img、js进入到静态资源包
- 将页面加入到
templates
包中,才能通过模板进行调用
在控制类中增加对登陆页面的访问,可以通过"","/login"
进行访问
@RequestMapping({
"","/login"})
public String index(){
return "login";
}
也可以自己实现SpringMVC配置,进行默认视图转发
@Configuration
//@EnableWebMvc
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//浏览器发送/ok 请求来到 /success
registry.addViewController("").setViewName("login");
}
}
2 [国际化]语言切换配置
- 编写国际化配置文件
从上到下分别是默认配置、英语和中文
将页面要显示的信息抽取配置
login.btn=登陆
login.password=密码-
login.remember=记住登陆信息-
login.tip=请登录!
login.username=用户名-
- 在SpringMVC中需要使用
ResourceBundleMessageSource
管理国际化资源文件。SpringBoot自动配置好了管理国家化资源的组件。
只需要在配置文件application.properties
加入配置即可
spring.messages.basename=i18n.login
- #{…}获取国际化信息
增加thymeleaf的提示信息
<html lang="en" xmlns:th="http://www.thymeleaf.org">
头部的地址进行替换
页面中的信息进行替换,替换成自己配置的信息。
修改完成后运行,修改浏览器的语言,页面刷新会更新语言
通过按钮切换信息
SpringBoot中WebMvcAutoConfiguration
通过localeResolver()
默认的区域信息请求器根据request
请求头获取语言信息。
@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(prefix = "spring.mvc", name = "locale")
public LocaleResolver localeResolver() {
if (this.mvcProperties.getLocaleResolver() == WebMvcProperties.LocaleResolver.FIXED) {
return new FixedLocaleResolver(this.mvcProperties.getLocale());
}
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(this.mvcProperties.getLocale());
return localeResolver;
}
- 首先修改html连接信息
再点击标签后会跳转到指定连接并且有指定信息
<a class="btn btn-sm" th:href="@{/login.html(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/login.html(l='en_US')}">English</a>
- 自己实现
LocalResolver()
方法
注意@Component("localeResolver")
对Bean对象进行命名,SpringBoot自动对该命名进行扫描,如果不是这个命名扫描不到
@Component("localeResolver")
public class MyLocaleResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
String l = request.getParameter("l");
//如果没有地域信息,使用默认
Locale locale = Locale.getDefault();//区域信息
if (!StringUtils.isEmpty("l")){
//非空
String[] split = l.split("_");
//获取语言信息,第一个语言第二个国家"zh_CN"
locale = new Locale(split[0],split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
}
}
3 登陆&拦截器
开发期间模版引擎页面修改以后,实时生效
- 禁用模版引擎缓存
#禁用缓存
spring.thymeleaf.cache=false
- 页面修改完
cmd+F9
,手动重新编译
登陆
- 登陆页面设置登陆form的连接
<form class="form-signin" action="dashboard.html" th:action="@{/user/login}" method="post">
- 声明
LoginController
对登陆进行控制
@Controller
public class LoginController {
//@RequestMapping(value = "/user/login",method = RequestMethod.POST)
//直接表示使用post请求,不需要在@RequestMapping中设置
@PostMapping(value = "/user/login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
Map<String, Object> map){
if (password.equals(username))
//登陆成功
return "dashboard";
else {
//登陆失败
map.put(