SpringBoot 2.4.0——CURD项目
项目地址:码云链接
一、首页跳转配置
通过实现WebMvcConfigurer来扩展SpringMVC的功能。
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/index.html").setViewName("login");
registry.addViewController("/main.html").setViewName("dashboard");
}
}
二、国际化配置
1、编写国际化配置文件
指定国际化配置的基础名:login
spring.messages.basename=i18n.login
创建i18n文件,再创建login.properties文件,当创建login_en_US.properties后,springBoot会自动识别这是国际化配置文件,并生成Resource Bundle 'login’文件夹。
2、前端读取国际化配置文件
前端页面通过#{}
来读取国际化配置:
注意:
不带内容体的,要通过[ [ ] ]
来取值:
3、通过前端链接切换国际化配置
在连接中携带区域信息:
重写区域解析器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("_");
locale = new Locale(split[0],split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale
locale) {
}
}
将解析器注入到容器中:
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
}
注意:
这里解析器的方法名要和mvc自动配置类中的方法名相同,必须为localeResolver()
,这样相当于与原来解析器的id名相同,可以替换掉原来的解析器。
三、登录
1、登录controller
注:
- 1:向前端传递错误信息,如果msg不为空则显示
- 2:表单提交之后,登录成功时,通过重定向到达主页面,防止表单重复提交。
2、使开发时的模板引擎实时生效
(1) 禁用模板引擎的缓存
spring.thymeleaf.cache=false
(2)ctrl+F9
修改模板文件后,使用ctrl+F9,重新编译,无需再重启项目。
四、拦截器
(1)配置登录拦截器
实现HandlerInterceptor,来完成登录拦截器的配置。
(2)注册拦截器
注:
springBoot 2.xx后,配置拦截器时,静态资源也会被拦截,所以此处需要排除静态资源。
五、员工列表显示
(1)公共页面抽取
抽取公共片段,将其放入一个公共页面bar.html中。
(2)公共页面引入
传入的参数在公共页面中应用:此处用于判断文字是否高亮
(3)CRUD接口
通过使用不同的请求方式,来实现Restful风格的url.
(4) 访问员工列表
遍历emps,生成员工列表
六、添加员工列表
这里需要注意一下输入日期的格式:
在配置文件中配置输入的日期格式,springboot的默认日期格式是yyyy/MM/dd
spring.mvc.format.date=yyyy-MM-dd
提交表单后,进行员工的添加操作。
七、修改员工
注意此处,我们修改和添加都使用add.html页面
通过判断emp!=null来进行回显,下面是需要注意的点:
在修改表单时,我们使用put来进行提交表单。在提交时需要改变请求方法为put:
为此,我们需要定义一个隐藏表单:
<input type="hidden" name="_method" value="put" th:if="${emp!=null}" />
而在Springboot2.xx中,隐藏表单功能默认是不开启的,需要在配置文件中手动开启:
spring.mvc.hiddenmethod.filter.enabled=true
因为在修改表单进行提交时并未提交id,所以这里使用了隐藏表单来提交id。
提交表单,通过put的方式来到/emp:
注:
SpringMVC中更改请求方法的方式:
- SpringMVC中配置HiddenHttpMethodFilter;(SpringBoot已经配置了)
- 页面创建一个post表单
- 创建一个input项,
name="_method"
;值就是我们指定的请求方式
八、删除员工
通过th:attr自定义属性:th:attr="del_uri=@{/emp/}+${emp.id}"
$(this)
表示当前按钮,通过 $(this).attr("del_uri");
拿到当前按钮的属性值。
$("#deleteForm").attr("action",$(this).attr("del_uri")).submit();
通过attr来改变任意属性,将action的表单提交地址改为del_uri指定的地址。
提交表单,通过delete
的方式来到/emp/{id}
: