Springboot+Freemarker+Boostrap实现用户增删改查实战

说明

做java web用的2大模板语言分别是:thymeleaf和freemarker,thymeleaf前面已经用了很多了,所以今天用一下这个freemarker。

技术栈

  • springboot
  • mybatis-plus
  • freemarker
  • bootstrap

实现效果

在这里插入图片描述
在这里插入图片描述

主要代码

列表页

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8"/>
    <title>用户列表</title>

    <link rel="stylesheet" href="../static/css/bootstrap.min.css">
</head>
<body>

<div class="container">
    <h3>用户列表</h3>
    <div class="row">
        <div class="form-group">
            <form action="/users/list" method="get">
            <div class="col-sm-4">
                <input type="text" class="form-control" name = "s_username" id="s_username" placeholder="请输入用户名称">
            </div>
            <div class="col-sm-1">
                <button class="btn btn-primary" type="submit" id="search">
                    查询
                </button>
            </div>
            </form>
            <div class="col-sm-1"><button class="btn btn-success" onclick="add()">新增</button></div>

        </div>
    </div>

    <table class="table table-striped" style="margin-top: 10px;">
        <tr>
            <th>序号</th>
            <th>用户名</th>
            <th>邮箱</th>
            <th>姓名</th>
            <th>创建时间</th>
            <th>操作</th>
        </tr>
    <#--遍历用户列表-->
        <#if userList?? && (userList?size >0)>
            <#list userList as user>
            <tr>
                <td>${user_index +1}</td>
                <td>${user.username}</td>
                <td>${user.email}</td>
                <td>${user.truename}</td>
                <td>${(user.createTime?string("yyyy-MM-dd HH:mm:ss"))!}</td>
                <td>
                    <a class="btn btn-sm btn-warning" href="/users/edit/${user.id}">编辑</a>
                    <button class="btn btn-sm btn-danger" onclick="remove(${user.id})">删除</button>
                </td>
            </tr>
            </#list>
        <#else>
        <tr>
            <td colspan="6">无数据</td>
        </tr>
        </#if>
    </table>
</div>

<script src="../static/js/jquery.min.js"></script>
<script src="../static/js/bootstrap.min.js"></script>
<script src="../static/js/util.js"></script>

<script>
    function remove(id) {
        if (confirm("确定删除数据?")) {
            $.ajax({
                type: "POST",
                url: "${ctx.contextPath}remove/"+id,
                success: function (data) {
                    window.location.href="/users/list";
                },
                error: function (e) {
                    console.log("ERROR: ", e);
                }
            });
        }
    }

    function add() {
        window.location.href="/users/edit/0";
    }
</script>
</body>

</html>

修改页

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8"/>
    <title>修改用户</title>

    <link rel="stylesheet" href="/static/css/bootstrap.min.css">
</head>
<body>

<div class="container">

    <div class="row">
        <h3 style="text-align: center;">修改用户</h3>
        <form class="form-horizontal" action="/users/save" method="post">
            <div class="form-group">
                <label for="username" class="col-sm-4 control-label">用户名</label>
                <div class="col-sm-4">
                    <input type="text" class="form-control" id="username" name="username" value="${user.username!}">
                </div>
            </div>
            <div class="form-group">
                <label for="email" class="col-sm-4 control-label">邮箱</label>
                <div class="col-sm-4">
                    <input type="text" class="form-control" id="email" name="email" value="${user.email!}">
                </div>
            </div>
            <div class="form-group">
                <label for="truename" class="col-sm-4 control-label">姓名</label>
                <div class="col-sm-4">
                    <input type="text" class="form-control" id="truename" name="truename" value="${user.truename!}">
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-5 col-sm-8">
                    <button type="button" class="btn btn-default" onclick="cancel()">取消</button>
                    <button type="submit" class="btn btn-primary">提交</button>
                </div>
            </div>
        </form>
    </div>

</div>

<script src="/static/js/jquery.min.js"></script>
<script src="/static/js/bootstrap.min.js"></script>
<script src="/static/js/util.js"></script>

<script>

    function cancel() {
        window.location.href="/users/list";
    }
</script>
</body>

</html>

API和路由

@Controller
@RequestMapping("/users")
public class UsersController {
    @Autowired
    private UserService userService;

    @GetMapping("/list")
    public String list(Model model, @RequestParam(value = "s_username",required = false) String s_username){
        QueryWrapper<User> queryWrapper = null;
        if(!StringUtils.isEmpty(s_username)){
            queryWrapper = new QueryWrapper<>();
            queryWrapper.like("username", s_username);
        }
        List<User> userList = userService.list(queryWrapper);
        model.addAttribute("userList", userList);
        return "users";
    }

    @GetMapping("/edit/{id}")
    public String edit(@PathVariable Integer id, Model model){
        User user = userService.getById(id);
        if(user==null){
            user = new User();
        }

        model.addAttribute("user", user);
        return "userEdit";
    }

    @PostMapping("/remove/{id}")
    @ResponseBody
    public Result<String> remove(@PathVariable Integer id){
        userService.removeById(id);

        return ResultUtil.ok();
    }

    @PostMapping("save")
    public String save(User user){
        userService.saveOrUpdate(user);

        return "redirect:/users/list";
    }

}

获取源码

地址:https://gitee.com/indexman/freemarker_demo

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Spring Boot是一个基于Spring框架的快速开发脚手架,它可以帮助开发者更快速地构建独立可执行的、生产级的Spring应用程序。FreeMarker是一个模板引擎,它与Spring Boot的集成可以方便地生成动态HTML页面。Bootstrap是一个响应式的前端开发框架,它可以提供丰富的CSS样式和JavaScript组件,使得界面开发更加简洁美观。 在使用Spring Boot和FreeMarker搭建项目时,可以利用FreeMarker的模板引擎特性快速生成动态HTML页面,同时使用Bootstrap提供的样式和组件可以使得页面更加美观。在项目中,可以利用Spring Boot的注解驱动特性方便地开发后端业务逻辑,同时集成MySql数据库实现数据的持久化存储和管理。 通过Spring Boot的自动配置特性,我们可以使用简单的配置即可集成MySql数据库,通过JPA或MyBatis等持久化框架可以方便地实现对数据库的操作。在项目中,可以实现用户增删改查等功能,通过自定义的Controller接口可以响应前端的请求,并进行相应的数据处理和返回。 总而言之,使用Spring Boot、FreeMarker和Bootstrap搭建的项目可以快速实现Web应用的开发和管理。Spring Boot提供了丰富的特性和自动配置,使得项目开发更加简单高效;FreeMarker和Bootstrap相结合可以实现动态和美观的前端页面;而MySql数据库的集成则可以方便地实现数据的持久化存储和管理。这样的项目结构和技术栈可以在实际开发中提高开发效率,并且具备良好的扩展性和维护性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值