java 使用axios技术, 选择复选框蛋糕后,点击确定购买,可以将购买的蛋糕信息显示在网页下面, 并更新数据库剩余蛋糕信息
时间: 2023-06-12 16:04:29 浏览: 43
在Java中使用axios技术实现复选框蛋糕购买并更新数据库剩余蛋糕信息的具体步骤如下:
1. 在前端页面中,使用HTML和JavaScript创建复选框蛋糕列表,并使用axios库发送POST请求将选中的蛋糕信息发送到后端。
2. 在后端Java程序中,使用Spring框架创建控制器(Controller)接收前端页面发送的请求,并根据请求参数更新数据库中对应的蛋糕信息。
3. 在控制器中,使用Java Persistence API (JPA)访问数据库,并执行相应的更新操作。
4. 更新数据库中的蛋糕信息后,将更新后的蛋糕信息返回给前端页面,并使用JavaScript将信息显示在网页下方。
下面是一个简单的示例代码,用于演示如何在Java中使用axios技术实现复选框蛋糕购买并更新数据库剩余蛋糕信息:
前端页面代码:
```
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>
<body>
<h1>蛋糕购买列表</h1>
<div>
<input type="checkbox" id="cake1" name="cake1" value="1">
<label for="cake1">巧克力蛋糕</label>
</div>
<div>
<input type="checkbox" id="cake2" name="cake2" value="2">
<label for="cake2">草莓蛋糕</label>
</div>
<button onclick="buyCakes()">确定购买</button>
<h2>购买的蛋糕信息</h2>
<div id="cakeList"></div>
<script>
function buyCakes() {
var selectedCakes = [];
if (document.getElementById("cake1").checked) {
selectedCakes.push("巧克力蛋糕");
}
if (document.getElementById("cake2").checked) {
selectedCakes.push("草莓蛋糕");
}
axios.post('/buyCakes', {
cakes: selectedCakes
})
.then(function (response) {
var cakeList = document.getElementById("cakeList");
cakeList.innerHTML = "";
for (var i = 0; i < response.data.length; i++) {
var cake = response.data[i];
var cakeItem = document.createElement("div");
cakeItem.innerText = cake.name + "(剩余:" + cake.quantity + ")";
cakeList.appendChild(cakeItem);
}
})
.catch(function (error) {
console.log(error);
});
}
</script>
</body>
</html>
```
后端Java程序代码:
```
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.persistence.EntityManager;
import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.List;
@Controller
public class CakeController {
@Autowired
private EntityManager entityManager;
@PostMapping("/buyCakes")
@ResponseBody
@Transactional
public List<Cake> buyCakes(@RequestBody BuyCakesRequest request) {
List<Cake> cakes = new ArrayList<>();
for (String cakeName : request.getCakes()) {
Cake cake = entityManager.createQuery(
"SELECT c FROM Cake c WHERE c.name = :name", Cake.class)
.setParameter("name", cakeName)
.getSingleResult();
if (cake.getQuantity() > 0) {
cake.setQuantity(cake.getQuantity() - 1);
entityManager.persist(cake);
cakes.add(cake);
}
}
return cakes;
}
public static class BuyCakesRequest {
private List<String> cakes;
public List<String> getCakes() {
return cakes;
}
public void setCakes(List<String> cakes) {
this.cakes = cakes;
}
}
}
```
在上述代码中,`Cake`类表示蛋糕的信息,包括名称和剩余数量。`CakeController`类是控制器类,包含`buyCakes`方法用于处理购买蛋糕的请求。`BuyCakesRequest`类用于接收前端页面发送的请求参数。在`buyCakes`方法中,通过JPA访问数据库,查询蛋糕的信息并更新剩余数量,最后将更新后的蛋糕信息返回给前端页面。
注意,在实际应用中,需要根据具体的需求进行修改和优化。例如,为了防止并发访问导致数据不一致,可能需要使用数据库事务或者乐观锁等技术保证数据的一致性。