SpringBoot 2.4.0——CURD项目

  • 一、首页跳转配置
  • 二、国际化配置
  • 1、编写国际化配置文件
  • 2、前端读取国际化配置文件
  • 3、通过前端链接切换国际化配置
  • 三、登录
  • 1、登录controller
  • 2、使开发时的模板引擎实时生效
  • 四、拦截器
  • 五、员工列表显示
  • 六、添加员工列表
  • 七、修改员工
  • 八、删除员工


一、首页跳转配置

通过实现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’文件夹。

springboot destroySingleton 不起作用 springboot curd_配置文件


springboot destroySingleton 不起作用 springboot curd_java_02

2、前端读取国际化配置文件

前端页面通过#{}来读取国际化配置:

springboot destroySingleton 不起作用 springboot curd_spring_03


注意:

不带内容体的,要通过[ [ ] ]来取值:

springboot destroySingleton 不起作用 springboot curd_配置文件_04

3、通过前端链接切换国际化配置

在连接中携带区域信息:

springboot destroySingleton 不起作用 springboot curd_spring boot_05


重写区域解析器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名相同,可以替换掉原来的解析器。

springboot destroySingleton 不起作用 springboot curd_spring boot_06

三、登录
1、登录controller

springboot destroySingleton 不起作用 springboot curd_html_07

注:

  • 1:向前端传递错误信息,如果msg不为空则显示

springboot destroySingleton 不起作用 springboot curd_spring_08

  • 2:表单提交之后,登录成功时,通过重定向到达主页面,防止表单重复提交。
2、使开发时的模板引擎实时生效

(1) 禁用模板引擎的缓存

spring.thymeleaf.cache=false

(2)ctrl+F9
修改模板文件后,使用ctrl+F9,重新编译,无需再重启项目。

四、拦截器

(1)配置登录拦截器

实现HandlerInterceptor,来完成登录拦截器的配置。

springboot destroySingleton 不起作用 springboot curd_spring_09


(2)注册拦截器

springboot destroySingleton 不起作用 springboot curd_spring_10


注:

springBoot 2.xx后,配置拦截器时,静态资源也会被拦截,所以此处需要排除静态资源。

五、员工列表显示

(1)公共页面抽取

抽取公共片段,将其放入一个公共页面bar.html中。

springboot destroySingleton 不起作用 springboot curd_配置文件_11


(2)公共页面引入

springboot destroySingleton 不起作用 springboot curd_java_12


传入的参数在公共页面中应用:此处用于判断文字是否高亮

springboot destroySingleton 不起作用 springboot curd_java_13


(3)CRUD接口

通过使用不同的请求方式,来实现Restful风格的url.

springboot destroySingleton 不起作用 springboot curd_配置文件_14


(4) 访问员工列表

springboot destroySingleton 不起作用 springboot curd_spring_15


遍历emps,生成员工列表

springboot destroySingleton 不起作用 springboot curd_spring boot_16

六、添加员工列表

springboot destroySingleton 不起作用 springboot curd_配置文件_17


这里需要注意一下输入日期的格式:

springboot destroySingleton 不起作用 springboot curd_配置文件_18


在配置文件中配置输入的日期格式,springboot的默认日期格式是yyyy/MM/dd

spring.mvc.format.date=yyyy-MM-dd

提交表单后,进行员工的添加操作。

springboot destroySingleton 不起作用 springboot curd_spring_19

七、修改员工

springboot destroySingleton 不起作用 springboot curd_spring_20


注意此处,我们修改和添加都使用add.html页面通过判断emp!=null来进行回显,下面是需要注意的点:

springboot destroySingleton 不起作用 springboot curd_java_21

在修改表单时,我们使用put来进行提交表单。在提交时需要改变请求方法为put:

springboot destroySingleton 不起作用 springboot curd_配置文件_22

为此,我们需要定义一个隐藏表单:

<input type="hidden" name="_method" value="put" th:if="${emp!=null}" />

而在Springboot2.xx中,隐藏表单功能默认是不开启的,需要在配置文件中手动开启:

spring.mvc.hiddenmethod.filter.enabled=true

因为在修改表单进行提交时并未提交id,所以这里使用了隐藏表单来提交id。

提交表单,通过put的方式来到/emp:

springboot destroySingleton 不起作用 springboot curd_spring boot_23

注:
SpringMVC中更改请求方法的方式:

  • SpringMVC中配置HiddenHttpMethodFilter;(SpringBoot已经配置了)
  • 页面创建一个post表单
  • 创建一个input项,name="_method";值就是我们指定的请求方式
八、删除员工

springboot destroySingleton 不起作用 springboot curd_spring_24

通过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}

springboot destroySingleton 不起作用 springboot curd_html_25