前端发送请求,利用数据库查询并将查询结果显示在前端页面

这几天写javaweb的作品写的是在是头疼,搞了好久都没有搞明白利用数据库实现前端的增删改查是怎么搞出来的,后来经高人指点一二,终于是有了思路

主要思路

拿学生查询自己的信息来举例,可以分成一下几步来进行

  1. 在session中存储自己的登录信息,这个信息必须是唯一的,像学生就是存储学号
  2. 在后端获取session中存储的信息,我存的就是学号,根据学号查询学生的信息
  3. 连接数据库,开始查询,并将查询的结果返回一个结果集,这个结果集不能直接用,需要存到对象数组中
  4. 所以下一步就是将结果集存进对象数组中,这里推荐使用泛型
  5. 将这个数组发送到前端
  6. 利用js完成剩下的页面渲染

了解了基本思路之后,还有一点需要说一下,就是是axios,真的非常好用。

那么什么是axios呢?

Axios是一个基于promise的HTTP库,类似于jQuery的ajax,用于http请求。可以应用于浏览器端和node.js,既可以用于客户端,也可以用于node.js编写的服务端。
使用的时候直接引入这个行代码:

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

现在开始写代码:

登录过程:

在前端提交数据之后再后端判断登录的是时候加上

String userid = request.getParameter("userid");
String password = request.getParameter("pswd");//这两句代码是后端获取前端表单的值
session.setAttribute("user", userid);

第一个参数:存储时候的名称
第二个参数:从前端获取的登录信息,等会根据这个来查询数据库

发送请求查询信息

先给触发查询事件的盒子添加一个点击事件

<div id="collapseOne" class="collapse show" data-bs-parent="#accordion">
       <div class="card-body">
              <a class="sel" onclick="sel()">查询信息</a>
       </div>
</div>
<div class="mian">
这是要添加内容的盒子
</div>

<script>
    let mian = document.getElementsByClassName("mian")[0];
    function sel() {
        axios({
            method: "post",
            url: "http://localhost:8080/student/GetStudent"
        }).then(function (resp) {
            let a = resp.data;
            console.log(a)
            mian.innerHTML = `<table class="table table-hover">
            <tbody>
              <tr>
                <td>姓名:</td>
                <td>` + a[0].name + `</td>
              </tr>
              <tr>
                <td>学号:</td>
                <td>` + a[0].number + `</td>
              </tr>
              <tr>
                <td>性别:</td>
                <td>` + a[0].sex + `</td>
              </tr>
              <tr>
                <td>学院:</td>
                <td>` + a[0].college + `</td>
              </tr>
              <tr>
                <td>班级:</td>
                <td>` + a[0].classNum + `</td>
              </tr>
              <tr>
                <td>专业:</td>
                <td>` + a[0].magor + `</td>
              </tr>
              <tr>
                <td>出生日期:</td>
                <td>` + a[0].birthday + `</td>
              </tr>
              <tr>
                <td>入学时间:</td>
                <td>` + a[0].admissionTime + `</td>
              </tr>
              <tr>
                <td>电话号码:</td>
                <td>` + a[0].phone+ `</td>
              </tr>
            </tbody>
          </table>`
        })
    }
</script>

其中axios后面紧跟的括号中的代码就是向后端发送请求
method:定义了请求方式,是get请求还是post请求
url:是请求路径,这里写的是要使用的servlet的路径
(至于then(function (resp)之后的代码等下再做解释。)
这样请求就发送到后端了。

后端接受请求查询数据

请求发送过去之后,后端利用相应的servlet开始处理请求

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();//获取session
        String ud = String.valueOf(session.getAttribute("user"));//拿到session中存储的登录信息

        List<Student> list = new StudentList().Find1(ud);//这里是取得查询到的对象数组,是自己定义的一个方法,这里是用到了一个泛型
        request.setAttribute("stuInfor", list);
        System.out.println(request.getAttribute("stuInfor"));//这是我自己写的测试代码
        response.setContentType("text/json;charset=utf-8");
        String jsonString = JSON.toJSONString(list);
        response.getWriter().write(jsonString);//这三行是axios数据传回前端用的
        System.out.println(jsonString);

    }

要注意的是String jsonString = JSON.toJSONString(list):括号中是你要传递的数据
第三行代码得到数组对象的操作就是书写jdbc的几大步骤,当然mybatis更简单。
写到这一步时数据已经发送到前端了

现在就可以来讲一下前面没有将的then(function (resp)之后的代码的意思
这就是用来接收数据的,resp.data就是接受到的数据,现在就是用js 的方法将数据显示在页面上

有人说,用el表达式更简单,但是scrip中不能写el表达式,所以要把要添加的内容都老老实实的在引号中写出来,当然,如果不用axios的话,在body中就可以使用el表达式了,不用axios的时候每次请求都会重新刷新一次页面,比较影响性能。不过在实际写代码的过程还得看个人喜好。

  • 7
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要让前端发送请求后,后端能够接收并查询相关数据库,你可以按照以下步骤进行操作: 1. 在前端,使用 JavaScript 或其他适合的语言编写代码,通过 AJAX 或 Fetch API 发送 HTTP 请求到后端。你可以使用 `XMLHttpRequest` 对象或现代浏览器更常用的 `fetch` 函数来发送请求。 ```javascript fetch('/api/json_api.jsp', { method: 'POST', body: JSON.stringify(data), // 可选,如果需要发送数据到后端 headers: { 'Content-Type': 'application/json' // 根据实际情况设置请求头 } }) .then(response => response.json()) .then(data => { // 处理从后端返回的数据 }) .catch(error => { // 处理请求错误 }); ``` 2. 在后端,根据你的后端技术选择合适的框架或库,例如 Go 的标准库 `net/http`、Gin、Echo 等。在你的路由处理函数,根据请求路径和方法,编写相应的处理逻辑来接收请求。 ```go func ApiHandle(w http.ResponseWriter, r *http.Request) { // 处理请求逻辑 // 查询数据库 // ... // 将结果返回给前端 // ... } ``` 3. 在后端处理函数,根据你的需求连接数据库,并执行相应的查询操作。具体的数据库查询操作和语法将取决于你使用的数据库类型和相关库。 ```go func ApiHandle(w http.ResponseWriter, r *http.Request) { // 连接数据库 db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database") if err != nil { // 处理数据库连接错误 } defer db.Close() // 执行查询操作 rows, err := db.Query("SELECT * FROM table") if err != nil { // 处理查询错误 } defer rows.Close() // 处理查询结果 // ... } ``` 4. 在后端处理函数,将查询结果转换为适当的数据格式(例如 JSON),并通过 HTTP 响应将数据发送前端。 ```go func ApiHandle(w http.ResponseWriter, r *http.Request) { // ... // 将查询结果转换为适当的数据格式,例如 JSON result := []string{"data1", "data2"} // 设置响应头 w.Header().Set("Content-Type", "application/json") // 将数据写入响应体 json.NewEncoder(w).Encode(result) } ``` 这些是实现前端发送请求后,后端接收并查询相关数据库的基本步骤。根据你使用的具体技术和需求,可能会有一些细微的差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值