1.elementui+servlet+axios(学生管理系统CRUD)问题解决

发布时间:2024年01月18日
1.解决使用Gson解析日期格式化方法:
Gson gson =new GsonBuilder().setDateFormat("日期格式").create();
2.分页查询数据传入前端最优解决方法

使用map集合将总页数和查询数据,封装到map集合传入到前端,前端用resp.data.totalresp.data.list接收数据,total:查询的总页数,list:查询的总页数 ,前端elementui用分页组件将定义的当前页page和当前页显示的几行数据size显示传到服务器

eg:

@WebServlet("/PageServlet")
public class PageServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*将数据放入map集合中,传入到前端*/
        Map<String,Object> map = new HashMap<>();
        /*先获取前端的当前页和每页显示的行数*/
        int page = Integer.parseInt(request.getParameter("page"));
        int size = Integer.parseInt(request.getParameter("size"));

        StudentDao studentDao = new StudentDaoImpl();
        /*遍历数据拿到总条数(遍历所有数据有多少条数据就知道总共多少)*/
        int total = studentDao.findAllStudent().size();
//        将分装的数据,装到map集合中,发送到当前端
        List<Students> list = studentDao.findPageStudent(page, size);
//        将总条数和分页的数据传入到前端
        map.put("total", total);
        map.put("list",list);
//        创建GSon格式化时间日期
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
                /*将响应的数据以字符串形式发送到前端*/
        response.setContentType("text/html;charset=utf-8");
        System.out.println(gson.toJson(map));
        response.getWriter().print(gson.toJson(map));

    }
}

前端分页组件:将总条数total传入

    <!--分页组件
    :total:表示总记录数    :page-size:表示每页的记录数,默认10,layout: 布局分页组件显示项
  total:显示总记录数  prev:显示显示上一页   pager:显示页码  next:显示下一页   size:设置每页的记录数
jumper:跳页
    @current-change="currentPage ":当前页发送改变调用currentPage()(自定义方法),并且会将改变的页数传递给currentPage
    @size-change="changeSize":每页显示的记录数改变调用changeSize(),会将改变的size传递给长changeSize
-->
    <el-pagination :total="total" background-layout="total,prev,pager,next,sizes,jumper" @current-change="currentPage"
                   @size-change="changeSize"
    ></el-pagination>
3.(批量删除)删除通过前端组件数据表格上的<el-tabel>上的事件@select-all和事件@select获取全选数据和单选数据,将拿到的数据放在定义的数组中,通过删除时间将存放在数组里的数据对象遍历,拿到他的id值传入后端进行取出“,”获取
 /*批量删除学生,通过全选和选中某行的事件,完成单选删除和批量删除,获取选中的数据,赋值给selectRows[]*/
            selectAllStudent(all) {
                this.selectRows = all;
            },
            selectStudent(row) {
                this.selectRows = row;
            }
            ,
            /*删除学生,批量删除*/
            deleteStudents() {
                alert(this.selectRows)  
                //    判断是否已经选中元素,选中则发送请求
                if (this.selectRows.length > 0) {
                    /*提示一下是否需要删除*/
                    this.$confirm("确定要删除吗?").then(() => {
                        const ids = [];
                        //循环遍历这个数组"selectRows[]"存入的对象,获取到他的id值,将id传入到服务器
                        for (let i = 0; i < this.selectRows.length; i++) {
                            ids[i] = this.selectRows[i].id;
                        }
                        alert(ids)
                        /*this.selectRows装的对象,而后端接收的是一个id值,所以不行*/
                        axios.post("DelServlet", "ids=" + ids).then(resp => {
                            if (resp.data == "success") {
                                this.$notify({
                                    title: '删除学生',
                                    message: '删除成功',
                                    type: 'success',
                                    position: 'bottom-right'
                                });
                                /*删除完刷新页面*/
                                this.getStudents();
                            }
                        });


                    });
                } else {
                    this.$alert("请选择要删除的学生");
                }
4.单选删除

通过插槽的 #default="scope"获取单行选中的对象,通过scope.row.id获取id值

 <el-table-column label="操作">
            <!--通过插槽中的scope获取某个对象-->
            <template #default="scope">
                <!--size设置按钮大小-->
                <el-button type="success" size="small" @click="updateStu(scope)">编辑</el-button>
                <el-button type="danger" size="small" @click="delStudent(scope)">删除</el-button>
            </template>
        </el-table-column>
 //单选删除(编辑,操作)
            delStudent(scope) {
                //通过scope获取到这行中id的值
                var id = scope.row.id;
                alert(id)
                this.$confirm("确定删除学生吗?").then(() => {
                    axios.post("DelServlet", "ids=" + id).then(resp => {
                        if (resp.data == "success") {
                            this.$notify({
                                title: '删除学生',
                                message: '删除成功',
                                type: 'success',
                                position: 'bottom-right'
                            });
                            /*删除完刷新页面*/
                            this.getStudents();
                        }
                    });
                })

5.修改的回显数据也通过插槽进行获取

  //更新操作(回显数据)
            updateStu(scope) {
                this.update_flag = true;
                this.student = scope.row;
            },
6.模糊查询
@Override
    public List<Students> findLinkStudent(Students students) {
        String sql ="select * from t_student where sname like '%"+students.getSname()+"%'";
        return DBUtil.executeDQL(Students.class,sql);
    }


@WebServlet("/LinkServlet")
public class LinkServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        String sname = request.getParameter("sname");
        System.out.println(sname);
        StudentDao studentDao = new StudentDaoImpl();
        Students students = new Students();
        students.setSname(sname);

        List<Students> list = studentDao.findLinkStudent(students);
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
//        获取查询出来的总页数
        int total = studentDao.findLinkStudent(students).size();
        /*将数据封装到map集合中,将总页数和查询出来的数据发送到前端页面*/
        Map<String,Object> map = new HashMap<>();

        map.put("total",total);

        map.put("listData",list);



        response.getWriter().print(gson.toJson(map));

    }
}

文章来源:https://blog.csdn.net/m0_61588355/article/details/135661164
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。