• 项目实战:修改水果库存系统特定库存记录


    1、在edit.html修改库存页面添加点击事件

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <link rel="stylesheet" href="style/index.css">
    7. <script src="script/axios.min.js">script>
    8. <script src="script/edit.js">script>
    9. <script src="script/common.js">script>
    10. head>
    11. <body>
    12. <div id="div0">
    13. <div id="div_title">
    14. <p>编辑水果库存信息p>
    15. div>
    16. <div id="div_fruit_table">
    17. <input type="hidden" id="fid" value="0"/>
    18. <table id="fruit_tbl">
    19. <tr>
    20. <th class="w25">名称:th>
    21. <td><input type="text" id="fname"/>td>
    22. tr>
    23. <tr>
    24. <th class="w25">单价:th>
    25. <td><input type="text" name="price" id="price"/> td>
    26. tr>
    27. <tr>
    28. <th class="w25">库存:th>
    29. <td><input type="text" name="fcount" id="fcount"/> td>
    30. tr>
    31. <tr>
    32. <th class="w25">备注:th>
    33. <td><input type="text" name="remark" id="remark"/> td>
    34. tr>
    35. <tr>
    36. <th colspan="2">
    37. <input type="button" value="修改" onclick="update()"/>
    38. <input type="button" value="取消"/>
    39. th>
    40. tr>
    41. table>
    42. div>
    43. div>
    44. body>
    45. html>

    2、在edit.js中添加update = function ( ) { } 功能

    2.1、common.js

    1. function $(key){
    2. if(key){
    3. if(key.startsWith("#")){
    4. key = key.substring(1)
    5. return document.getElementById(key)
    6. }else{
    7. let nodeList = document.getElementsByName(key)
    8. return Array.from(nodeList)
    9. }
    10. }
    11. }

    2.2、edit.js 

    1. let queryString = window.location.search.substring(1)
    2. if(queryString){
    3. var fid = queryString.split("=")[1]
    4. window.onload=function(){
    5. loadFruit(fid)
    6. }
    7. loadFruit = function(fid){
    8. axios({
    9. method:'get',
    10. url:'edit',
    11. params:{
    12. fid:fid
    13. }
    14. }).then(response=>{
    15. debugger
    16. let fruit = response.data.data
    17. $("#fid").value=fruit.fid
    18. $("#fname").value=fruit.fname
    19. $("#price").value=fruit.price
    20. $("#fcount").value=fruit.fcount
    21. $("#remark").value=fruit.remark
    22. })
    23. }
    24. update=function(){
    25. let fid = $("#fid").value
    26. let fname = $("#fname").value
    27. let price = $("#price").value
    28. let fcount = $("#fcount").value
    29. let remark = $("#remark").value
    30. axios({
    31. method:'post',
    32. url:"update",
    33. data:{
    34. fid:fid,
    35. fname:fname,
    36. price:price,
    37. fcount:fcount,
    38. remark:remark
    39. }
    40. }).then(response=>{
    41. if(response.data.flag){
    42. window.location.href="index.html"
    43. }
    44. })
    45. }
    46. }

    3、封装读取json字符串方法创建RequestUtil工具类

    1. package com.csdn.fruit.util;
    2. import jakarta.servlet.ServletRequest;
    3. import java.io.BufferedReader;
    4. import java.io.IOException;
    5. public class RequestUtil {
    6. public static Object readObject(ServletRequest request, Class clazz) throws IOException {
    7. BufferedReader br = request.getReader();
    8. StringBuilder stringBuilder = new StringBuilder();
    9. String str = null;
    10. while ((str = br.readLine()) != null) {
    11. stringBuilder.append(str);
    12. }
    13. str = stringBuilder.toString();
    14. return GsonUtil.fromJson(str, clazz);
    15. }
    16. }

    4、修改FruitDaoImpl类中的updateFruit方法中sql语句

    • 因为之前写的是只能通过 fname 修改 fcount
    • 现在想要通过 fid 可以修改所有的属性值,所以需要修改sql语句
    1. package com.csdn.fruit.dao.impl;
    2. import com.csdn.fruit.dao.FruitDao;
    3. import com.csdn.fruit.pojo.Fruit;
    4. import com.csdn.mymvc.dao.BaseDao;
    5. import java.util.List;
    6. public class FruitDaoImpl extends BaseDao implements FruitDao {
    7. @Override
    8. public void addFruit(Fruit fruit) {
    9. String sql = "insert into t_fruit values (0,?,?,?,?)";
    10. super.executeUpdate(sql, fruit.getFname(), fruit.getPrice(), fruit.getFcount(), fruit.getRemark());
    11. }
    12. @Override
    13. public void delFruit(String fname) {
    14. String sql = "delete from t_fruit where fname=?";
    15. super.executeUpdate(sql, fname);
    16. }
    17. //通过 fid 可以修改所有的属性值
    18. @Override
    19. public void updateFruit(Fruit fruit) {
    20. String sql = "update t_fruit set fname=?,price=?,fcount=?,remark=? where fid = ?";
    21. super.executeUpdate(sql, fruit.getFname(), fruit.getPrice(), fruit.getFcount(), fruit.getRemark(), fruit.getFid());
    22. }
    23. @Override
    24. public List getFruitList() {
    25. return super.executeQuery("select * from t_fruit");
    26. }
    27. @Override
    28. public Fruit getFruitByFname(String fname) {
    29. return load("select * from t_fruit where fname = ?", fname);
    30. }
    31. @Override
    32. public Fruit getFruitByFid(Integer fid) {
    33. return load("select * from t_fruit where fid=?", fid);
    34. }
    35. }

    5、编写Controller层UpdateServlet

    1. package com.csdn.fruit.servlet;
    2. import com.csdn.fruit.dao.FruitDao;
    3. import com.csdn.fruit.dao.impl.FruitDaoImpl;
    4. import com.csdn.fruit.dto.Result;
    5. import com.csdn.fruit.pojo.Fruit;
    6. import com.csdn.fruit.util.RequestUtil;
    7. import com.csdn.fruit.util.ResponseUtil;
    8. import jakarta.servlet.ServletException;
    9. import jakarta.servlet.annotation.WebServlet;
    10. import jakarta.servlet.http.HttpServlet;
    11. import jakarta.servlet.http.HttpServletRequest;
    12. import jakarta.servlet.http.HttpServletResponse;
    13. import java.io.IOException;
    14. @WebServlet("/update")
    15. public class UpdateServlet extends HttpServlet {
    16. private FruitDao fruitDao = new FruitDaoImpl();
    17. @Override
    18. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    19. Fruit fruit = (Fruit) RequestUtil.readObject(req, Fruit.class);
    20. fruitDao.updateFruit(fruit);
    21. ResponseUtil.print(resp, Result.OK());
    22. }
    23. }

  • 相关阅读:
    沉睡者 - 分享IT网赚创业者几点经验
    初尝pinia,相比于vuex轻量、好用
    [附源码]SSM计算机毕业设计中医药系统论文2022JAVA
    JavaScript知识系列(5)每天10个小知识点
    一文了解解Git安装及使用
    Java面试题:通过实例说明工厂模式和抽象工厂模式的用法,以及它们在解耦中的作用
    linux上部署python环境
    【分布式云储存】高性能云存储MinIO简介与Docker部署集群
    用cpolar发布Ubuntu上的网页(1)
    一个基本的http客户端
  • 原文地址:https://blog.csdn.net/m0_65152767/article/details/134207337