Spring + html 接口访问 回显 + table + table操作

html页面

<!DOCTYPE html>
<html>

<head>
</head>

<body class="hold-transition skin-purple sidebar-mini">
<div class="wrapper">
            <!-- 用户信息 -->
            <div class="box box-primary">
                <div class="box-header with-border">
                    <i class="fa fa-cube"></i>
                    <h3 class="box-title">用户信息</h3>
                </div>

                <div class="box-body">

                    <!-- 数据表格 -->
                    <div class="table-box">

                        <!--数据列表-->
                        <table id="myTable" class="table table-bordered table-striped table-hover dataTable">
                            <thead>
                            <tr>
                                <th class="">id</th>
                                <th class="">用户名称</th>
                                <th class="">邮箱</th>
                                <th class="">创建时间</th>
                                <th class="text-center">操作</th>
                            </tr>
                            </thead>
                            <tbody>
                            </tbody>
                        </table>
                        <!--数据列表/-->

                    </div>
                    <!-- 数据表格 /-->

                </div>
                <!-- /.box-body -->

            </div>
            <!-- 用户信息 /-->
</div>


<script src="/adminlte/plugins/jQuery/jquery-2.2.3.min.js"></script>
<script>

    var data = undefined;


    $.ajax({
        url: "/test/selectUserList",  // 请求的URL
        method: "GET",  // 请求的HTTP方法
        success: function(response) {  // 请求成功时的回调函数
            // 处理响应数据
            console.log(response);
            data = response;
            populateTable();

        },
        error: function(xhr, status, error) {  // 请求失败时的回调函数
            // 处理错误
            console.log(error);
        }
    });

    function populateTable() {
        var tableBody = $("#myTable tbody");

        // 遍历数组中的每个对象
        for (var i = 0; i < data.length; i++) {
            var rowData = data[i];

            // 创建新的表格行和单元格
            var newRow = $("<tr>");
            var idCell = $("<td>").text(rowData.id);
            var nameCell = $("<td>").text(rowData.userName);
            var emailCell = $("<td>").text(rowData.email);
            var createTimeCell = $("<td>").text(rowData.createTime);

            // 将单元格添加到行中
            newRow.append(idCell, nameCell,emailCell, createTimeCell);


            // 创建包含按钮的单元格
            var actionCell = $("<td>");

            // 创建按钮元素    
            var button = $("<button>").text("test")
                .addClass("btn bg-olive btn-xs")
                .click((function(rowData) {
                    return function() {
                        // location.href = "/admin/sysLogin";

                        $.ajax({
                            url: "/test/selectUserList",
                            type: "POST",
                            data: {
                                userName: rowData.userName
                            },
                            success: function (response) {
                                // 处理成功响应
                                console.log(response);
                                 $("#myTable tbody").empty(); //清空原有的历史数据
                                data = response;
                                populateTable();
                            },
                            error: function (xhr, status, error) {
                                // 处理错误响应
                                console.log(xhr, status, error);
                            }
                        });
                    }
                })(rowData));// 通过立即执行的函数将 rowData 传递给闭包保存

            // 添加按钮元素到单元格中
            actionCell.append(button);

            // 将操作列添加到行中
            newRow.append(actionCell);
            // 将行添加到表格体中
            tableBody.append(newRow);
        }
    }



</script>





</body>

</html>

创建按钮部分:使用一个闭包来保存每个循环迭代的 rowData 值。可以通过将 rowData 传递给一个立即执行的函数,该函数返回一个处理点击事件的回调函数来实现。这样,每个回调函数中的 rowData 变量都会被捕获并保存在封闭的作用域中。这样,每个按钮的点击事件将使用正确的数据进行 POST 请求。

后端接口:


@Controller
@RequestMapping("/test")
public class TestController {

    @Autowired
    private UserService userService;

   
    @ResponseBody
    @RequestMapping("/selectUserList")
    public List QueryUserList(User user){

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        List<User> userList = userService.selectUserList(user);
        for (User user1 : userList) {
            System.out.println(user1);
            Date createTime = user1.getCreateTime();
            if (createTime != null){
                String format = sdf.format(createTime);
                System.out.println(format);
            }
        }
        return userList;

    }


}

要实现Spring Boot Vue头像上传并回显,可以按照以下步骤进行操作。 1. 前端页面实现图片上传 在Vue组件中添加一个图片上传组件,使用element-ui的上传组件(el-upload)。具体代码如下: ```html <template> <el-upload class="avatar-uploader" action="/api/upload" :show-file-list="false" :on-success="handleSuccess" :before-upload="beforeUpload"> <img v-if="imageUrl" :src="imageUrl" class="avatar"> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> </template> <script> export default { data() { return { imageUrl: '' } }, methods: { beforeUpload(file) { // 限制文件类型和大小 const isJPG = file.type === 'image/jpeg' || file.type === 'image/png' if (!isJPG) { this.$message.error('上传头像图片只能是 JPG 或 PNG 格式!') return false } const isLt2M = file.size / 1024 / 1024 < 2 if (!isLt2M) { this.$message.error('上传头像图片大小不能超过 2MB!') return false } return true }, handleSuccess(response) { if (response.code === 200) { this.imageUrl = response.data this.$emit('update:avatar', response.data) // 通知父组件更新头像 } else { this.$message.error(response.msg) } } } } </script> <style scoped> .avatar-uploader { display: flex; align-items: center; justify-content: center; width: 120px; height: 120px; border-radius: 50%; overflow: hidden; background-color: #f5f5f5; } .avatar { width: 100%; height: 100%; object-fit: cover; } .avatar-uploader-icon { font-size: 28px; color: #8c939d; } </style> ``` 在上传图片前,使用beforeUpload方法对文件类型和大小进行限制。在上传成功后,将服务器返回的图片地址保存到imageUrl中,并通过$emit方法通知父组件更新头像。 2. 后端实现图片上传 在Spring Boot中实现文件上传需要使用MultipartFile类型接收前端传来的文件。具体代码如下: ```java @RestController @RequestMapping("/api") public class FileUploadController { @Value("${file.upload.path}") private String filePath; // 文件保存路径 @PostMapping("/upload") public Result upload(@RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return Result.fail("上传失败,请选择文件"); } String fileName = file.getOriginalFilename(); String suffix = fileName.substring(fileName.lastIndexOf(".")); String newFileName = UUID.randomUUID().toString() + suffix; File dest = new File(filePath + newFileName); try { file.transferTo(dest); return Result.success("上传成功", "/uploads/" + newFileName); } catch (IOException e) { e.printStackTrace(); } return Result.fail("上传失败"); } } ``` 在文件上传接口中,通过@Value注解从配置文件中读取文件保存路径,然后使用MultipartFile类型接收前端传来的文件。接收到文件后,使用UUID生成新的文件名,将文件保存到指定路径,并返回服务器存储的文件地址。 3. 更新用户头像 在Vue组件中,通过接收父组件传来的用户信息,将头像地址赋值给imageUrl。在头像上传成功后,通过$emit方法通知父组件更新头像。具体代码如下: ```html <template> <div> <avatar-upload :avatar="user.avatar" @update:avatar="updateAvatar"></avatar-upload> <el-button type="primary" @click="updateUser">更新用户信息</el-button> </div> </template> <script> import AvatarUpload from '@/components/AvatarUpload.vue' export default { components: { AvatarUpload }, props: { user: { type: Object, default: () => ({}) } }, data() { return { form: { id: '', username: '', password: '', nickname: '', avatar: '' } } }, created() { this.form = { ...this.user } }, methods: { updateAvatar(avatar) { this.form.avatar = avatar }, updateUser() { // 调用后端接口更新用户信息 } } } </script> ``` 在更新用户信息的方法中,调用后端接口将用户信息更新到数据库中。 ```java @RestController @RequestMapping("/api") public class UserController { @Autowired private UserService userService; @PostMapping("/updateUser") public Result updateUser(@RequestBody User user) { userService.updateUser(user); return Result.success("更新成功"); } } ``` 在UserService中实现更新用户信息的方法。 ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public void updateUser(User user) { userMapper.updateById(user); } } ``` 以上就是Spring Boot Vue头像上传并回显的实现方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值