学生管理系统VueAjax版本

news2025/2/22 12:26:38

学生管理系统VueAjax版本

使用Vue和Ajax对原有学生管理系统进行优化

1.准备工作

创建AjaxResult类,对Ajax回传的信息封装在对象中

package com.grg.Result;

/**
 * @Author Grg
 * @Date 2023/8/30 8:51
 * @PackageName:com.grg.Result
 * @ClassName: AjaxResult
 * @Description: 又是码代码的一天
 * @Version plus max 宇宙无敌终极版本
 */
public class AjaxResult {
    private Integer code;
    private String msg;
    private Object data;

    public static AjaxResult success() {
        return new AjaxResult(1, "成功", null);
    }

    public static AjaxResult success(Object data) {
        return new AjaxResult(1, "成功", data);
    }

    public static AjaxResult error() {
        return new AjaxResult(2, "失败", null);
    }

    public AjaxResult() {
    }

    public AjaxResult(Integer code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    @Override
    public String toString() {
        return "AjaxResult{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", data=" + data +
                '}';
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

JDBC工具类DAOUtil

package com.grg.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author Grg
 * @Date 2023/8/26 14:35
 * @PackageName:com.grg.util
 * @ClassName: DAOUtil
 * @Description: 又是码代码的一天
 * @Version plus max 宇宙无敌终极版本
 */
public class DAOUtil {
    //消除魔法值
    private static final String CLASSNAME = "com.mysql.cj.jdbc.Driver";
    private static final String URL = "jdbc:mysql:///jdbctest";
    private static final String USERNAME = "root";
    private static final String PASSWORDS = "123456";

    //加载驱动
    static {
        try {
            Class.forName(CLASSNAME);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    //建立连接
    public static Connection getConnection() throws Exception {
        return DriverManager.getConnection(URL, USERNAME, PASSWORDS);
    }


    //增删改
    public static int executeUpdate(String sql, Object... data) {
        Connection conn = null;
        try {
            conn = DAOUtil.getConnection();
            PreparedStatement ps = conn.prepareStatement(sql);

            for (int i = 0; i < data.length; i++) {
                ps.setObject(i + 1, data[i]);
            }

            return ps.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return 0;
    }

    //查
    public static List<Map<String, Object>> executeQuery(String sql, Object... arr) {

        List<Map<String, Object>> data = new ArrayList<>();
        Connection conn = null;
        try {
            conn = DAOUtil.getConnection();
            PreparedStatement ps = conn.prepareStatement(sql);
            for (int i = 0; i < arr.length; i++) {
                ps.setObject(i + 1, arr[i]);
            }
            ResultSet set = ps.executeQuery();
            int columnCount = set.getMetaData().getColumnCount();
            while (set.next()) {
                HashMap<String, Object> map = new HashMap<>();
                for (int i = 0; i < columnCount; i++) {
                    map.put(set.getMetaData().getColumnLabel(i + 1), set.getObject(i + 1));
                }
                data.add(map);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return data;
    }
}

pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>StudentVue</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>StudentVue Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.33</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>2.0.2</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>StudentVue</finalName>
  </build>
</project>

2.登录模块

登录页面(默认页面)index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css"
          integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <style>
        fieldset {
            margin: 100px auto;
            width: 500px;
        }
    </style>

</head>
<body>
<div id="app">
    <fieldset>
        <legend>登录</legend>
        <span class="label label-danger">{{msg}}</span>
        <div class="form-group">
            <label>UserName</label>
            <input class="form-control" placeholder="请输入账号" v-model="info.username">
        </div>
        <div class="form-group">
            <label>Password</label>
            <input type="password" class="form-control" placeholder="请输入密码" v-model="info.password">
        </div>
        <button type="submit" class="btn btn-danger btn-block" @click="login()">登录</button>
    </fieldset>
</div>

<script>
    var haha = new Vue({
        el: "#app",
        data: {
            info: {},
            msg: "",
        },
        methods: {
            login: function () {
                //数据校验
                //发送请求
                $.post("/day/emp/login", haha.info, function (backData) {
                    if (backData.code == 1) {
                        //跳转主界面
                        window.location.href = "/day/main.html"
                    } else {
                        //显示失败信息
                        haha.msg = "对不起账号或密码错误"
                    }
                })
            }
        }
    })
</script>
</body>
</html>

对/day/emp/login发送post请求,查询数据并且回传

EmpServlet类 拦截到/emp/*的请求并进行处理

创建dao层 EmpDAO类和EmpDAOImpl实现类 实现对数据库中数据进行账号密码验证

EmpDAO接口

public interface EmpDAO {
    List<Map<String,Object>> login(String username, String password);
}

EmpDAO实现类

public class EmpDAOImpl implements EmpDAO {
    @Override
    public List<Map<String, Object>> login(String username, String password) {
        String sql = "select * from login where username = ? and password = ? ";
        return DAOUtil.executeQuery(sql, username, password);
    }
}

EmpServlet类

package com.grg.servlet;

import com.alibaba.fastjson.JSON;
import com.grg.Result.AjaxResult;
import com.grg.dao.EmpDAO;
import com.grg.dao.impl.EmpDAOImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;

/**
 * @Author Grg
 * @Date 2023/8/30 8:49
 * @PackageName:com.grg.servlet
 * @ClassName: EmpServlet
 * @Description: 又是码代码的一天
 * @Version plus max 宇宙无敌终极版本
 */
@WebServlet("/emp/*")
public class EmpServlet extends HttpServlet {
    private EmpDAO empDAO = new EmpDAOImpl();

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //路径分发
        String uri = req.getRequestURI();
        String[] arr = uri.split("/");
        String s = arr[arr.length - 1];

        resp.setContentType("text/json;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        AjaxResult ajaxResult = null;

        if ("login".equals(s)) {
            ajaxResult = login(req, resp);
        }

        String s1 = JSON.toJSONString(ajaxResult);
        out.write(s1);
    }


    protected AjaxResult login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接收请求参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        //2.校验账号密码
        List<Map<String, Object>> data = empDAO.login(username, password);

        if (data.size() > 0) {
            return AjaxResult.success();
        }
        return AjaxResult.error();
    }
}

当账号密码错误时,响应 {“code”:2,“msg”:“失败”}

当账号密码正确时,进入main.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>信息管理系统</title>

    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css"
          integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">

    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <style>
        body {
            background: url('./img/reg_bg_min.jpg') no-repeat;
            background-size: 100% 100%;
        }

        a {
            text-decoration: none;
            color: white;
        }

        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
        }

        #header {
            background-color: #000000;
            /*color: #ffffff;*/
            padding: 10px;
            display: flex;
            justify-content: space-between;
        }

        #header h1, #header p {
            margin: 0;
        }

        #sidebar {
            /*background-color: #e1e1e1;*/
            width: 200px;
            height: 100vh;
            float: left;
        }

        #content {
            padding: 20px;
            margin-left: 200px;
        }

        #footer {
            /*background-color: #f5f5f5;*/
            padding: 10px;
            clear: both;
        }

        .menu-item {
            padding: 10px;
            margin-top: 10px;
        }

        .menu-item:hover {
            background-color: #d1d1d1;
        }

        #iframe-container {
            width: calc(100% - 20px);
            height: calc(100vh - 20px);
        }

        #iframe-content {
            width: 100%;
            height: 100%;
            border: none;
        }

    </style>
</head>
<body>
<div id="header">
    <!-- 学生管理系统的Logo和标题 -->
    <h1 style="color:white;">信息管理系统</h1>
    <!-- 用户信息和注销按钮 -->
    <p style="color:white;">当前登录用户:</p>

</div>
<div id="sidebar">
    <!-- 左侧菜单 -->
    <div class="menu-item">
        <a target="haha" href="/day/views/student/list.html">学生管理</a>
    </div>
    <div class="menu-item">
        <a target="haha" href="/teacher/show">教师管理</a>
    </div>
    <div class="menu-item">
        <a target="haha" href="/class/show">班级管理</a>
    </div>
    <div class="menu-item">
        <a target="haha" href="/views/emp/changepassword.jsp">修改密码</a>
    </div>
    <div class="menu-item">
        <a target="haha" href="/log">日志记录</a>
    </div>
    <div class="menu-item">
        <a href="/">注销</a>
    </div>
</div>
<div id="content">
    <div id="iframe-container">
        <iframe name="haha" src="" id="iframe-content"></iframe>
    </div>

</div>
<div id="footer">
    <!--     页面底部区域,可根据需求添加内容 -->
    <p style="color:white;">版权所有 &copy; 2023 学生管理系统</p>
</div>
</body>
</html>

3.学生管理

3.1查询学生

点击学生管理获取学生数据并且展示在页面上

<a target="haha" href="/day/views/student/list.html">学生管理</a>

创建list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css"
          integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>
<div id="app">
    <a href="/day/views/student/add.html" class="btn btn-success">添加学生</a>

    <table class="table table-bordered table-condensed table-striped">
        <tr>
            <th>编号</th>
            <th>姓名</th>
        </tr>

        <tr v-for="(s,i) in stuArr">
            <td>{{s.id}}</td>
            <td>{{s.name}}</td>
            <td>
                <button class="btn btn-danger" @click="delStu(s.id)">删除</button>
                <button class="btn btn-primary">修改</button>
            </td>
        </tr>

    </table>
</div>

<script>

    $.get("/day/stu/list", function (backData) {
        haha.stuArr = backData.data;
    })

    var haha = new Vue({
        el: "#app",
        data: {
            stuArr: []
        },
        methods: {
            delStu: function (a) {
                if (confirm("确定删除?")) {
                    $.get("/day10/stu/delete?id=" + a, function (backDate) {
                        if (backDate.code == 2) {
                            alert("删除失败")
                        } else {
                            window.location.reload();
                        }
                    })
                }
            }
        }
    });
</script>
</body>
</html>

进入页面后通过ajax获取学生数据,并把返回的数据存入haha.stuArr数组中

$.get("/day/stu/list", function (backData) {
        haha.stuArr = backData.data;
    })

/day/stu/list执行list函数

创建StudentServlet类、StudentDAO接口、StudentDAOImpl实现类

StudentDAO接口

public interface StudentDAO {
    public List<Map<String, Object>> listAllStudent();

    public int deleteStudentById(String id);
}

StudentDAOImpl实现类

public class StudentDAOImpl implements StudentDAO {
    @Override
    public List<Map<String, Object>> listAllStudent() {
        String sql = "select s.id,s.name from student s";
        return DAOUtil.executeQuery(sql);
    }

    @Override
    public int deleteStudentById(String id) {
        String sql = "delete from student where id = ? ";
        return DAOUtil.executeUpdate(sql, id);
    }
}

StudentServlet类

package com.grg.servlet;

import com.alibaba.fastjson.JSON;
import com.grg.Result.AjaxResult;
import com.grg.dao.StudentDAO;
import com.grg.dao.impl.StudentDAOImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;

/**
 * @Author Grg
 * @Date 2023/8/30 8:49
 * @PackageName:com.grg.servlet
 * @ClassName: StudentServlet
 * @Description: 又是码代码的一天
 * @Version plus max 宇宙无敌终极版本
 */
@WebServlet("/stu/*")
public class StudentServlet extends HttpServlet {
    private StudentDAO studentDAO = new StudentDAOImpl();

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String uri = req.getRequestURI();
        String[] arr = uri.split("/");
        String s = arr[arr.length - 1];

        resp.setContentType("text/json;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        AjaxResult ajaxResult = null;

        if ("list".equals(s)) {
            ajaxResult = list(req, resp);
        } else if ("delete".equals(s)) {
            ajaxResult = delete(req, resp);
        }
        String s1 = JSON.toJSONString(ajaxResult);
        out.write(s1);
    }

    protected AjaxResult list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        List<Map<String, Object>> list = studentDAO.listAllStudent();
        return AjaxResult.success(list);
    }

    protected AjaxResult delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id = req.getParameter("id");
        int i = studentDAO.deleteStudentById(id);

        if (i > 0) {
            return AjaxResult.success();
        }
        return AjaxResult.error();
    }
}

3.2删除学生

点击删除按钮 执行点击事件函数delStu

在StudentServlet中执行删除

<button class="btn btn-danger" @click="delStu(s.id)">删除</button>
 methods: {
            delStu: function (a) {
                if (confirm("确定删除?")) {
                    $.get("/day/stu/delete?id=" + a, function (backDate) {
                        if (backDate.code == 2) {
                            alert("删除失败")
                        } else {
                            window.location.reload();
                        }
                    })
                }
            }
        }

3.3添加学生

<a href="/day/views/student/add.html" class="btn btn-success">添加学生</a>

add.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css"
          integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<style>
    fieldset {
        width: 500px;
        margin: 100px auto;
    }
</style>
<body>

<div id="app">
    <fieldset>
        <legend>添加学生
            <span class="label label-primary"></span>
        </legend>

        <div class="form-group">
            <label for="inputEmail3" class="col-sm-2 control-label">学生姓名</label>
            <div class="col-sm-10">
                <input name="name" v-model="stuInfo.name" type="text" class="form-control" id="inputEmail3"
                       placeholder="请输入学生姓名">
            </div>
        </div>
        <div class="form-group">
            <label for="inputPassword3" class="col-sm-2 control-label">学生年龄</label>
            <div class="col-sm-10">
                <input name="age" v-model="stuInfo.age" type="text" class="form-control" id="inputPassword3"
                       placeholder="请输入学生年龄">
            </div>
        </div>
        <div class="form-group">
            <label class="col-sm-2 control-label">学生住址</label>
            <div class="col-sm-10">
                <select name="address" v-model="stuInfo.address">
                    <option>北京</option>
                    <option>郑州</option>
                    <option>上海</option>
                </select>
            </div>
        </div>
        <div class="form-group">
            <label class="col-sm-2 control-label">学生班级</label>
            <div class="col-sm-10">
                <select name="address" v-model="stuInfo.gid">
                    <option value="1">一年级</option>
                    <option value="2">二年级</option>
                    <option value="3">三年级</option>
                </select>
            </div>
        </div>

        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <button type="submit" class="btn btn-default btn-success" @click="add()">添加</button>
            </div>
        </div>
    </fieldset>
</div>

<script>

    var haha = new Vue({
        el: "#app",
        data: {
            stuInfo: {},
        },
        methods: {
            add: function () {
                $.post("/day/stu/addStu", haha.stuInfo, function (backData) {
                })
            }
        }
    })
</script>
</body>
</html>

执行添加操作,在StudentServlet中执行addStu函数,并且编写DAO层相应添加函数

$.post("/day/stu/add", haha.stuInfo, function (backData) {
@Override
    public int addStu(Student student) {
        String sql = "insert into student values (null,?,?,?,?)";
        return DAOUtil.executeUpdate(sql,student.getName(),student.getAge(),student.getAddress(),student.getGid());
    }
protected AjaxResult addStu(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        String age = req.getParameter("age");
        String address = req.getParameter("address");
        String gid = req.getParameter("gid");

        Student student = new Student(name, age,address,Integer.parseInt(gid));
        int i = studentDAO.addStu(student);

        if (i > 0) {
            return AjaxResult.success();
        }
        return AjaxResult.error();
    }

3.4修改学生

点击修改按钮执行点击事件updateStu函数

<button class="btn btn-primary" @click="updateStu(s.id)">修改</button>
updateStu: function (a) {
                window.location.href = "/day/views/student/update.html?id=" + a;
            }

update.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css"
          integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<style>
    fieldset {
        width: 500px;
        margin: 100px auto;
    }

    .col-sm-10 {
        width: 85.333333%;
    }

    .btn-block {
        width: 63%;
    }
</style>
<body>
<div id="app">
    <fieldset>

        <legend>修改学生
            <span class="label label-primary">{{msg}}</span>
        </legend>

        <div>
            <label class="col-sm-2 control-label">姓名</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" v-model="stuInfo.name">

            </div>
        </div>

        <div>
            <label class="col-sm-2 control-label">年龄</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" v-model="stuInfo.age">
            </div>
        </div>

        <div>
            <label class="col-sm-2 control-label">住址</label>
            <div class="col-sm-10">
                <select name="address" v-model="stuInfo.address">
                    <option>北京</option>
                    <option>郑州</option>
                    <option>上海</option>
                </select>
            </div>
        </div>

        <div>
            <label class="col-sm-2 control-label">班级</label>
            <div class="col-sm-10">
                <select name="gid" v-model="stuInfo.gid">
                    <option value="1">一年级</option>
                    <option value="2">二年级</option>
                    <option value="3">三年级</option>
                </select>
            </div>
        </div>

        <div>
            <div class="col-sm-offset-2 col-sm-10">
                <button type="submit" class="btn btn-info btn-block" @click="update()">修改</button>
                <a href="/day/views/student/list.html" class="btn btn-info btn-block">返回</a>
            </div>
        </div>
    </fieldset>
</div>

<script>

    var id = window.location.href.split("=")[1];
    $.get("/day/stu/getStu?id=" + id, function (backData) {
        haha.stuInfo = backData.data;
    })

    var haha = new Vue({
        el: "#app",
        data: {
            stuInfo: {},
            msg:""
        },
        methods: {
            update: function () {
                $.post("/day/stu/updateStu",haha.stuInfo,function (backData) {
                    haha.msg = backData.msg;
                })
            }
        }
    })
</script>
</body>
</html>

先发送请求到getStu

protected AjaxResult getStu(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id = req.getParameter("id");
        List<Map<String, Object>> data = studentDAO.getStudentById(id);

        if (data.size() > 0) {
            return AjaxResult.success(data.get(0));
        } else {
            return AjaxResult.error();
        }
    }

点击修改按钮发送请求到updateStu

protected AjaxResult updateStu(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        String age = req.getParameter("age");
        String address = req.getParameter("address");
        String gid = req.getParameter("gid");
        String id = req.getParameter("id");

        Student student = new Student(Integer.parseInt(id), name, age, address, Integer.parseInt(gid));
        int i = studentDAO.updateStu(student);

        if (i > 0) {
            return AjaxResult.success();
        }
        return AjaxResult.error();

    }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/949773.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打造完美直播:深入解析人脸美颜SDK的算法与特性

在如今数字化的时代&#xff0c;直播已经成为了人们与世界互动的重要方式之一。而在众多直播平台中&#xff0c;吸引观众并提供高质量的视觉体验成为了至关重要的任务。其中&#xff0c;人脸美颜技术的应用对于提升直播质量和观众体验起到了不可忽视的作用。本文将深入解析人脸…

正中优配:h股是什么意思

跟着我国世界化程度的日益进步&#xff0c;越来越多的人开端瞩目“H股”&#xff0c;它到底是什么意思呢&#xff1f; H股&#xff08;H share&#xff09;是指在香港上市的我国企业股票&#xff0c;它是我国企业参与世界本钱商场的一种方法。在1990年代初期&#xff0c;我国为…

在CSDN的第128天:写博客是我对抗焦虑的工具

目录 机缘 收获 日常 成就 憧憬 致各位 机缘 机缘&#xff0c;我在CSDN应该有两个比较大的机缘 第一个机缘是在大一上的时候&#xff0c;加入了实验室的朋友们都在写博客&#xff0c;而我因为没加入实验室&#xff0c;一度非常焦虑。当时我很害怕&#xff0c;我害怕我自己…

月薪16K,从房地产转行5G网络优化工程师,他说:等风来,不如追风去!

杨绛先生曾说&#xff1a;“无论你上到人生的哪一层台阶&#xff0c;阶下有人仰望你&#xff0c;阶上有人俯视你&#xff0c;抬头自卑&#xff0c;低头自得&#xff1b;唯有平视&#xff0c;才能看见最真实的自己。” 李同学&#xff0c;湖北的某四线小城市&#xff0c;29岁&am…

【HSPCIE仿真】输入网表文件(5)基本仿真输出

仿真输出 1. 概述1.1 输出变量1.2 输出分析类型 2. 显示仿真结果2.1 .print语句基本语法示例 2.2 .probe 语句基本语法示例 2.3 子电路的输出2.4 打印控制选项.option probe.option post.option list.option ingold 2.5 .model_info打印模型参数 3. 仿真输出参数的选择3.1 直流…

如何跟进好客户,维护客户?

万事开头难&#xff0c;获取了客户资源后&#xff0c;必须进行有效的跟进和维护才有机会获得赢单。 客户跟进维护过程中的主要困境 基于以上困境&#xff0c;我向公司销售大佬取经&#xff0c;总结了以下几个适合销售小白的销售方法论&#xff1a; 本文所用工具&#xff1a;ht…

哈佛商学院教授:每个老板使用ChatGPT之类AI工具的理由

哈佛商学院教授Karim Lakhani表示&#xff0c;每个老板都应该使用生成式人工智能工具&#xff0c;生成式AI为老板提供了一种更高效的工作方式&#xff0c;在提高生产力、提高规模、与客户沟通以及促进销售、社交媒体内容更新和新产品开发等方面都有积极意义。 Karim Lakhani表…

分享一个影像切瓦片工具

当我们手上有很多无人机拍摄的影像&#xff0c;想切片后发布到内网可以用什么工具切片&#xff1f;亦或是自己制作的地图有没有什么工具可以切片后进行发布&#xff1f;想要解决这些问题&#xff0c;你可以好好看看这篇文章&#xff0c;本文将为你提供一种简单的切片方法&#…

信息安全——数字签名

一、数字签名背景 假定A发送一条包含认证码的消息给B&#xff0c;他们之间仍然可能存在争议&#xff0c;例如A可以否认发过该消息&#xff0c;B无法证明A确实发了该消息。另外B也可以伪造一个不同的消息&#xff0c;但声称是从A收到的。也就是说&#xff0c;虽然保证了信息的完…

WordPress(3)会员插件安装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、服务器中上传插件二、使用步骤1.启动插件前言 提示:会员插件的安装不能在网站后台插件中心中直接安装原因我还没有排查 原因:会导致网站停止运行 一、服务器中上传插件 二、使用步骤 …

java遇到java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver该如何解决

普通的Java项目&#xff0c;利用servlet实现登录页面跳转出现下列问题。该如何解决&#xff1f;&#xff1f;&#xff1f; 首先你要先加载驱动&#xff0c;idea通过项目结构添加的依赖包是无法正常加载驱动的。我们要在 WEB-INF目录下建立lib目录在lib目录下添加MySQL驱动。

如何利用人工智能实现软件测试的左移

在本文中&#xff0c;我们&#xff08;作者&#xff09;探讨了如何利用人工智能的力量&#xff0c;在软件测试领域实现左移。 用AI驱动的创新变革测试领域 测试在确保应用程序质量和可靠性方面发挥着至关重要的作用。然而&#xff0c;随着测试要求变得越来越复杂&#xff0c;人…

Linux 环境中通过 Docker 部署 Nacos 2.2.3 服务发现与配置中心

目录 环境准备Nacos 数据库创建Docker 部署 Nacos1. 创建挂载目录2. 下载镜像3. 创建和启动容器4. 访问控制台 导入 Nacos 配置SpringBoot 整合 Nacospom 依赖application.yml 配置 参考官方链接微服务商城源码 环境准备 名称版本IP端口Nacos2.2.3192.168.10.218848、9848MySQ…

大中型WMS仓储管理系统选型推荐,实现货品出入库精细化管理-亿发

智能制造是基于信息技术&#xff0c;通过将生产设备、工作流程、供应链等各个环节进行智能化互联&#xff0c;实现生产过程的优化和智能化管理的模式。它涵盖了数字化、网络化、智能化等多方面的科技&#xff0c;旨在增强生产效率、灵活度和质量。 WMS&#xff0c;即仓储管理系…

基于JAVA SpringBoot互联网就医门诊挂号管理系统

摘要 随着时代的发展,无线互联网技术的应用和普及给人们的生活带来了极大的改变,现在信息技术不仅可以提高我们的工作效率,还能有效的规避一些错误风险,节约人力成本。我国国民一方面对健康的要求越来越重视了&#xff0c;另一方面现代人的健康问题日益严重&#xff0c;所以医院…

【MySQL】4、MySQL备份与恢复

备份的主要目的是灾难恢复&#xff0c;备份还可以测试应用、回滚数据修改、查询历史数据、审计等 MySQL日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data #配置文件 vim /etc/my.cnf 日志的分类 常见日志有&#xff1a; 错误日志&#xff0c;一般查询日志&…

Git 中的 HEAD

1、Git HEAD 存放位置 HEAD 指的就是 .git/HEAD 文件&#xff0c;它存储着当前分支的名字&#xff0c;我们可以打这个文件看一看&#xff1a; ref: refs/heads/master由此&#xff0c;我们可以得知当前所处于 master 分支。 如果我们继续往下走&#xff1a;打开 refs/heads/…

1. Spatial Intelligence of a Self-driving Car and Rule-Based Decision Making

主要内容 本文主要介绍了一些基于规则的方法&#xff0c;以实现自动驾驶规划技术在复杂车流中取得人类驾驶效果。因此此类场景更适合城市NOA。 当然本文在城市道路&#xff0c;封闭区域道路以及城际高速都适宜。主要技术点 &#xff08;1&#xff09;本文把自车周围车辆的决策…

Metrics Server部署

Metrics Server简介 Metrics Server 是 Kubernetes 集群核心监控数据的聚合器&#xff08;定时从Kubelet的Summary API 采集指标信息&#xff09;&#xff0c;可以通过 Metrics API 的形式获取 Metrics 数据&#xff0c;不过仅仅是获取指标的最新值&#xff0c;数据不做存储&a…

让快更快,火山引擎ByteHouse为ClickHouse提速

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 近日&#xff0c;火山引擎数智平台VeDI与DataFun联合举办以“OLAP计算引擎”为主题的直播活动&#xff0c;来自火山引擎数智平台VeDI的产品专家从技术选型、能力分析…