SpringBoot之RestfulCRUD

刚入门SpringBoot,通过一个入门案例来学习SpringBoot里的一些基础使用。

Restful风格的CRUD

项目目录如下,使用IDEA的Spring Initializr创建工程,只添加web模块
这里写图片描述
该项目使用的技术:
1、SpringBoot(web模块),默认自动配置
2、Thymeleaf模板引擎
3、Restful风格

该项目实现的功能:
1、静态资源访问
2、国际化
3、拦截器
3、登录
4、列表数据的增删查改

这里只记录一些重要的地方,一些简单的不做介绍

《本项目源码下载》

全局配置文件application.properties

#服务器端口
server.port=8088

#静态资源
#spring.resources.static-locations=classpath:/static/,classpath:/resources/,classpath:/webjars/

#指定国际化文件
spring.messages.basename=i18n.login

#开发时禁用thymeleaf缓存
spring.thymeleaf.cache=false

#日期格式化
spring.mvc.date-format=yyyy-MM-dd

自定义配置类:

// 加入自定义组件,扩展SpringMVC的功能
//@EnableWebMvc   // 如果在配置类上加上此注解,则SpringBoot对SpirngMvc的自动配置失效
@Configuration
public class MyMvcConfigurer implements WebMvcConfigurer {

    // 添加视图控制器,完成页面资源映射
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // 配置路径映射
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/index.html").setViewName("login");
        registry.addViewController("/login.html").setViewName("login");
        registry.addViewController("/main.html").setViewName("dashboard");
    }

    // 添加拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/", "/login.html", "/user/login");
    }

    // 加入国际化组件
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleResolver();
    }
}

Thymeleaf的使用

引入命名空间:

<html lang="en" xmlns:th="http://www.thymeleaf.org">

把需要渲染的模板放到/templates目录下,以html后缀命名,就会被自动渲染

由于页面的顶部栏和左侧栏是通用的,所以将其抽取出来放在bar.html中,然后使用Thymeleaf标签在相应位置引入即可

Restful风格的CRUD

URI: /资源名称/资源标识 HTTP请求方式区分对资源CRUD操作

Tables普通CRUD(uri来区分操作)RestfulCRUD
查询getEmpemp—GET
添加addEmp?xxxemp—POST
修改updateEmp?id=xx&xxx=xxxemp/{id}—PUT
删除deleteEmp?id=xemp/{id}—DELETE

本次实验的请求架构:

实验功能请求URI请求方式
查询所有员工empsGET
来到添加页面empGET
添加员工empPOST
来到修改页面(查出员工进行信息回显)emp/{id}GET
修改员工empPUT
删除员工emp/{id}DELETE

问题:由于普通的form表单只支持GET和POST方式,可以使用一种方式来解决这个问题
方法:
1、SpringMVC中配置HiddenHttpMethodFilter(SpringBoot自动配置好的)
2、页面创建一个post表单
3、创建一个input项,name=”_method”,值就是我们指定的请求方式

html

<form action="/emp" method="post">
    <!--发送put请求修改员工数据-->
    <!--
        1、SpringMVC中配置HiddenHttpMethodFilter(SpringBoot自动配置好的)
        2、页面创建一个post表单
        3、创建一个input项,name="_method",值就是我们指定的请求方式
    -->
    <input type="hidden" name="_method" value="put"/>
    ......
</form>

Controller

// 修改员工信息
@PutMapping("/emp")
public String edit(Employee employee){
    employeeDao.save(employee);
    return "redirect:/emps";
}
// 根据id查出员工信息,跳转到修改页面进行回显
@GetMapping("/emp/{id}")
public String toEditPage(@PathVariable("id")Integer id, Model model){
    // 根据id查出员工信息
    Employee employee = employeeDao.get(id);
    // 获取部门信息,用于页面回显
    Collection<Department> departments = departmentDao.getDepartments();
    model.addAttribute("deps", departments);
    model.addAttribute("emp", employee);
    return "emp/add";    // 这里addPage和editPage共同使用一个页面
}

其他的提交方式以此类推。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值